OWASP: A importância de garantir a segurança das aplicações web

Com o avanço da tecnologia e o aumento da utilização de dispositivos móveis e da internet, o número de aplicações web cresceu exponencialmente. No entanto, junto com esse crescimento, surgiram também os riscos e ameaças à segurança das aplicações. É aí que entra a OWASP.

A Open Web Application Security Project (OWASP) é uma comunidade global sem fins lucrativos que se dedica a melhorar a segurança do software.

A organização tem como objetivo fornecer recursos, ferramentas e orientações para garantir a segurança das aplicações web.

Para que serve OWASP?

A OWASP tem como objetivo ajudar as empresas a garantir a segurança de suas aplicações web. Sendo assim, a organização fornece recursos, ferramentas e orientações para ajudar os desenvolvedores a criar aplicações web mais seguras.

Os recursos fornecidos pela empresa incluem o Top 10 de Vulnerabilidades de Segurança de Aplicações Web.

Essa é uma lista das dez principais vulnerabilidades de segurança que as empresas devem estar cientes ao desenvolver suas aplicações web.

A organização também oferece uma ampla gama de ferramentas de segurança de software, como o OWASP ZAP (Zed Attack Proxy), que ajuda os desenvolvedores a encontrar e corrigir vulnerabilidades em suas aplicações web.

Além disso, a OWASP oferece treinamentos e workshops para ajudar os desenvolvedores a aprender mais sobre segurança de aplicações web e como criar aplicações web mais seguras.

OWASP Top 10 Vulnerabilidades

Então, quais são os 10 principais riscos de acordo com a OWASP? Dividimos cada item, seu nível de risco, como testá-los e como resolver cada um.

1- Injeção

A injeção ocorre quando um invasor explora código inseguro para inserir (ou injetar) seu próprio código em um programa.

Como o programa não consegue determinar o código inserido dessa maneira a partir de seu próprio código.

Desse modo, os invasores podem usar ataques de injeção para acessar áreas seguras e informações confidenciais como se fossem usuários confiáveis. Exemplos de injeção incluem injeções de SQL, injeções de comando, injeções de CRLF e injeções LDAP.

O teste de segurança de aplicativos pode revelar falhas de injeção e sugerir técnicas de correção, como remover caracteres especiais da entrada do usuário ou escrever consultas SQL parametrizadas.

2- Autenticação quebrada

A autenticação implementada incorretamente e as chamadas de gerenciamento de sessão podem representar um enorme risco de segurança.

Sendo assim, se os invasores perceberem essas vulnerabilidades, eles poderão assumir facilmente as identidades legítimas dos usuários.

A autenticação multifator é uma maneira de atenuar a autenticação quebrada. Implemente varreduras DAST e SCA para detectar e remover problemas com erros de implementação antes que o código seja implantado.

3- Exposição de dados confidenciais

As APIs, que permitem que os desenvolvedores conectem seus aplicativos a serviços de terceiros, como o Google Maps, economizam tempo.

No entanto, algumas APIs dependem de métodos de transmissão de dados inseguros. Sendo assim, os invasores podem explorar para obter acesso a nomes de usuário, senhas e outras informações confidenciais.

A criptografia de dados, a tokenização, o gerenciamento adequado de chaves e a desativação do cache de resposta podem ajudar a reduzir o risco de exposição de dados confidenciais.

4- XML Entidades Externas

Esse risco ocorre quando os invasores são capazes de carregar ou incluir conteúdo XML hostil devido a código, integrações ou dependências inseguras.

Uma verificação SCA pode encontrar riscos em componentes de terceiros com vulnerabilidades conhecidas e irá avisá-lo sobre eles.

Desabilitar o processamento de entidade externa XML também reduz a probabilidade de um ataque de entidade XML.

5- Controle de acesso quebrado

Se a autenticação e a restrição de acesso não forem implementadas corretamente, é fácil para os invasores levarem o que quiserem.

Com falhas de controle de acesso quebradas, usuários não autenticados ou não autorizados podem ter acesso a arquivos e sistemas confidenciais ou até mesmo a configurações de privilégio de usuário.

