As 10 vulnerabilidades web mais comuns
(2017)
rjmunhoz
OWASP is an open community dedicated to enabling organizations to conceive, develop, acquire, operate, and maintain applications that can be trusted.
9 das 10 vulnerabilidades web mais comuns estão diretamente no código
eval
Don't trust your user
SQL Injection
Utilizar 2FA sempre que possível
Não fazer deploy de credenciais padrão, muito menos de usuários admin
Implementar verificação de senhas fracas (top 1000 worst passwords)
Garantir que todos os erros de autenticação tenham a mesma mensagem
Limitar ou atrasar tentativas de login falhas e avisar administradores caso atividade suspeita seja detectada
Utilizar gerenciador de sessões server-side com entropia alta para gerar IDs de sessões
Evitar serialização de dados sensíveis
Atualizar processadores de XML, SOAP e bibliotecas
Desativar XML external entity e DTD nos processadores XML
Validar e sanitizar dados XML
Billion Laughs Attack
(?userId=)
Deny by Default
Logar tentativas de acesso falhas e alertar admins em caso de atividade suspeita
Utilizar rate limiting na API para minimizar danos causados por ferramentas automatizadas
Invalidar tokens JWT no server após logout
Hardening em todos os ambientes com credenciais diferentes para cada um
Plataforma mínima, com nada além do necessário disponível
Uma tarefa recorrente de revisitar, atualizar e corrigir possíveis configurações de segurança, bem como atualizar aplicações, serviços e bibliotecas
Aplicação segmentada que proporcione separação segura entre componentes (containers, segmentação, cloud security groups)
Envio de diretrizes de segurança
Separação entre dados inseguros vindos do usuário, e dados confiáveis, vindos da aplicação
Sempre que uma aplicação desserializar input do usuário
De preferência, não desserializar dados não confiáveis
Realizar verificações de integridade (assinatura digital) para prevenir manipulação dos dados
Exigir tipos pré determinados ao desserializar
Executar código que faz desserialização em ambiente isolado e sem privilégios
Logar erros e falhas de desserialização
Restringir tráfego de rede em servidores ou containers que realizam desserialização
Monitorar desserialização e alertar se usuários desserializarem frequentemente
Fique de olho!
Remova dependências desnecessárias
Sempre avalie e fique de olho em scanners automatizados de vulnerabilidades (npm, GitHub)
Utilize apenas componentes e bibliotecas de fontes oficiais e confiáveis
Monitore por bibliotecas não mais mantidas ou que não realizam patches de versões antigas
The event-stream incident
In 2016, identifying a breach took an average of 191 days – plenty of time for damage to be inflicted.
Logar qualquer ação suspeita ou falha de validação com contexto para identificar potenciais atacantes e por tempo o suficiente para permitir análise posterior dos dados
Garantir que logs usem formatos que podem ser processados por ferramentas de análise automatizada
Garantir que transações importantes seja, rastreáveis afim de não permitir alterações ou exclusões
Adote medidas de monitoramento e report em tempo oportuno
Adote um plano de recuperação de incidentes