CWE-170
Terminação Nula Imprópria
Sobre
O produto não termina ou termina incorretamente uma string ou array com um caractere nulo ou terminador equivalente.
Erros de terminação nula frequentemente ocorrem de duas maneiras diferentes. Um erro de deslocamento por um (off-by-one) poderia fazer com que um nulo fosse gravado fora dos limites, levando a um overflow. Ou, um programa poderia usar uma chamada da função strncpy() de forma incorreta, o que impede que um terminador nulo seja adicionado. Outros cenários são possíveis.
Consequências comuns
- Confidencialidade, Integridade, Disponibilidade → Ler Memória, Executar Código ou Comandos Não Autorizados
- Confidencialidade, Integridade, Disponibilidade → DoS: Falha, Encerramento ou Reinicialização, Ler Memória, DoS: Consumo de Recursos (CPU), DoS: Consumo de Recursos (Memória)
- Integridade, Disponibilidade → Modificar Memória, DoS: Falha, Encerramento ou Reinicialização
- Integridade, Confidencialidade, Disponibilidade, Controle de Acesso, Outro → Alterar Lógica de Execução, Executar Código ou Comandos Não Autorizados
Mitigações
- Requisitos: Use uma linguagem que não seja suscetível a esses problemas. No entanto, tenha cuidado com erros de interação de byte nulo (CWE-626) com construções de nível mais baixo que possam estar escritas em uma linguagem suscetível.
- Implementação: Garanta que todas as funções de string usadas sejam totalmente compreendidas quanto à forma como acrescentam caracteres nulos. Além disso, fique atento a erros de deslocamento por um (off-by-one) ao acrescentar nulos ao fim das strings.
- Implementação: Se as restrições de desempenho permitirem, pode ser adicionado código especial que valida a terminação nula de buffers de string; esta é uma solução bastante ingênua e propensa a erros.
- Implementação: Mude para funções de manipulação de string com limites (bounded). Inspecione os comprimentos de buffer envolvidos no rastreamento de estouro de buffer relatado com o defeito.
- Implementação: Adicione código que preencha os buffers com nulos (no entanto, o comprimento dos buffers ainda precisa ser inspecionado, para garantir que a string não terminada por nulo não seja gravada no fim físico do buffer).
CVEs com esta fraqueza
Perguntas frequentes
O que é CWE-170?
O produto não termina ou termina incorretamente uma string ou array com um caractere nulo ou terminador equivalente. Erros de terminação nula frequentemente ocorrem de duas maneiras diferentes. Um erro de deslocamento por um (off-by-one) poderia fazer com que um nulo fosse gravado fora dos limites, levando a um overflow.
Qual a probabilidade de CWE-170 ser explorada?
A MITRE classifica a probabilidade de exploração de CWE-170 como medium.
Quais plataformas CWE-170 afeta?
CWE-170 já foi observada em: C, C++.
Quantas CVEs a Rainforest acompanha para CWE-170?
O Rainforest Labs acompanha atualmente 1 CVEs publicadas associadas a CWE-170. 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.
