CWE-787
Gravação Fora dos Limites
Sobre
O produto grava dados além do fim, ou antes do início, do buffer pretendido.
Consequências comuns
- Integridade → Modificar Memória, Executar Código ou Comandos Não Autorizados
- Disponibilidade → DoS: Travamento, Encerramento ou Reinicialização
- Outro → Estado Inesperado
Mitigações
- Requisitos: Use uma linguagem que não permita que essa fraqueza ocorra ou que forneça construções que tornem essa fraqueza mais fácil de evitar. Por exemplo, muitas linguagens que realizam seu próprio gerenciamento de memória, como Java e Perl, não estão sujeitas a estouros de buffer. Outras linguagens, como Ada e C#, tipicamente fornecem proteção contra estouro, mas a proteção pode ser desabilita
- Arquitetura e Projeto: Use uma biblioteca ou framework validado que não permita que essa fraqueza ocorra ou que forneça construções que tornem essa fraqueza mais fácil de evitar. Exemplos incluem a Safe C String Library (SafeStr) de Messier e Viega [REF-57], e a biblioteca Strsafe.h da Microsoft [REF-56]. Essas bibliotecas fornecem versões mais seguras de funções de manipulação de strings propensa
- Operação, Compilação e Construção: Use mecanismos automáticos de detecção de estouro de buffer oferecidos por certos compiladores ou extensões de compilador. Exemplos incluem: a flag /GS do Microsoft Visual Studio, a flag FORTIFY_SOURCE do GCC no Fedora/Red Hat, o StackGuard e o ProPolice, que fornecem diversos mecanismos, incluindo detecção baseada em canário e verificação de faixa/índice. O D3-S
- Implementação: Considere aderir às seguintes regras ao alocar e gerenciar a memória de uma aplicação: - Verifique duas vezes se o buffer é tão grande quanto especificado. - Ao usar funções que aceitam um número de bytes a copiar, como strncpy(), esteja ciente de que, se o tamanho do buffer de destino for igual ao tamanho do buffer de origem, a string pode não ser terminada por NULL. - Verifique os
- Operação, Compilação e Construção: Execute ou compile o software usando recursos ou extensões que organizam aleatoriamente as posições do executável e das bibliotecas de um programa na memória. Como isso torna os endereços imprevisíveis, pode impedir que um atacante salte de forma confiável para código explorável. Exemplos incluem Address Space Layout Randomization (ASLR) [REF-58] [REF-60] e Posit
- Operação: Use uma CPU e um sistema operacional que ofereçam Data Execution Protection (usando bits NX ou XD de hardware) ou técnicas equivalentes que simulem esse recurso em software, como o PaX [REF-60] [REF-61]. Essas técnicas garantem que qualquer instrução executada esteja exclusivamente em um endereço de memória que faça parte do segmento de código. Para mais informações sobre essas técnicas,
CVEs com esta fraqueza
Perguntas frequentes
O que é CWE-787?
O produto grava dados além do fim, ou antes do início, do buffer pretendido. Consequências comuns Integridade → Modificar Memória, Executar Código ou Comandos Não Autorizados Disponibilidade → DoS: Travamento, Encerramento ou Reinicialização Outro → Estado Inesperado Mitigações Requisitos: Use uma linguagem que não permita que essa fraqueza ocorra ou que forneça construções que tornem essa fraqueza mais fácil de evit…
Qual a probabilidade de CWE-787 ser explorada?
A MITRE classifica a probabilidade de exploração de CWE-787 como high.
Quais plataformas CWE-787 afeta?
CWE-787 já foi observada em: Memory-Unsafe, C, C++, Assembly, ICS/OT.
Quantas CVEs a Rainforest acompanha para CWE-787?
O Rainforest Labs acompanha atualmente 7 CVEs publicadas associadas a CWE-787. Elas estão listadas nesta página.
Potencialize sua estratégia de segurança com a Rainforest
Descubra vulnerabilidades cedo, priorize ameaças críticas e proteja o que realmente importa. A Rainforest simplifica suas operações de segurança, economizando tempo e reduzindo custos, para você focar no que move o seu negócio.
