Baixe o app para aproveitar ainda mais
Prévia do material em texto
Segurança de aplicações Aula 7: As principais vulnerabilidades comuns da Open Web Application Security Project (OWASP): Injeção, Quebra de autenticação e Exposição de Dados Sensíveis e Entidades externas de XML, Quebra de controle de acessos e Con�gurações de Segurança Incorretase software cliente e Gerenciamento de correção de bugs e Documentação do software e da arquitetura Apresentação Desenvolver sistemas seguros é fundamental para evitar ataques de invasores que, muitas vezes, podem inviabilizar negócios e prejudicar muitos usuários com o roubo de dados. Muitas vulnerabilidades já são bem conhecidas e estão em domínio público. Uma das mais conhecidas é a lista das dez principais vulnerabilidades na web da OWASP. Essa lista é elaborada por especialistas em segurança. Trata-se de um documento que, além de listar as vulnerabilidades, apresenta exemplos e sugestões de como evitá-las. Nesse texto, serão apresentadas as vulnerabilidades Injeção, Quebra de autenticação e Exposição de Dados Sensíveis, Entidades externas de XML, Quebra de controle de acessos e Con�guração de Segurança incorretas. Objetivos Descrever Injeção, Quebra de autenticação e Exposição de Dados Sensíveis; Descrever Entidades externas de XML, Quebra de Controle de Acessos e Con�guração de Segurança Incorretas. Injeção, Quebra de autenticação e Exposição de Dados Sensíveis Existem muitos riscos bem conhecidos e de domínio público que são úteis como fontes de referências para que pesquisadores e desenvolvedores aprendam como identi�cá-los e evitar que estejam presentes nos sistemas. Uma das fontes mais conhecidas é o “Top 10 da OWASP” (OWASP Top Ten, 2020). Trata-se de um relatório que descreve os principais riscos de segurança de aplicativos da web. O foco do relatório está nas dez principais vulnerabilidades e é atualizado regularmente. Injeção O ataque de injeção de código ocorre quando o comportamento de uma aplicação é modi�cado a partir do envio de dados inválidos por parte de um invasor. Esse ataque é bastante conhecido em consultas de banco de dados, mas também pode ser encontrado na execução de comandos do sistema operacional, analisadores XML ou quando a entrada do usuário é enviada como argumentos do programa. Como a preocupação com segurança em sistemas é recente, essa vulnerabilidade é comum em sistemas legados, por exemplo (SVENSSON, 2016). No entanto, ela pode ser encontrada nos sistemas atuais. O tipo mais comum é a injeção de código SQL. Injeção, Quebra de autenticação e Exposição de Dados Sensíveis A vulnerabilidade de injeção de código ocorre, principalmente, quando não há validação dos dados usados pelo aplicativo Web. Portanto, qualquer aplicação que trabalhe com parâmetros como entrada está exposta a um ataque de injeção de código. Entre os perigos que essa vulnerabilidade oferece estão o roubo de dados, como nomes de usuários, senhas e outras informações con�denciais, até uma aquisição completa do sistema. Esse tipo de ataque pode ser automatizado; com isso, o atacante pode ampliar as possibilidades de vítimas e de exploração de vulnerabilidades. Um exemplo clássico de ataque de injeção é (SQL INJECTION, 2020): String consulta = "SELECT * FROM tabExemplo WHERE ID = '" + request.getParameter ("id") + "'"; No caso, o invasor pode alterar o valor do parâmetro 'id' para enviar um comando que sempre vai executar, como: https://example.com/app/tabelaVisao?id= ID = '5' OR '1'='1' Isso altera o signi�cado da consulta para retornar todos os registros da tabela tabExemplo. Entre os riscos relacionados a este tipo de ataque estão: Algumas ações podem ser feitas para evitar essa vulnerabilidade: Validar as entradas que são parâmetros para comandos SQL; Restringir o acesso às funções padrão e procedimentos armazenados do banco de dados. De um modo geral, ataques de injeção podem ser evitados através da validação e tratamento dos dados enviados pelo usuário. Quebra de autenticação Esse tipo de vulnerabilidade pode permitir que um invasor obtenha o controle parcial, ou mesmo completo, sobre o sistema da vítima. Ela está relacionada a problemas no mecanismo de autenticação da aplicação, como, por exemplo, um gerenciamento de sessões malfeito em que é possível fazer a enumeração de nomes de usuários até encontrar nomes válidos através do uso de técnicas de força bruta. As recomendações técnicas da OWASP para evitar essa vulnerabilidade são (BROKEN AUTHENTICATION, 2020): Usar a autenticação multifator; Não disponibilizar a aplicação com credenciais pré-de�nidas; Implementar veri�cações de palavras-chave fracas; Seguir as recomendações do guia NIST 800-63 B na secção 5.1.1 (GRASSI et al, 2017); Garantir resistência a ataques de enumeração de contas usando as mesmas mensagens para todos os resultados (sucesso/insucesso); Limitar o número máximo de tentativas de autenticação; Usar, no servidor, um gestor de sessões seguro que gere novos identi�cadores de sessão aleatórios. Atenção Além disso, os identi�cadores de sessão não devem constar na URL. Eles devem ser armazenados de forma segura e invalidados após o logout, por inatividade e ao �m de um período �xo. Exposição de Dados Sensíveis Clique no botão acima. Exposição de Dados Sensíveis Esse tipo de vulnerabilidade compromete os dados que deveriam estar protegidos, tais como números de cartão de crédito, de identidade e informações médicas, além de outras diversas informações de cunho pessoal e pro�ssional. Existem dois tipos de dados em um sistema: Armazenados e transmitidos. Ambos os tipos devem ser protegidos. Alguns dos problemas que podem acontecer quando dados con�denciais são expostos são (SENSITIVE DATA EXPOSURE, 2020): Exposição de dados em sistemas que usam criptogra�a automática de banco de dados, pois, quando esses dados são recuperados, são descriptografados automaticamente. Desse modo, um invasor pode tentar fazer um ataque de injeção SQL para obter esses dados; Ao usar sites não seguros, a vítima se expõe a um ataque em que um invasor pode monitorar o tráfego de rede e, em um dado momento, interceptar solicitações e roubar o cookie de sessão do usuário. Em seguida, o invasor pode usar esse mesmo cookie e sequestrar a sessão (autenticada) do usuário. Ou seja, o invasor assume a identidade do usuário; Uma das formas de armazenar senhas seguras é através de algoritmos de hash, em especial, os chamados de “hash com sal”, que signi�ca que uma string aleatória é concatenada (no pre�xo ou su�xo) da senha. Então, se o banco de dados de senhas usar hashs sem sal, uma falha de upload de um arquivo, por exemplo, permite que um invasor recupere o banco de dados de senhas. A OWASP sugere algumas formas de impedir a exposição de dados; entre elas, estão (SENSITIVE DATA EXPOSURE, 2020): Classi�car os dados em armazenados ou transmitidos; De acordo com as leis de privacidade, requisitos regulatórios e necessidades de negócios, identi�car os dados sensíveis; Aplicar mecanismos de controle de acordo com a classi�cação dos dados; Armazenar dados con�denciais apenas se for necessário; Criptografar todos os dados con�denciais armazenados; Fazer o gerenciamento de chaves de acesso aos sistemas; Usar protocolos seguros para criptografar dados transmitidos; Desativar o cache para respostas que contenham dados con�denciais; Armazenar senhas usando funções de hash com sal. Além dessas sugestões, é necessário aplicar testes exaustivos para veri�car a e�cácia das con�gurações. Essas vulnerabilidades são bem conhecidas e estão relacionadas, principalmente, à falta de treinamento dos desenvolvedores. Portanto, deve fazer parte do processo de desenvolvimento a aplicação de requisitos de segurança. Entidades externas de XML, Quebra de Controle de Acessos e Con�gurações de Segurança Incorretas Algumas das vulnerabilidades demandam conhecimento sobre aplicações de terceiros, como a con�guração de sistemas que se integram a aplicações desenvolvidas pela equipe de desenvolvimento. Portanto,sempre é necessário investir em treinamento para capacitar as equipes e evitar problemas que, na maioria, são bem conhecidos. Entidades Externas de XML Esse tipo de ataque é feito contra uma aplicação que analisa uma entrada XML que contém uma referência a uma entidade externa. A entrada é processada por um analisador XML mal con�gurado. Por padrão, a maioria dos analisadores XML é vulnerável a ataques de entidades externas de xml (SULLIVAN; MORGAN; IBRAHIM; STUTTARD, 2020). Portanto, cabe ao desenvolvedor a responsabilidade de garantir que o aplicativo não tenha essa vulnerabilidade. As principais formas de ataque das entidades externas XML incluem a exploração das vulnerabilidades de (XML EXTERNAL ENTITIES, 2020): Processadores XML; Código-fonte; Dependências; Integrações. Algumas das vulnerabilidades demandam conhecimento sobre aplicações de terceiros, como a con�guração de sistemas que se integram a aplicações desenvolvidas pela equipe de desenvolvimento. Portanto, sempre é necessário investir em treinamento para capacitar as equipes e evitar problemas que, na maioria, são bem conhecidos. Entidades Externas de XML Esse tipo de ataque é feito contra uma aplicação que analisa uma entrada XML que contém uma referência a uma entidade externa. A entrada é processada por um analisador XML mal con�gurado. Por padrão, a maioria dos analisadores XML é vulnerável a ataques de entidades externas de xml (SULLIVAN; MORGAN; IBRAHIM; STUTTARD, 2020). Portanto, cabe ao desenvolvedor a responsabilidade de garantir que o aplicativo não tenha essa vulnerabilidade. As principais formas de ataque das entidades externas XML incluem a exploração das vulnerabilidades de (XML EXTERNAL ENTITIES, 2020): Dica Esse ataque pode levar à divulgação de dados con�denciais, negação de serviço, falsi�cação de solicitação do servidor, varredura de portas na perspectiva da máquina em que o analisador está localizado e outros impactos no sistema (XML EXTERNAL ENTITIES, 2020). Quebra de Controle de Acessos Os ataques que exploram a vulnerabilidade de quebra de controle de acesso restringem a quantidade de seções ou páginas que os visitantes podem acessar. O controle de acesso é uma segmentação de responsabilidades em que administradores e os demais usuários devem ter direitos distintos sobre as funcionalidades e dados dos sistemas. No entanto, muitos sistemas não trabalham dessa forma, como, por exemplo, alguns dos principais sistemas de gerenciamento de conteúdo (JERKOVIC; SINKOVIC, 2017). Alguns exemplos que precisam de controle para acessar são: Servidores via FTP/SFTP/SSH; Painel administrativo de um site; Aplicativos do servidor; Bancos de dados. Os ataques desse tipo podem ter como objetivo: Acessar funcionalidades e dados não autorizados; Alterar direitos de acesso. Alguns exemplos dos problemas que podem acontecer são (BROKEN ACCESS CONTROL, 2020): Modi�car uma aplicação para deixar de fazer a veri�cação de dados. Desse modo, o invasor pode modi�car o comportamento da aplicação para facilitar seu ataque; Um invasor pode tentar modi�car a navegação de uma aplicação web para direcionar URLs. Exemplo Por exemplo, ao invés de usar o endereço https://example.com/app/getappInfo <https://example.com/app/getappInfo> para ter acesso a um serviço, o invasor acessa a URL https://example.com/app/admin_getappInfo <https://example.com/app/admin_getappInfo> que, se não tiver o devido tratamento, dá acesso a direitos de administrador. Para reduzir os riscos de quebra de controle de acesso, algumas das ações que devem ser tomadas são (BROKEN ACCESS CONTROL, 2020): O acesso padrão aos recursos deve ser restrito; Implementar mecanismos de controle de acesso uma única vez e reutilizá-los ao longo da aplicação; Con�gurar o controle de acesso de modo que seja associado ao per�l do pro�ssional; Os modelos de domínio devem garantir as regras de negócio das aplicações; Não permitir a listagem de diretórios no servidor e não expor metadados na raiz do servidor web, como, por exemplo, arquivos do tipo “.git”; Monitorar e registar falhas de controle de acesso e alertar os administradores sempre que necessário; Restringir o acesso às APIs (Interfaces de Programação das Aplicações) e a controladores; Invalidar JSON Web Tokens (JWT) após o logout; Incluir testes unitários e de integração para as funcionalidades de controle de acessos. A efetividade do controle depende da programação de código con�ável para que o invasor não possa modi�car os processos de validação do controle de acessos. Con�gurações de Segurança Incorretas Clique no botão acima. https://example.com/app/getappInfo https://example.com/app/admin_getappInfo Con�gurações de Segurança Incorretas A con�guração de segurança incorreta é uma vulnerabilidade muito comum. Isso ocorre por, pelo menos, dois motivos: Manutenção das con�gurações padrões das aplicações e falta de treinamento para fazer con�gurações que, às vezes, demandam muitos detalhes. Por se tratar de uma vulnerabilidade muito comum, ela pode ocorrer em diversas situações, como, por exemplo: Serviços de rede; Servidores web; Servidores de aplicação; Banco de dados; Máquinas virtuais pré-instaladas. Um importante exemplo de con�guração incorreta está nos servidores com cache de memória que podem ser sobrecarregados de modo a sofrer ataques de negação de serviços (RECOMENDAÇÕES PARA MELHORAR O CENÁRIO DE ATAQUES DISTRIBUÍDOS DE NEGAÇÃO DE SERVIÇO - DDoS, 2020). Exemplos de cenários de ataque de con�guração incorreta de segurança são (SECURITY MISCONFIGURATION, 2020): Alguns dos aplicativos com falhas de segurança já conhecidas - que já vêm instalados de forma padrão no servidor de aplicações - podem ser explorados por invasores; Caso a listagem dos diretórios não esteja desabilitada no servidor, um invasor pode explorar os códigos e programas através da aplicação de ferramentas de engenharia reversa; Mensagens de erro detalhadas podem ser emitidas por causa da con�guração do servidor de aplicativos. Desse modo, o invasor pode analisar as mensagens de erro e, a partir disso, explorar vulnerabilidades; As portas abertas na web de um provedor de serviços em nuvem, por exemplo, podem permitir que dados con�denciais armazenados sejam acessados no armazenamento em nuvem. Para evitar con�gurações incorretas de segurança, a OWASP sugere (SECURITY MISCONFIGURATION, 2020): Automatizar o processo de con�guração dos ambientes de desenvolvimento, homologação e produção. Todos devem ser con�gurados da mesma forma, mas as credenciais devem ser diferentes para cada ambiente; Garantir que estejam instaladas apenas as aplicações necessárias; Criar e aplicar um processo periódico de revisão e atualização das con�gurações de todas as aplicações instaladas. Em particular, revisar as permissões de armazenamento em nuvem; No desenvolvimento de sistemas, aplicar modelos de arquitetura que façam a separação segura entre componentes e responsabilidades. Além disso, também deve ser mantida a comunicação com os clientes, com recomendações de con�gurações seguras e a aplicação de testes automatizados para identi�car potenciais vulnerabilidades de con�guração insegura. As organizações precisam executar planos de treinamento para suas equipes de desenvolvimento, testes e manutenção para que estejam capacitados a utilizar os recursos e componentes próprios e de terceiros sem comprometer a segurança de seus sistemas e dados. Atividades 1. Quando o ataque de Injeção é bem-sucedido, ele compromete a segurança do sistema e a con�dencialidade dos dados. Selecione a opção correta de uma das principais vulnerabilidades exploradas por esse ataque: a)Desenvolvimento de Sistemas Web; b) Falta de validação das entradas dos sistemas; c) Arquitetura Cliente-Servidor; d) Aplicação de Código SQL nos sistemas cliente; e) Não utilizar sistemas antivírus. 2. Uma das vulnerabilidades mencionadas na lista da OWASP é a de Entidades Externas de XML. É uma vulnerabilidadeque demanda bastante atenção, pois muitas aplicações modernas fazem uso dela. Selecione a opção correta que apresenta como o invasor explora essa vulnerabilidade: a) Analisadores com má configuração fazem o processamento de entidades xml; b) Entidades xml são inseridas no código através da entrada de dados dos sistemas; c) Essa vulnerabilidade é característica exclusivamente de aplicações web; d) A principal dificuldade de detecção dessa vulnerabilidade é a falta de ferramentas de suporte; e) É uma vulnerabilidade que raramente ocorre. Ela está na lista como uma recomendação para o desenvolvedor. 3. Uma das vulnerabilidades mencionadas na lista da OWASP é a de Entidades Externas de XML. Selecione a opção correta que corresponde ao modo como é realizado o ataque de uma entidade externa: a) A partir de programas escritos na linguagem Java Script, que é o padrão de programação na web; b) O ataque ocorre através da inserção de código sql nas entradas escritas em html sem o devido tratamento; c) O ataque ocorre buscando dados da Internet; d) É feita uma busca dos dados internos da vítima; e) Esse ataque ocorre exclusivamente no lado do cliente. Notas CNE 1 Conselho Nacional de Educação. Título modal 1 Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Referências GRASSI, P. A. et al. Authentication and Lifecycle Management. NIST Special Publication 800-63B. June 2017. Disponível em: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63b.pdf <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63b.pdf> . Acesso em: 02 jul. 2020. JERKOVIC, H., SINKOVIC, B. Vulnerability Analysis of most Popular Open Source Content Management Systems with Focus on WordPress and Proposed Integration of Arti�cial Intelligence Cyber Security Features. International Journal of Economics and Management Systems, 2, 66-74, 2017. MORGAN, T.D.; IBRAHIM, O.A: XML Schema, DTD, and Entity Attacks. A Compendium of Known Techniques. Disponível em: https://www.vsecurity.com/download/papers/XMLDTDEntityAttacks.pdf <https://www.vsecurity.com/download/papers/XMLDTDEntityAttacks.pdf> . Acesso em: 02 jul. 2020. OWASP. Top Ten. Disponível em: https://owasp.org/www-project-top-ten/ <%20https://owasp.org/www-project-top-ten/> . Acesso em: 01 jul. 2020. OWASP. SQL Injection. Disponível em: https://owasp.org/www-community/attacks/SQL_Injection. Acesso em: 02 jul. 2020. OWASP. Broken Authentication. Disponível em: https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10- 2017_A2-Broken_Authentication.html <%20https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A2- Broken_Authentication.html> . Acesso em: 02 jul. 2020. https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63b.pdf https://www.vsecurity.com/download/papers/XMLDTDEntityAttacks.pdf https://stecine.azureedge.net/webaula/estacio/go0344/%20https://owasp.org/www-project-top-ten/ https://stecine.azureedge.net/webaula/estacio/go0344/%20https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A2-Broken_Authentication.html https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A3-Sensitive_Data_Exposure.html OWASP. Sensitive Data Exposure. Disponível em: https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10- 2017_A3-Sensitive_Data_Exposure.html <https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A3- Sensitive_Data_Exposure.html> . Acesso em: 02 jul. 2020. OWASP. XML External Entities. Disponível em: https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10- 2017_A4-XML_External_Entities_(XXE).html <%20https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10- 2017_A4-XML_External_Entities_(XXE).html> . Acesso em: 02 jul. 2020. OWASP. Broken Access Control. Disponível em: https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10- 2017_A5-Broken_Access_Control.html <https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A5- Broken_Access_Control.html> . Acesso em: 02 jul. 2020. OWASP. Security Miscon�guration. Disponível em: https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10- 2017_A6-Security_Miscon�guration.html <https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A6- Security_Miscon�guration.html> . Acesso em: 03 jul. 2020. STUTTARD, D. Burp Suite now reports blind XXE injection. Disponível em: https://blog.portswigger.net/2015/05/burp-suite- now-reports-blind-xxe.html <https://blog.portswigger.net/2015/05/burp-suite-now-reports-blind-xxe.html> . Acesso em: 02 jul. 2020. SULLIVAN, B. Security Briefs – XML Denial of Service Attacks and Defenses. Disponível em: https://msdn.microsoft.com/en- us/magazine/ee335713.aspx <https://msdn.microsoft.com/en-us/magazine/ee335713.aspx> . Acesso em: 02 jul. 2020. SVENSSON, R. From Hacking to Report Writing: An Introduction to Security and Penetration Testing. Apress, 1st edition, 2016. CERT.BR. Recomendações para Melhorar o Cenário de Ataques Distribuídos de Negação de Serviço (DDoS). Disponível em: https://www.cert.br/docs/whitepapers/ddos/ <https://www.cert.br/docs/whitepapers/ddos/> . Acesso em: 03 jul. 2020. Próxima aula Cross-site script e Desserialização insegura; Registro e monitorização insu�ciente. Explore mais Leia os textos: Leia o texto Os 10 principais da OWASP - https://www.owasp.org/index.php/OWASP_NN Top_Ten_Project https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A3-Sensitive_Data_Exposure.html https://stecine.azureedge.net/webaula/estacio/go0344/%20https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A4-XML_External_Entities_(XXE).html https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A5-Broken_Access_Control.html https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A6-Security_Misconfiguration.html https://blog.portswigger.net/2015/05/burp-suite-now-reports-blind-xxe.html https://msdn.microsoft.com/en-us/magazine/ee335713.aspx https://www.cert.br/docs/whitepapers/ddos/ https://www.owasp.org/index.php/OWASP_NN%20Top_Ten_Project <https://www.owasp.org/index.php/OWASP_NN%20Top_Ten_Project> Leia o texto Núcleo de Informação e Coordenação do Ponto BR - https://www.cert.br/ <https://www.cert.br/> Leia o texto XML Based Attacks - https://owasp.org/www-pdf-archive/XML_Based_Attacks_-_OWASP.pdf <https://owasp.org/www-pdf-archive/XML_Based_Attacks_-_OWASP.pdf> https://www.owasp.org/index.php/OWASP_NN%20Top_Ten_Project https://www.cert.br/ https://owasp.org/www-pdf-archive/XML_Based_Attacks_-_OWASP.pdf
Compartilhar