Falhas do tipo CWE-680
105 resultadosTransbordamento de inteiro levando a transbordamento de buffer
Ocorre quando uma operação aritmética com inteiros ultrapassa os limites do tipo (overflow), resultando em um valor menor do que o esperado. Esse valor reduzido é então usado para alocar memória ou indexar um buffer, permitindo escrita fora dos limites. O atacante explora a discrepância entre o cálculo matemático correto e o resultado inteiro para injetar código ou corromper dados.
Um programa recebe o tamanho de um arquivo e calcula espaço para alocação como `tamanho + sizeof(header)`. Se tamanho é INT_MAX, a soma sofre overflow e retorna um valor pequeno; o buffer alocado fica insuficiente, e dados subsequentes são escritos além de seus limites.
Valide o tamanho de entrada antes de operações aritméticas (garanta que a soma não ultrapasse o máximo do tipo). Use tipos inteiros sem sinal quando apropriado e considere bibliotecas de aritmética segura. Implemente verificações explícitas: `if (tamanho > INT_MAX - sizeof(header)) reject()` antes de alocar.