Weaknesses of type CWE-46

1 result

Equivalência de caminho: espaço final em nome de arquivo

O sistema não normaliza ou não valida corretamente nomes de arquivo que contêm espaços em branco no final, permitindo que um atacante acesse ou manipule recursos usando caminhos aparentemente diferentes mas equivalentes. Um arquivo 'config.txt ' (com espaço) pode ser tratado de forma distinta de 'config.txt', contornando validações baseadas em nome.

Example

Um filtro de upload bloqueia 'shell.php', mas aceita 'shell.php ' (com espaço final). Em alguns sistemas de arquivo ou servidores web, ambos apontam para o mesmo arquivo, permitindo execução de código quando a validação é apenas por string matching.

How to mitigate

Normalize todos os caminhos de arquivo usando funções nativas do SO (realpath, canonicalize_path) antes de qualquer validação; implemente whitelists de extensões permitidas e valide no nível da API do filesystem, não apenas em strings. Considere remover ou bloquear espaços em branco nas bordas de nomes de arquivo aceitos pelo sistema.