Fallos del tipo CWE-128
3 resultadosErro de transbordamento circular em inteiros
Ocorre quando uma operação aritmética em um inteiro ultrapassa o limite máximo ou mínimo do tipo de dado, fazendo o valor 'voltar' (wrapping) para o lado oposto da faixa. Por exemplo, somar 1 a um inteiro sem sinal de 8 bits com valor 255 resulta em 0. Isso causa comportamento inesperado e pode ser explorado para contornar verificações de tamanho ou limites.
Um validador de comprimento de buffer que recebe um inteiro de 16 bits sem sinal: se o tamanho for 65535 e somar 1 byte de overhead, o resultado vira 0 ou um valor muito pequeno. O código então aloca uma memória mínima, mas tenta processar dados muito maiores, causando buffer overflow.
Use verificações explícitas antes de operações aritméticas (validar se a soma causará overflow), prefira tipos de dados maiores quando possível, ou use bibliotecas/linguagens com proteção contra wrap-around. Em C/C++, considere arithmetic libraries como Safe Integers ou análise estática para detectar operações perigosas.