Falhas do tipo CWE-128

3 resultados

Erro de Transbordamento de Inteiro (Wrap-around)

Ocorre quando uma operação aritmética em um inteiro ultrapassa o limite máximo ou mínimo do tipo de dado, causando um "envolvimento" (wrap-around) para um valor inesperado. Por exemplo, somar 1 a um inteiro sem sinal no seu máximo resulta em zero. Isso pode levar a alocações de memória inválidas, lógica de segurança quebrada ou acesso fora dos limites.

Exemplo

Um buffer de tamanho variável é alocado com `malloc(user_input + HEADER_SIZE)`. Se user_input for próximo ao máximo de um inteiro sem sinal, a soma transborda, resultando em um valor pequeno e uma alocação insuficiente — o aplicativo depois escreve dados além do buffer alocado.

Como mitigar

Valide entradas numéricas antes de operações aritméticas; use checks de estouro (`__builtin_add_overflow` em C, ou bibliotecas seguras); considere tipos com sinalização ou bibliotecas de arbitrary precision; implemente testes de fuzz para descobrir casos extremos com inteiros.