Fallos del tipo CWE-135

2 resultados

Cálculo incorreto do comprimento de strings multibyte

Ocorre quando o código calcula o tamanho de uma string contendo caracteres multibyte (como UTF-8) contando bytes em vez de caracteres lógicos, ou aplicando a lógica de strings de byte único. Isso causa buffers subdimensionados, truncamento de dados ou leitura além dos limites alocados.

Ejemplo

Um validador valida um campo UTF-8 usando strlen(), que conta bytes, não caracteres. Uma string com acentos ocupa mais bytes que caracteres visíveis, passando ilicitamente em validações de tamanho máximo ou sendo cortada no meio de um caractere multibyte durante cópia para buffer fixo.

Cómo mitigar

Use funções de cálculo de comprimento sensíveis à codificação (mb_strlen() em PHP, len() em Python com strings nativas, ou APIs específicas da plataforma para UTF-8). Sempre valide e dimensione buffers considerando a codificação real dos dados, não apenas byte count.