Dando continuidade ao último artigo, seguem as outras cinco vulnerabilidades elencadas pela OWASP, em 2021, como as mais comuns.
Componentes Vulneráveis e Desatualizados (Vulnerable and Outdated Components)
Esta modalidade se refere à situação em que sistemas ou aplicações utilizam bibliotecas, frameworks ou outros componentes de software que estão desatualizados ou possuem vulnerabilidades conhecidas.
O que é?
Ao desenvolver e manter sistemas, os desenvolvedores, frequentemente, utilizam componentes de terceiros (como bibliotecas, módulos, frameworks, etc.) para acelerar o processo e evitar "reinventar a roda".
No entanto, esses componentes, assim como qualquer software, podem ter vulnerabilidades que são descobertas ao longo do tempo.
Se não forem atualizados regularmente, os sistemas que dependem desses componentes podem se tornar suscetíveis a explorações baseadas nas vulnerabilidades conhecidas.
Como acontece?
- Uso de componentes desatualizados: os desenvolvedores podem usar versões antigas de bibliotecas ou frameworks que já têm vulnerabilidades conhecidas.
- Falta de consciência: em alguns casos, as equipes podem não estar cientes de que há uma vulnerabilidade em algum componente utilizado.
- Complexidade da atualização: às vezes, atualizar um componente pode ser complicado e pode quebrar funcionalidades existentes, o que se torna um empecilho para as atualizações constantes.
- Dependências transitivas: em muitos casos, um projeto pode depender de uma biblioteca que, por sua vez, depende de outras bibliotecas. Estas são chamadas de dependências transitivas e podem introduzir vulnerabilidades indiretamente.
Como prevenir?
- Inventário de componentes: manter um registro atualizado de todos os componentes de terceiros usados, incluindo suas versões.
- Monitorar ativamente por vulnerabilidades: assinar feeds ou serviços que notifiquem sobre novas vulnerabilidades em componentes que você usa.
- Atualizar regularmente: implementar uma política de atualização regular para garantir que todos os componentes sejam mantidos na versão mais recente e segura.
- Verificação de dependências: utilize ferramentas que possam verificar automaticamente as dependências do seu projeto em busca de vulnerabilidades conhecidas.
- Isolar componentes: se um componente é conhecido por ser vulnerável e não pode ser atualizado imediatamente, considere isolá-lo para minimizar o risco.
Técnicas e ferramentas
- Dependency Checkers: como OWASP Dependency-Check, Snyk ou WhiteSource, podem verificar as bibliotecas e dependências do projeto em busca de vulnerabilidades conhecidas.
- Gerenciadores de pacotes seguros: gerenciadores de pacotes como “composer”, "npm", "pip" e "Maven" frequentemente oferecem recursos ou plugins que alertam sobre vulnerabilidades em pacotes.
- Repositórios privados: repositórios privados pode ajudar a garantir que apenas componentes aprovados e revisados sejam usados.
- Contêineres e ferramentas de escaneamento: se você estiver usando contêineres, ferramentas como "Clair" ou "Anchore" podem escanear seus contêineres em busca de vulnerabilidades conhecidas.
Falhas de Identificação e Autenticação (Identification and Authentication Failures)
Ocorrem quando sistemas ou aplicações não conseguem de forma apropriada identificar ou autenticar usuários. Assim, eles permitem que atores maliciosos obtenham acesso não autorizado.
O que é?
- Identificação: diz respeito ao processo de reconhecer um usuário com base em identificadores únicos, como nome de usuário ou número de ID.
- Autenticação: é o processo de verificar a identidade do usuário, geralmente por meio de credenciais como senha, tokens, biometria, entre outros.
Falhas nesses processos podem levar a uma variedade de riscos de segurança, desde contas comprometidas até acessos indevidos aos sistemas inteiros.
Para que não confunda, no acesso quebrado o sistema não aplica adequadamente restrições de acesso e permite que usuários não autorizados acessem recursos ou funcionalidades que deveriam estar protegidos.
Já nas falhas de identificação e autenticação, por sua vez, os sistemas não conseguem verificar corretamente a identidade dos usuários, levando a potenciais brechas de segurança.
Dessa maneira, o primeiro se concentra nas autorizações inadequadas e o segundo está relacionado à autenticação insuficiente ou incorreta, ambos apresentando riscos significativos à segurança da informação.
Como acontece?
- Senhas fracas: usuários frequentemente escolhem senhas simples ou facilmente adivinháveis.
- Armazenamento inseguro de credenciais: senhas armazenadas em texto puro ou com criptografia fraca são suscetíveis a vazamentos.
- Falta de mecanismos de proteção: como limitação de tentativas de login, o que pode permitir ataques de força bruta.
- Autenticação única: depender exclusivamente de uma senha, sem autenticação de dois fatores.
- Sessões sem expiração: permitir que sessões de usuário permaneçam ativas indefinidamente pode levar a sequestros de sessão.
- Mecanismos de recuperação de senha fracos: se os processos de recuperação de senha forem facilmente exploráveis, atacantes podem redefinir e assumir contas.
Como prevenir?
- Políticas de senha forte: exigir senhas complexas e frequentemente atualizadas.
- Autenticação de dois fatores (2FA): implementar uma camada adicional de autenticação, como códigos SMS, aplicativos de autenticação ou chaves de hardware.
- Limitar tentativas de login: bloquear contas ou impor atrasos após várias tentativas de login falhadas.
- Criptografia de senhas: utilizar algoritmos modernos e salt para armazenar senhas de forma segura.
- Uso de HTTPS: para garantir que as credenciais sejam enviadas de forma segura entre o cliente e o servidor.
- Sessões com expiração: definir um tempo de vida para sessões de usuário, exigindo reautenticação após períodos de inatividade.
- Auditorias e monitoramento: rastrear e monitorar tentativas de autenticação para identificar comportamentos suspeitos.
Técnicas e ferramentas
- Ferramentas de gerenciamento de identidade: como Okta, Auth0 ou Microsoft Active Directory, que fornecem autenticação robusta e gerenciamento de identidade.
- Bibliotecas de Hashing de senhas: como bcrypt ou Argon2, que são projetadas especificamente para proteger senhas.
- Ferramentas de monitoramento: soluções como Splunk ou ELK Stack para coletar e analisar logs de autenticação.
- Web Application Firewalls (WAF): embora haja soluções genéricas, apenas uma modalidade profissional garante a proteção necessária.
- Gerenciadores de senhas: como Last Pass, NordPass, 1Password, Dashlane e afins (saiba mais aqui), que criam senhas únicas e com nível de dificuldade maior, armazena-as e também preenche de forma automática, se habilitada a opção.
Falhas de Software e Integridade de Dados (Software Failures and Data Integrity)
Relaciona-se às situações em que a confiabilidade, precisão e consistência do software ou dos dados são comprometidas, seja acidentalmente ou devido a ações maliciosas.
O que é?
A integridade se relaciona à precisão e consistência dos dados ao longo de seu ciclo de vida. No contexto do software, a integridade garante que o código execute conforme o esperado e que não tenha sido alterado maliciosamente.
Falhas nessa integridade podem levar a comportamentos indesejados, exposição de dados ou até a falhas de segurança mais amplas.
Como acontece?
- Ataques Man-in-the-Middle (MitM): um atacante intercepta e potencialmente altera comunicações entre duas partes.
- Modificação de software: softwares podem ser modificados para incluir malware ou outras funcionalidades maliciosas.
- Corrupção de dados: falhas de hardware, erros de software ou ataques maliciosos podem corromper dados.
- Erros de sincronização: em ambientes distribuídos, falhas de sincronização podem levar a estados inconsistentes dos dados.
- Dependência de software de terceiros: bibliotecas ou componentes de terceiros podem ser comprometidos, afetando a integridade do software principal.
Como prevenir?
- Hashing e assinaturas digitais: usar funções de hash para verificar a integridade de dados e softwares. Assinaturas digitais fornecem uma camada adicional de confiança ao garantir que os dados/softwares vêm de uma fonte legítima.
- Protocolos de comunicação segura: usufruir de protocolos como TLS para proteger dados em trânsito e prevenir ataques MitM.
- Backups regulares: realizar backups consistentes dos dados para garantir a possibilidade de recuperação em caso de corrupção.
- Verificação de integridade em banco de dados: utilizar constraints, chaves estrangeiras, chaves primárias e outros mecanismos para assegurar a integridade dos dados.
- Controle de acesso: restringir quem pode modificar software e dados, garantindo que apenas entidades confiáveis possam fazer alterações.
- Atualizações e patches: manter o software atualizado para proteger contra vulnerabilidades conhecidas.
Técnicas e ferramentas
- Ferramentas de controle de versão: como Git, que registram alterações no código e permitem rastrear modificações.
- Sistemas de Detecção de Intrusão (IDS): ferramentas como Snort, Suricata, OSSEC e Crowdstrike podem monitorar redes em busca de atividades suspeitas.
- Hash-Based Message Authentication Code (HMAC): combina funções de hash com uma chave secreta para garantir a integridade e autenticidade dos dados.
- GPG/PGP: para criptografia e assinatura digital, garantindo que os dados/software não foram adulterados e provêm de uma fonte legítima.
- Sistemas de Gerenciamento de Banco de Dados (DBMS): oferecem mecanismos integrados para garantir a integridade dos dados, como triggers e constraints.
- Ferramentas de backup e recuperação: como Veeam ou Acronis, garantem que os dados possam ser restaurados a um estado anterior.
- VPN: o uso de uma VPN segura complementa as medidas de prevenção de falhas de software e integridade de dados, garantindo que a comunicação e a transmissão de dados permaneçam protegidas contra ameaças externas.
Falhas de Registro e Monitoramento de Segurança (Logging and Security Monitoring Failures)
Diz respeito à insuficiência ou ineficácia em capturar, armazenar, monitorar ou responder a logs e alertas relacionados à segurança em sistemas ou aplicações.
O que é?
Logs são registros detalhados de eventos ou atividades que ocorrem em um sistema ou aplicação. O monitoramento de segurança, por sua vez, é o processo de supervisão contínua desses logs para detectar atividades suspeitas ou não autorizadas.
Falhar em qualquer um desses aspectos pode deixar uma organização cega para ataques, vazamentos de dados ou outras violações de segurança.
Como acontece?
- Configuração inadequada: sistemas ou aplicações podem não estar configurados para registrar eventos relevantes.
- Armazenamento insuficiente: a falta de espaço ou infraestrutura para armazenar logs pode resultar na perda de dados importantes.
- Sobrecarga de informações: alertas excessivos ou informações irrelevantes podem ofuscar eventos críticos.
- Retenção inadequada: não manter logs por um período suficiente pode impedir análises retrospectivas.
- Falta de proteção dos logs: logs não protegidos podem ser alterados ou excluídos por atacantes.
- Monitoramento insuficiente: falta de ferramentas ou pessoal para analisar e responder a eventos suspeitos em tempo real.
Como prevenir?
- Definir políticas de registro: determinar quais eventos devem ser registrados e como eles devem ser tratados.
- Revisão regular: estabelecer rotinas de revisão regular dos logs para identificar padrões ou eventos suspeitos.
- Automatização: utilizar ferramentas automatizadas para detectar e alertar sobre atividades anômalas.
- Segregação de log: separar logs baseado em sua natureza e criticidade, evitando a sobrecarga.
- Proteção e criptografia de logs: proteger arquivos de log contra modificações, exclusões e acessos não autorizados.
- Retenção adequada: definir e implementar políticas de retenção de log com base em requisitos regulamentares e de negócios.
Técnicas e ferramentas
- Sistemas de Detecção de Intrusão (IDS) e Sistemas de Prevenção de Intrusão (IPS): como Snort, Suricata, OSSEC e Crowdstrike, que monitoram o tráfego da rede em busca de atividades suspeitas.
- Sistemas de Gerenciamento de Informações e Eventos de Segurança (SIEM): como Splunk, LogRhythm ou Elastic Stack (ELK) que coletam, agregam, correlacionam e analisam logs de várias fontes.
- Ferramentas de monitoramento de integridade de arquivos: como o Tripwire, que alertam sobre alterações não autorizadas em arquivos.
- Soluções de armazenamento centralizado: como o Graylog, que centralizam logs de várias fontes para análise e armazenamento mais fácil.
- Ferramentas de auditoria: soluções como o Nessus ou OpenVAS, que realizam verificações regulares para identificar vulnerabilidades ou configurações incorretas.
Falsificação de Solicitação no Servidor (Server Request Forgery)
O que é?
No SSRF, o atacante explora a capacidade de um servidor para fazer solicitações a outros sistemas internos ou externos em seu nome.
Ao fazer isso, o atacante pode contornar firewalls, descobrir e interagir com sistemas internos, e potencialmente obter acesso a funcionalidades ou dados restritos.
Como acontece?
- Abuso de funcionalidades: algumas aplicações permitem que os usuários forneçam URLs para buscar dados (por exemplo, importar uma imagem de um URL). Um atacante pode fornecer um URL interno ou especial (por exemplo,
http://localhost/admin
oufile:///etc/passwd
) para obter informações ou interagir com serviços internos. - Solicitações indesejadas: um atacante pode usar SSRF para fazer com que o servidor realize ações indesejadas em outros serviços, como enviar e-mails ou interagir com bancos de dados internos.
Como prevenir?
- Validação rigorosa: ao permitir que os usuários forneçam URLs ou outros dados que serão usados em solicitações do lado do servidor, validar rigorosamente a entrada para garantir que ela esteja no formato esperado e não contém valores perigosos.
- Lista de permissões: usar uma lista de permissões de URLs ou endereços IP válidos e somente permitir solicitações para esses destinos.
- Bloqueie URLs especiais: evitar que o servidor acesse URLs que usem o protocolo
"file://"
ou que apontem para endereços IP reservados (por exemplo, 127.0.0.1). - Utilize controles de rede: configurar firewalls ou outras soluções de segurança de rede para restringir as saídas do servidor apenas para destinos necessários.
- Segregação de rede: isolar o servidor em uma rede de modo que ele tenha acesso mínimo a outros sistemas internos.
- Patches e atualizações: manter o software do servidor e todas as bibliotecas associadas atualizados para proteger contra vulnerabilidades conhecidas.
Técnicas e ferramentas
- Ferramentas de teste de penetração: como Burp Suite e OWASP ZAP, as quais podem ser usadas para identificar potenciais vetores de SSRF em aplicações.
- Web Application Firewalls (WAFs): embora haja soluções genéricas, apenas uma modalidade profissional pode, realmente. ajudar a detectar e bloquear tentativas de ataque SSRF.
- Sistemas de detecção e prevenção de intrusões: monitorar o tráfego de saída para detectar atividades suspeitas que podem indicar uma exploração SSRF.
- Ambientes de conteinerização: usar soluções como Docker ou Kubernetes para isolar aplicações e limitar seu acesso a recursos da rede.
- Logging e monitoramento: registrar e monitorar todas as solicitações de saída para detectar qualquer atividade suspeita ou não autorizada.
- Adoção dos princípios de Design Driven Development (DDD): ao focar na modelagem rica do domínio e garantir que a lógica de negócios esteja corretamente encapsulada, é possível prevenir muitas vulnerabilidades, incluindo aquelas que podem ser exploradas por ataques de injeção.
- Treinamento e conscientização: garantir que as equipes envolvidas estejam cientes das boas práticas de segurança.
Virtual Patching & Hardening
Como vimos, muitas vulnerabilidades podem surgir de versões desatualizadas ou mesmo de brechas ainda não corrigidas.
Nesse sentido, o Virtual Patching é uma tecnologia essencial, considerando que nem todas as questões podem ser corrigidas de imediato e acompanhadas, de perto, o tempo todo.
Na prática, a ferramenta aplica uma correção "virtual" a uma vulnerabilidade sem alterar ou atualizar diretamente o software ou sistema em questão.
Isso permite que as organizações se defendam rapidamente contra ameaças emergentes, mesmo antes de um patch oficial ser disponibilizado ou implementado.
Por outro lado, Hardening é o processo de fortalecer um sistema ao eliminar funcionalidades desnecessárias ou potencialmente inseguras e reduzir sua superfície de ataque.
Juntas, estas técnicas oferecem uma abordagem proativa para garantir a segurança contínua de sistemas e aplicações, minimizando riscos e reduzindo janelas de exposição.
Na Infinite, segurança é prioridade e somos o produto mais completo do mercado também neste quesito. Para que possa ter dimensão, um WAF profissional é comercializado a partir de 10 dólares e somente conosco você consegue ter este recurso sem pagar nada a mais.
Para melhorar, o nosso WAF inclui as duas tecnologias citadas, sanando não só os riscos no momento da invasão como trabalhando para preveni-la.
Assim, você não apenas fica protegido caso algum ataque ocorra como também impede a sua exploração! Maravilha, não é mesmo?
Fique atento!
É natural que, em uma realidade em que softwares resolvem tantos problemas, algumas adaptações só apareçam depois de colocá-los em produção. Também, a prática de engenharia social e de exploração de vulnerabilidade seguirão acompanhando a evolução digital.
No entanto, é essencial adotar posturas de segurança que vão desde a forma como os acessos são compartilhados às soluções automatizadas.
Por esta razão, implantar uma cultura segura nas empresas e utilizar o máximo de ferramentas disponíveis é o mínimo que você pode fazer pela sua aplicação e pelos seus usuários.