Falhas do tipo CWE-196

7 resultados

Erro de conversão entre tipos sem sinal e com sinal

Ocorre quando um valor unsigned (sem sinal) é convertido para signed (com sinal) sem validação, causando inversão de sinal ou overflow. O desenvolvedor assume que o valor cabe em ambos os tipos, mas valores grandes em unsigned viram negativos em signed, levando a lógica de segurança a falhar (checks de tamanho, permissões, bounds).

Exemplo

Um servidor recebe um tamanho de buffer como unsigned int (até 4 bilhões). Se esse valor for passado direto para uma função que espera signed int, um tamanho de 3 bilhões vira negativo, burlando validações de limite e causando heap overflow.

Como mitigar

Sempre valide explicitamente antes de conversão entre tipos: compare o valor contra o máximo do tipo destino, use casting seguro com range-check, ou mantenha tipos consistentes na arquitetura. Em linguagens modernas, ative avisos de conversão implícita do compilador.