Fallos del tipo CWE-192

6 resultados

Erro de coerção de inteiros

Ocorre quando o código converte ou compara inteiros de tipos diferentes (ex: int para unsigned int, ou de tamanhos distintos) sem validar o valor, permitindo que números negativos se tornem positivos ou valores grandes se truncuem silenciosamente. Isso pode contornar verificações de segurança ou causar comportamento inesperado.

Ejemplo

Um validador recebe um tamanho de buffer como int negativo (-100), compara com um limite unsigned (100) e, na coerção, o -100 vira um número gigante. O código então aloca memória baseado nesse valor coagido, causando overflow ou out-of-bounds.

Cómo mitigar

Valide inteiros antes de conversões: verifique se o valor está no intervalo esperado. Use tipos consistentes (preferencialmente unsigned para tamanhos/contadores) e ferramentas de análise estática para detectar coerções implícitas suspeitas. Em C, evite misturar signed e unsigned em operações críticas.