Fallos del tipo CWE-191
328 resultadosSubfluxo de inteiro (estouro negativo)
Ocorre quando uma operação aritmética subtrai um valor maior de um inteiro não assinado, causando wraparound: o resultado "volta" para um número muito grande em vez de ficar negativo. Um inteiro de 8 bits sem sinal (0-255), ao subtrair 1 de 0, vira 255. Isso quebra lógica de validação e pode ser explorado para contornar limites de segurança, alocar memória inadequada ou acessar áreas indevidas.
Um sistema de download que valida se o tamanho solicitado cabe em buffer: se recebe tamanho=0 e subtrai um header de 10 bytes, a conta (0 - 10) em inteiro não assinado resulta em 4.294.967.286 bytes em uma arquitetura de 32 bits, enganando a validação e causando overflow no buffer.
Sempre validar entrada antes de operações aritméticas; usar tipos assinados quando desejar representar negativos; implementar verificações de limites (p.ex., se A < B antes de calcular A - B); usar ferramentas estáticas ou sanitizers (AddressSanitizer, UBSan) para detectar wraparound em tempo de desenvolvimento.