Falhas do tipo CWE-135

2 resultados

Cálculo incorreto do comprimento de string multi-byte

Ocorre quando o código calcula o tamanho de uma string contendo caracteres multi-byte (UTF-8, UTF-16, etc.) usando funções que contam bytes em vez de caracteres, ou vice-versa. Isso causa buffers menores ou maiores que o esperado, levando a leituras/escritas fora dos limites ou truncamento silencioso de dados.

Exemplo

Um aplicativo recebe uma string em UTF-8 com caracteres acentuados, usa strlen() para alocar buffer (contando bytes) mas depois trata como se fossem caracteres individuais. Um caractere acentuado ocupa 2-3 bytes, causando acesso além do buffer alocado.

Como mitigar

Use funções sensíveis ao encoding (como mb_strlen em PHP ou métodos de contagem de caracteres UTF-aware) em vez de contar bytes. Valide e normalize o encoding na entrada, e teste explicitamente com strings contendo caracteres multi-byte, especialmente acentuação e símbolos.