o que é o OWASP?
o Open Web Application Security Project, ou OWASP, é uma organização internacional sem fins lucrativos dedicada à segurança de aplicações web. Um dos princípios fundamentais da OWASP é que todos os seus materiais estejam disponíveis livremente e facilmente acessíveis em seu site, tornando possível para qualquer um melhorar a sua própria segurança de aplicações web. Os materiais que eles oferecem incluem documentação, Ferramentas, vídeos e fóruns. Talvez o seu projecto mais conhecido seja o OWASP Top 10.
Qual é o Top 10 OWASP?,
o OWASP Top 10 é um relatório regularmente atualizado descrevendo preocupações de segurança para a segurança de aplicações web, com foco nos 10 riscos mais críticos. O relatório é elaborado por uma equipa de peritos em segurança de todo o mundo. A OWASP se refere ao Top 10 como um “documento de conscientização” e eles recomendam que todas as empresas incorporem o relatório em seus processos, a fim de minimizar e/ou mitigar os riscos de segurança.
abaixo estão os riscos de segurança relatados no relatório OWASP Top 10 2017:
1., Injeção
ataques de injeção acontecem quando dados não confiáveis são enviados para um interpretador de código através de uma entrada de formulário ou algum outro envio de dados para uma aplicação web. Por exemplo, um atacante poderia introduzir o código de banco de dados SQL em um formulário que espera um nome de usuário de texto simples. Se essa entrada do formulário não for devidamente segura, isso resultaria em que o código SQL fosse executado. Isto é conhecido como um ataque de injeção SQL.os ataques de injecção podem ser evitados através da validação e/ou limpeza dos dados apresentados pelo utilizador., (Validação significa rejeitar dados suspeitos, enquanto a higienização se refere a limpar as partes suspeitas dos dados.) Além disso, um administrador de banco de dados pode definir controles para minimizar a quantidade de informação que um ataque de injeção pode expor.2. A autenticação quebrada
vulnerabilidades em sistemas de autenticação (login) pode dar aos atacantes acesso a contas de usuário e até mesmo a capacidade de comprometer um sistema inteiro usando uma conta de administração., Por exemplo, um atacante pode pegar uma lista contendo milhares de combinações conhecidas de username/senha obtidas durante uma quebra de dados e usar um script para tentar todas essas combinações em um sistema de login para ver se há alguma que funcione.
algumas estratégias para mitigar vulnerabilidades de autenticação estão exigindo autenticação de dois fatores (2FA), bem como limitar ou atrasar tentativas de login repetidas usando limitação de taxa.
3., Exposição de dados sensíveis
Se as aplicações web não protegem dados sensíveis, tais como informações financeiras e senhas, os atacantes podem obter acesso a esses dados e vendê-los para fins nefastos. Um método popular para roubar informações sensíveis é usar um ataque no caminho.
o risco de exposição de dados pode ser minimizado criptografando todos os dados sensíveis, bem como desativando o caching* de qualquer informação sensível. Além disso, os desenvolvedores de aplicações web devem ter o cuidado de garantir que eles não estão armazenando desnecessariamente quaisquer dados sensíveis.,
*Caching é a prática de armazenar temporariamente dados para reutilização. Por exemplo, navegadores web muitas vezes cache webpages de modo que se um usuário revisita thosepages dentro de um período de tempo fixo, o navegador não tem que obter as páginas da web.4. XML External Entities (XEE)
This is an attack against a web application that parses XML* input. Esta entrada pode referenciar uma entidade externa, tentando explorar uma vulnerabilidade no analisador. Uma “entidade externa” neste contexto refere-se a uma unidade de armazenamento, como um disco rígido., Um analisador XML pode ser enganado no envio de dados para uma entidade externa não autorizada, que pode passar dados sensíveis diretamente para um atacante.
As melhores maneiras de prevenir ataques XEE São ter aplicações web aceitar um tipo menos complexo de dados, como JSON**, ou, no mínimo, para corrigir analisadores de XML e desativar o uso de entidades externas em uma aplicação XML.
*XML ou Extensible Markup Language é uma linguagem de marcação destinada a ser tanto legível como legível por máquina. Devido à sua complexidade e vulnerabilidades de segurança, está agora a ser gradualmente retirado de uso em muitas aplicações web.,
*notação de objeto JavaScript (JSON) é um tipo de notação simples, legível pelo homem, muitas vezes usado para transmitir dados através da internet. Embora tenha sido originalmente criado para JavaScript, o JSON é agnóstico de linguagem e pode ser interpretado por muitas linguagens de programação diferentes.
5. Controlo de acesso quebrado
controlo de acesso refere-se a um sistema que controla o acesso à informação ou funcionalidade. Controles de acesso quebrados permitem aos atacantes contornar a autorização e executar tarefas como se fossem usuários privilegiados, como administradores., Por exemplo, uma aplicação web poderia permitir que um usuário alterasse a conta em que eles estão logados simplesmente alterando parte de uma url, sem qualquer outra verificação.os controlos de acesso podem ser assegurados através da garantia de que uma aplicação web utiliza fichas de autorização* e estabelece controlos rigorosos sobre as mesmas.
*muitos serviços emitem tokens de autorização quando os usuários fazem login. Cada pedido privilegiado que um usuário faça exigirá que o token de autorização esteja presente. Esta é uma forma segura de garantir que o Usuário é quem ele diz ser, sem ter que inserir constantemente suas credenciais de login.
6., Erro de configuração de segurança
erro de configuração de segurança é a vulnerabilidade mais comum na lista, e é muitas vezes o resultado do uso de configurações padrão ou exibindo erros excessivamente verbosos. Por exemplo, uma aplicação poderia mostrar um usuário erros excessivamente descritivos que podem revelar vulnerabilidades na aplicação. Isso pode ser mitigado através da remoção de quaisquer recursos não utilizados no código e garantindo que as mensagens de erro são mais gerais.
7., As vulnerabilidades de scripting de Cross-Site
Cross-site ocorrem quando as aplicações web permitem aos usuários adicionar código personalizado em um caminho de url ou em um site que será visto por outros usuários. Esta vulnerabilidade pode ser explorada para executar código de JavaScript malicioso no navegador de uma vítima. Por exemplo, um atacante pode enviar um e-mail para uma vítima que parece ser de um banco de confiança, com um link para o site desse banco. Este link pode ter algum código de JavaScript malicioso marcado no final do url., Se o site do banco não estiver devidamente protegido contra scripts de cross-site, então esse código malicioso será executado no navegador Web da vítima quando eles clicar no link.
estratégias de mitigação para scripting cross-site incluem escapar de solicitações HTTP não confiáveis, bem como validar e/ou sanitar o Conteúdo Gerado pelo Usuário. Usando frameworks modernos de desenvolvimento web como ReactJS e Ruby on Rails também fornece alguma proteção de scripts cross-site.
8. Deserialização insegura
esta ameaça atinge as muitas aplicações web que frequentemente serializam e deserializam dados., Serialização significa pegar objetos do Código da aplicação e convertê-los em um formato que pode ser usado para outra finalidade, como armazenar os dados para o disco ou streaming-lo. A deserialização é exatamente o oposto: converter dados serializados de volta em objetos que a aplicação pode usar. A serialização é uma espécie de empacotamento de móveis em caixas antes de um movimento, e a deserialização é como desempacotar as caixas e montar a mobília depois do movimento. Um ataque de deseralização inseguro é como ter os carregadores a mexer no conteúdo das Caixas antes de serem desempacotados.,
uma exploração de deserialização insegura é o resultado da deserialização de dados de fontes não confiáveis, e pode resultar em consequências graves como ataques DDoS e ataques de execução de código remoto. Enquanto podem ser tomadas medidas para tentar capturar atacantes, como monitorar a deseralização e implementar verificações de tipo, a única maneira segura de proteger contra ataques de deserialização inseguros é proibir a deserialização de dados de fontes não confiáveis.9., Usando componentes com vulnerabilidades conhecidas
muitos desenvolvedores web modernos usam componentes como bibliotecas e frameworks em suas aplicações web. Estes componentes são peças de software que ajudam os desenvolvedores a evitar o trabalho redundante e fornecer a funcionalidade necessária; exemplo comum incluem frameworks front-end como Reat e bibliotecas menores que costumavam adicionar ícones compartilhados ou testes a / B. Alguns atacantes procuram vulnerabilidades nestes componentes que podem então usar para orquestrar ataques., Alguns dos componentes mais populares são usados em centenas de milhares de sites; um atacante encontrando um buraco de segurança em um desses componentes pode deixar centenas de milhares de sites vulneráveis a explorar.os desenvolvedores de componentes
muitas vezes oferecem patches de segurança e atualizações para tapar vulnerabilidades conhecidas, mas os desenvolvedores de aplicações web nem sempre têm as versões remendadas ou mais recentes de componentes em execução em suas aplicações., Para minimizar o risco de execução de componentes com vulnerabilidades conhecidas, os desenvolvedores devem remover componentes não utilizados a partir de seus projetos, bem como garantir que eles estão recebendo componentes de uma fonte confiável e garantir que eles estão atualizados.
10. Registo e Monitorização insuficientes
muitas aplicações web não estão a tomar medidas suficientes para detectar violações dos dados. O tempo médio de descoberta de uma brecha é de cerca de 200 dias depois de ter acontecido. Isso dá aos atacantes muito tempo para causar danos antes de haver qualquer resposta., A OWASP recomenda que os desenvolvedores da web implementem logging e monitoramento, bem como planos de resposta a incidentes para garantir que eles sejam informados de ataques em suas aplicações.para uma análise mais técnica e aprofundada do Top 10 do OWASP, consulte o relatório oficial .