Erros de configuração e práticas de controle de acesso inseguras são difíceis de detectar. Afinal, os processos automatizados nem sempre podem testá-los.

O teste de penetração pode detectar autenticação ausente, mas outros métodos devem ser usados para determinar problemas de configuração.

Controles de acesso fracos e problemas com o gerenciamento de credenciais são evitáveis com práticas de codificação seguras, bem como medidas preventivas, como o bloqueio de contas e controles administrativos e o uso da autenticação multifator.

6- Configuração incorreta de segurança

Assim como os controles de acesso mal configurados, os erros de configuração de segurança mais gerais são riscos enormes que dão aos invasores acesso rápido e fácil a dados confidenciais e áreas do site.

O teste dinâmico pode ajudá-lo a descobrir a segurança mal configurada em seu aplicativo.

7- Scripts entre sites

Com o script entre sites, os invasores aproveitam as APIs e a manipulação do DOM para recuperar dados ou enviar comandos para seu aplicativo.

O script entre sites amplia a superfície de ataque para os agentes de ameaças. Desse modo, permitindo que eles sequestram contas de usuários, acessem históricos de navegadores, espalhem cavalos de Tróia e worms, controlem navegadores remotamente e muito mais.

Treinar desenvolvedores em práticas recomendadas, como codificação de dados e validação de entrada, reduz a probabilidade desse risco.

Sendo assim, limpe seus dados validando que é o conteúdo esperado para esse campo específico e codificando-o para o “ponto de extremidade” como uma camada extra de proteção.

8- Desserialização insegura

A desserialização, ou a recuperação de dados e objetos que foram gravados em discos ou salvos de outra forma, pode ser usada para executar remotamente o código em seu aplicativo ou como uma porta para novos ataques.

Sendo assim, o formato em que um objeto é serializado é texto estruturado ou binário por meio de sistemas de serialização comuns, como JSON e XML.

Essa falha ocorre quando um invasor usa dados não confiáveis para manipular um aplicativo, iniciar um ataque de negação de serviço (DoS) ou executar código imprevisível para alterar o comportamento do aplicativo.

Embora a desserialização seja difícil de explorar, o teste de penetração ou o uso de ferramentas de segurança de aplicativos podem reduzir ainda mais o risco.

Além disso, não aceite objetos serializados de fontes não confiáveis e não use métodos que permitem apenas tipos de dados primitivos.

9- Usando componentes com vulnerabilidades conhecidas

Não importa o quão seguro seja o seu próprio código, os invasores podem explorar APIs, dependências e outros componentes de terceiros se eles próprios não forem seguros.

Uma análise estática acompanhada por uma análise de composição de software pode localizar e ajudar a neutralizar componentes inseguros em seu aplicativo.

10- Registro e monitoramento insuficientes

Deixar de registrar erros ou ataques e más práticas de monitoramento pode introduzir um elemento humano aos riscos de segurança.

Os agentes de ameaças contam com a falta de monitoramento e tempos de correção mais lentos para que possam realizar seus ataques antes que você tenha tempo de perceber ou reagir.

Para evitar problemas com log e monitoramento insuficientes. Então, verifique se todas as falhas de login, falhas de controle de acesso e falhas de validação de entrada do lado do servidor são registradas com contexto para que você possa identificar atividades suspeitas.

Desse modo, o teste de penetração é uma ótima maneira de encontrar áreas de seu aplicativo com registro insuficiente também. Além disso, o estabelecimento de práticas de monitorização eficazes também é essencial.

Fonte

OWASP Douglas Bernardini

Douglas Bernardini

Cybersecurity Specialist & Cloud Computing Expert with +10 years experience in IT infrastructure.

Specialist delivering assets for development teams in Google Cloud Platform (GCP) and Amazon web services (AWS)

Hands-on cloud security enterprise architect, with experience in SIEM/SOC, IAM, cryptography, pentest, network topologies, operating systems, databases, and applications.

Experience in DevSecOps analysis to discover vulnerabilities in software, identifying CI/CD risks gaps and recommending secure-coding process (S-SDLC).

PDF's