
Reprodução educacional da vulnerabilidade de travessia de caminho CVE-2026-14628 com exemplos de código vulneráveis e seguros, explicação da correção e demonstrações executáveis para estudar CWE-22.
Uma demonstração mínima e executável da classe de vulnerabilidade Path Traversal(CWE-22), usando o recentemente divulgado CVE-2026-14628 como ponto de referência do mundo real.
CVE-2026-14628 afeta 'NousResearch/hermes-agent' (< 2026.5.16).
A função extract_media em gateway/platforms/base.py constrói um caminho do sistema de arquivos a partir do payload do webhook recebido sem validá-lo, permitindo que um atacante remoto não autenticado leia arquivos fora do diretório de mídia pretendido.
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nhermes-agent. Em vez disso, ele reproduz o padrão exato da vulnerabilidade em um exemplo pequeno e autocontido, para que a falha e sua correção sejam fáceis de estudar e reutilizar como referência ao revisar outros códigos.| Arquivo | Objetivo |
|---|---|
vulnerable_example.py | Reproduz a lógica falha: constrói um caminho por concatenação ingênua de strings, sem validação |
secure_example.py | Versão corrigida: valida se o caminho absoluto resolvido permanece dentro do diretório raiz pretendido |
python3 vulnerable_example.py
A saída mostra o "atacante" lendo com sucesso um arquivo (secret_outside_media_root.txt) que está fora do diretório media_storage/ pretendido, usando uma entrada como ../secret_outside_media_root.txt.
python3 secure_example.py
A mesma entrada maliciosa é rejeitada com um claro PathTraversalError.
Duas defesas complementares são aplicadas em secure_example.py:
.. ou separadores de caminho são rejeitados antes de tocar no sistema de arquivos (falha rápida, erro claro para chamadores legítimos).candidate_path = os.path.abspath(os.path.join(MEDIA_ROOT, filename))
if not candidate_path.startswith(MEDIA_ROOT + os.sep):
raise PathTraversalError(...)
Path traversal é uma das classes de vulnerabilidade mais comuns e mais evitáveis em software que lida com uploads de arquivos, downloads ou qualquer nome de arquivo controlado pelo usuário — handlers de webhook, processadores de mídia, visualizadores de log, motores de template e APIs de fornecimento de arquivos são alvos frequentes. A correção é barata (algumas linhas); o custo de ignorá-la é a divulgação arbitrária de arquivos e, em casos piores (quando combinada com acesso de escrita), execução remota de código.
Este projeto é apenas para fins educacionais. É uma reprodução genérica de uma classe de vulnerabilidade conhecida, não um exploit funcional contra qualquer software específico, ativo ou sem correção. Não use estas técnicas contra sistemas que você não possua ou para os quais não tenha autorização explícita para testar.