Falhas do tipo CWE-194

5 resultados

Extensão de sinal inesperada

Ocorre quando um valor inteiro com sinal é promovido para um tipo maior sem tratamento adequado, estendendo o bit de sinal e alterando o valor esperado. Isso acontece principalmente em operações de cast ou comparação entre tipos de tamanhos diferentes, permitindo que valores negativos se tornem números muito grandes positivos (ou vice-versa), quebrando lógica de validação ou causando buffer overflows.

Exemplo

Um validador recebe um inteiro de 8 bits (signed char) com valor -1, o compara com 256 (esperado em um unsigned int de 32 bits) sem conversão explícita. O -1 vira 0xFFFFFFFF (4.294.967.295), passando por uma verificação de limite e causando alocação de memória excessiva ou acesso fora de limites.

Como mitigar

Use casts explícitos e verificações de tipo antes de operações com inteiros de tamanhos diferentes; aplique validação de intervalo após qualquer promoção de tipo; prefira usar tipos unsigned quando forem apropriados ao contexto; utilize ferramentas de análise estática para detectar extensões de sinal silenciosas.