Ameaças de segurança de aplicação: o Top 10 da OWASP
Existem inúmeras ameaças à segurança que afetam aplicativos de software. No entanto, a lista Top 10 do Open Web Application Security Project (OWASP) compila as ameaças de aplicativos mais prevalentes e graves e mais propensas a afetar aplicativos na produção.
As iniciativas do AppSec devem se concentrar pelo menos nessas ameaças de alto perfil aos aplicativos modernos:
- A injeção— a injeção de código envolve uma consulta ou comando enviado a um aplicativo de software, que contém dados maliciosos ou não confiáveis. O mais comum é a injeção SQL, mas também pode afetar noSQL, sistemas operacionais e servidores LDAP.
- Autenticação quebrada— muitos aplicativos têm funções de autenticação e autorização inadequadas ou com defeito. Isso pode permitir que um invasor roube credenciais do usuário ou obtenha facilmente acesso sem credenciais apropriadas.
- Exposição de dados confidenciais— aplicativos e APIs podem expor abertamente dados confidenciais pertencentes à organização ou seus clientes, incluindo detalhes financeiros ou de pagamento e informações pessoalmente identificáveis (PII).
- Entidades Externas XML (XXE)— os invasores podem fazer uso malicioso de referências de entidades externas em documentos XML, devido a vulnerabilidades em analisadores XML antigos. Estes podem ser usados para obter acesso a arquivos internos, digitalizar portas e executar código remotamente.
- Controle de acesso quebrado— as restrições para usuários autenticados não são implementadas corretamente. Um invasor poderia usá-lo para obter acesso a funções ou dados não autorizados, acessar a conta de outro usuário, visualizar arquivos confidenciais ou alterar permissões para outros usuários.
- Configuração de segurança— mesmo que um aplicativo tenha recursos de segurança, eles podem ser mal configurados. Isso geralmente ocorre porque ninguém alterou a configuração padrão do aplicativo. Isso inclui a falha na correção de sistemas e estruturas operacionais.
- Scripting cross-site (XSS)— permite que um invasor execute um script malicioso no navegador de um usuário. Isso pode ser usado para roubar sua sessão, redirecionar usuários para sites maliciosos ou realizar desfiguração de sites.
- Deserialização insegura— falhas na forma como o código é retirado de um arquivo e construído em um objeto. Isso pode permitir a execução de códigos maliciosos, a escalada de privilégios e a atividade de replay por usuários autorizados.
- Usando componentes com vulnerabilidades conhecidas— vários bancos de dados de vulnerabilidade relatam vulnerabilidades conhecidas em componentes de software. O software que usa um componente vulnerável (mesmo como dependência de um de seus componentes) é exposto a ataques.
- Registro & Monitoramento insuficiente— muitos aplicativos podem não ter meios de identificar ou registrar tentativas de violações. Isso pode significar que as violações não são detectadas, e os atacantes podem executar movimentos laterais para comprometer sistemas adicionais.
Um processo básico do AppSec envolve as seguintes etapas:
- Definindo ativos corporativos
- Determinar como cada aplicativo afeta esses ativos
- Criando um perfil de segurança para cada aplicativo
- Identificar e priorizar ameaças potenciais
- Registrando incidentes de segurança e tentativas de mitigação
Ferramentas de teste de segurança de aplicativos
Existem três categorias primárias de ferramentas no site de ferramentas AppSec: SAST, DAST e IAST.
Teste de segurança de aplicativos estáticos (SAST)
As ferramentas SAST permitem o teste da caixa branca. Eles avaliam o código do aplicativo, digitalizando-o para identificar bugs, vulnerabilidades ou outras fraquezas que podem criar um problema de segurança. O SAST pode ser executado em código compilado, código não compilado ou ambos.
A análise SAST pode identificar problemas como:
- Condições de corrida
- Travessias de caminhos
- Validação de entrada ausente
- Erros numéricos ou do tipo de dados
- Referências ou ponteiros inseguros
Teste dinâmico de segurança de aplicativos (DAST)
As ferramentas DAST usam métodos de teste de caixa preta para testar aplicativos em execução para problemas de segurança. Eles realizam análise dinâmica do código fonte enquanto ele está em execução. O DAST geralmente usa testes em fuzz, o que envolve acertar o aplicativo com um grande número de solicitações aleatórias e inesperadas.
O DAST pode detectar condições que indicam vulnerabilidades de segurança, tais como:
- Interfaces não seguras ou vulneráveis
- Pedidos e respostas anômalas
- Problemas de script em idiomas como JavaScript e Python
- Injeção de dados ou código
- Anomalias de sessão
- Problemas de autenticação
Teste interativo de segurança de aplicativos (IAST)
IAST é uma abordagem híbrida que combina SAST e DAST. A abordagem interativa para testes de segurança combina análises estáticas e dinâmicas — isso torna possível identificar vulnerabilidades conhecidas e também ver se elas são realmente usadas no aplicativo em execução e podem ser exploradas.
As ferramentas IAST coletam informações detalhadas sobre o fluxo de execução de aplicativos e fluxos de dados, e podem simular padrões de ataque complexos. À medida que realiza uma varredura dinâmica de um aplicativo em execução, ele pode verificar como o aplicativo responde e ajustar seus testes de acordo. Isso pode ser usado para criar automaticamente novos casos de teste, e assim por diante (muito parecido com um testador de penetração humana).
Devido a essa abordagem, as ferramentas iast podem investigar profundamente suspeitas de problemas de segurança, o que reduz o número de falsos positivos. Eles também se encaixam muito mais naturalmente em um processo de desenvolvimento ágil com lançamentos rápidos.
Firewall de aplicativos web baseado em regras (WAF)
Um WAF é uma solução implantada na borda da rede, que inspeciona o tráfego que entra e sai da rede e tenta identificar e bloquear o tráfego malicioso.
Os WAFs tradicionais baseados em regras são uma ferramenta de alta manutenção que exige que as organizações definam meticulosamente um conjunto de regras que corresponda aos padrões específicos de tráfego e aplicativos. Além disso, os WAFs baseados em regras têm cobertura limitada de vetores de ataque em constante mudança.
Além disso, os WAFs tradicionais não podem proteger automaticamente novos microsserviços, porque cada novo microsserviço implantado requer uma sobrecarga significativa de definição de novas regras e políticas. Em termos práticos, isso significa que novos sistemas implantados pela organização, em muitos casos, não serão protegidos.
Práticas recomendadas de segurança de aplicativos
Aqui estão algumas práticas recomendadas que você pode usar para implementar efetivamente o AppSec em sua organização.
Comece com uma avaliação de ameaças
Investigue quais são os principais pontos de entrada que os atacantes podem usar para violar seus aplicativos, quais medidas de segurança estão em vigor e se são adequadas. Estabeleça metas razoáveis e marcos ao longo do tempo para o nível de segurança que você deseja alcançar contra cada tipo de ameaça.
Esquerda de segurança de turno (Shift Security Left)
Os testes de segurança devem ser totalmente integrados ao ciclo de vida do desenvolvimento de software (SDLC), desde a fase de planejamento, até o desenvolvimento, testes e implantação até a produção.
Use ferramentas automatizadas para garantir que os aplicativos sejam testados o mais cedo possível no processo e em vários pontos de verificação em todo o pipeline DE CI/CD. Por exemplo, quando um desenvolvedor comete código e aciona uma compilação, esse código deve passar automaticamente por algum tipo de teste de segurança, permitindo que o desenvolvedor corrija imediatamente problemas de segurança em seu código.
Esse mesmo código deve ser testado novamente, de forma mais abrangente, quando promovido a um ambiente de teste e produção.
Priorizar a remediação
A segurança do aplicativo resultará na descoberta de vulnerabilidades em seus aplicativos — e você não será capaz de corrigir todas elas. A priorização é muito importante para garantir que as vulnerabilidades críticas sejam remediadas rapidamente, sem prejudicar a produtividade do desenvolvedor.
Seu processo de teste de segurança deve incluir métricas automatizadas mostrando gravidade e explorabilidade de vulnerabilidade e, se necessário, uma avaliação manual indicando se a vulnerabilidade realmente representa um risco para o negócio. Componentes vulneráveis que não estão em execução na produção não são uma prioridade.
Certifique-se de que os desenvolvedores saibam que estão trabalhando em vulnerabilidades reais e de alto perfil e tenham tempo para corrigi-las onde quer que ocorram no SDLC.
Acompanhe os resultados do AppSec
Um programa da AppSec requer um grande investimento em tempo e recursos, bem como mudanças culturais e organizacionais. É importante entender o impacto do programa na segurança para justificar o programa e garantir que ele seja apoiado pela gestão.
Métricas importantes que você pode rastrear e compartilhar para demonstrar o sucesso do AppSec — uma tendência semanal ou mensal pode mostrar o impacto da introdução de medidas de segurança de aplicativos:
- Número de violações das políticas internas do AppSec
- Número de violações de conformidade
- Número de defeitos de segurança encontrados no ambiente de testes
- Número de defeitos de segurança encontrados na produção
- Número de incidentes de segurança
Gerenciar privilégios
Tudo relacionado a um programa de segurança de aplicativos são dados confidenciais que podem ser extremamente úteis para um invasor. Certifique-se de gerenciar cuidadosamente:
- Documentação de políticas e processos
- Acesso a ferramentas de segurança
- Acesso a FERRAMENTAS DE CI/CD e ferramentas de desenvolvimento
Use o princípio de menor privilégio, e garanta que cada usuário só tenha acesso a dados e sistemas que eles absolutamente precisam para fazer seu trabalho. Use princípios de confiança zero entre sistemas integrados, garantindo que cada sistema tenha apenas as permissões mínimas que precisa para funcionar.
AppSec com ponto de verificação
O CloudGuard da Check Point inclui uma solução de segurança de aplicativos de configuração zero que fornece:
- Prevenção precisa – proteção contra ataques sofisticados como o OWASP top 10, sem gerar falsos positivos
- Administração de políticas zero – adapta automaticamente às alterações e atualizações do aplicativo
- Implantação flexível e rápida – com implantação para proteção em até 48 horas