Falhas do tipo CWE-273

23 resultados

Verificação inadequada de privilégios removidos

Ocorre quando um programa tenta abrir mão de privilégios elevados (como root), mas não valida se a operação foi bem-sucedida antes de executar operações sensíveis. Se a mudança de usuário ou grupo falhar silenciosamente, o código continua rodando com privilégios altos, abrindo brecha para escalação.

Exemplo

Um daemon que chama setuid(usuário_baixo) para rodar com menos privilégio, mas não verifica o retorno da função. Se setuid() falhar por qualquer razão (limite do sistema, permissão negada), o processo mantém UID 0 e executa arquivo temporário com acesso root, permitindo que um atacante o manipule.

Como mitigar

Sempre verificar o retorno de funções de mudança de privilégios (setuid, setgid, setgroups, etc.) e abortar a execução se falharem. Nunca assumir que a operação sucedeu — valide explicitamente chamando getuid() ou getgid() após a mudança e compare com o valor esperado.