Falhas do tipo CWE-1389

6 resultados

Análise incorreta de números em diferentes bases numéricas

Ocorre quando o código interpreta números em bases diferentes (decimal, hexadecimal, octal) de forma incorreta ou inconsistente. Um número que deveria ser lido como octal é processado como decimal (ou vice-versa), causando lógica de negócio errada, bypass de validações ou vulnerabilidades de autorização.

Exemplo

Um firewall ou validador recebe '0777' e o interpreta como decimal 777 em vez de octal 511 (0777 = 511 em base 8); um atacante consegue contornar uma regra de permissão porque o número foi calculado errado. Ou um parser de configuração trata '0x10' como string em vez de hexadecimal 16, armazenando o valor errado no banco.

Como mitigar

Sempre use parsers de números explícitos que declaram a base (ex: Integer.parseInt(str, 10) ou int(str, base=10) em Python); valide o formato antes de conversão e padronize a entrada para evitar notações ambíguas. Testes unitários com múltiplas bases são essenciais para detectar essas interpretações erradas.