Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-12243-NLTK-PoC — Laboratório Docker demonstrando o path traversal CVE-2026-12243 no NLTK anterior à versão 3.10.0, contrastando o comportamento vulnerável e o corrigido com um segredo sintético em um ambiente isolado e offline. | Kitploit
Ferramentas/GitHubGitHub/morzelowski/cve-2026-12243-nltk-poc
Segurança de ContêineresAnálise de VulnerabilidadesSegurança WebAprendizado e EducaçãoLabs e Prática
GitHubmorzelowski/cve-2026-12243-nltk-poc

CVE-2026-12243-NLTK-PoC

Laboratório Docker demonstrando o path traversal CVE-2026-12243 no NLTK anterior à versão 3.10.0, contrastando o comportamento vulnerável e o corrigido com um segredo sintético em um ambiente isolado e offline.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
há 9h 25mAinda não revisado

CVE-2026-12243 — Laboratório de Path Traversal no NLTK

CVE NLTK Lab License

Um laboratório Docker pequeno e reproduzível que contrasta o comportamento de path traversal com codificação percentual no NLTK 3.9.4 com o comportamento corrigido no NLTK 3.10.0.

A versão vulnerável valida o nome do recurso antes da decodificação da URL. O payload fixo %2e%2e/%2e%2e/outside/lab-secret.txt passa na verificação, é posteriormente decodificado para ../../outside/lab-secret.txt e escapa tanto do diretório de dados do NLTK configurado quanto do diretório de trabalho do processo. A versão corrigida rejeita a mesma entrada.

[!CAUTION] Este repositório destina-se apenas à educação defensiva e a testes autorizados. O laboratório usa um segredo sintético fixo dentro de um contêiner isolado. Não o adapte para acessar sistemas ou dados que você não possua ou para os quais não tenha permissão explícita de teste.

Resumo

ContêinerVersão do NLTKResultado esperado
vulnerable3.9.4Lê o marcador sintético fora de /lab/nltk_data
patched

Nenhum download de corpus, servidor, porta, bind mount ou conexão de internet em tempo de execução é utilizado.

Pré-requisitos

  • Docker Engine ou Docker Desktop
  • Docker Compose v2 (docker compose)
  • Um shell POSIX para run.sh

Uso

root@kitploit:~
git clone https://github.com/morzelowski/CVE-2026-12243-NLTK-PoC.git
cd CVE-2026-12243-NLTK-PoC
docker compose build
./run.sh

Resultado esperado:

root@kitploit:~
=== Vulnerable image: NLTK 3.9.4 ===
NLTK version       : 3.9.4
Working directory  : /app
Configured data dir: /lab/nltk_data
Encoded resource   : %2e%2e/%2e%2e/outside/lab-secret.txt
Decoded resource   : ../../outside/lab-secret.txt
Resolved candidate : /outside/lab-secret.txt
NLTK warning       : Security Violation [pathsec.open]: Unauthorized path /outside/lab-secret.txt
NLTK result        : read 36 bytes
Synthetic marker   : CVE-2026-12243-SYNTHETIC-LAB-MARKER
[PASS] Traversal escaped the configured NLTK data directory.

=== Patched image: NLTK 3.10.0 ===
NLTK version       : 3.10.0
NLTK result        : blocked (ValueError: Unsafe resource path: '...')
[PASS] Patched version rejected the same encoded traversal.

Lab completed: traversal reproduced and patched rejection verified.

A imagem afetada informa que /outside/lab-secret.txt não é autorizado, mas ainda retorna seu conteúdo porque o NLTK 3.9.4 usa segurança de caminho apenas com avisos por padrão. O texto de exceções e avisos pode variar ligeiramente; run.sh usa o status de saída do processo, não uma correspondência frágil de texto, para decidir se a demonstração passou.

Como a demonstração funciona

Cada imagem contém este layout deliberadamente separado:

root@kitploit:~
/
├── app/
│   └── poc.py          # process CWD is /app
├── lab/
│   └── nltk_data/      # configured NLTK search root
└── outside/
    └── lab-secret.txt  # public synthetic marker

poc.py substitui nltk.data.path por /lab/nltk_data e passa o nome de recurso fixo %2e%2e/%2e%2e/outside/lab-secret.txt para nltk.data.load(..., format="raw"). Na versão afetada, a decodificação ocorre tarde demais no fluxo de validação:

root@kitploit:~
/lab/nltk_data
      ↓  ../../outside/lab-secret.txt
/outside/lab-secret.txt

Como o diretório de trabalho é /app, o canário está fora de ambos os locais que importam para a demonstração: /app e /lab/nltk_data.

O script tem duas asserções explícitas:

  1. O NLTK 3.9.4 deve retornar o marcador sintético conhecido.
  2. O NLTK 3.10.0 deve rejeitar exatamente o mesmo nome de recurso.

Qualquer outro resultado sai com código não zero, portanto verificações automatizadas não podem relatar um falso sucesso.

Modelo de segurança

A configuração do Compose limita intencionalmente o laboratório:

  • network_mode: none desativa a rede enquanto qualquer demonstração é executada.
  • Nenhuma porta do host é publicada.
  • Nenhum diretório do host ou socket do Docker é montado.
  • Os contêineres são executados como um usuário sem privilégios, com todas as capacidades Linux removidas e no-new-privileges habilitado.
  • O sistema de arquivos raiz é somente leitura; apenas um pequeno sistema de arquivos temporário noexec é gravável.
  • O único valor divulgado é fixtures/lab-secret.txt, um marcador de teste público copiado para a imagem durante o build.

O build da imagem precisa de acesso ao índice de pacotes para instalar as duas versões fixadas do NLTK. A execução em tempo de execução é offline.

Detalhes técnicos

  • CVE: CVE-2026-12243
  • GHSA: GHSA-m42h-3232-vpv3
  • Fraqueza: CWE-22 — path traversal
  • Afetado: versões do NLTK anteriores a 3.10.0
  • Corrigido: NLTK 3.10.0
  • Impacto: divulgação de arquivos legíveis pelo processo da aplicação quando um atacante controla um nome de recurso fornecido a nltk.data.load() ou nltk.data.find()

O laboratório fixa a versão 3.9.4 porque é a versão concreta mencionada no relatório original e a 3.10.0 porque é a primeira versão corrigida registrada pelo aviso do mantenedor.

Mitigação

Atualize o NLTK e mantenha-o atualizado:

root@kitploit:~
python -m pip install "nltk>=3.10.0"

Evite também passar nomes de recursos não confiáveis para APIs de carregamento de arquivos. Quando a seleção pelo usuário for necessária, mapeie identificadores voltados ao usuário para uma lista de permissões de recursos de propriedade da aplicação, em vez de aceitar caminhos ou URLs diretamente.

Comandos manuais

Execute cada lado de forma independente:

root@kitploit:~
docker compose run --rm vulnerable
docker compose run --rm patched

Inspecione a configuração do Compose totalmente resolvida:

root@kitploit:~
docker compose config

Remova as imagens do laboratório construídas localmente:

root@kitploit:~
docker compose down --rmi local

Solução de problemas

  • permission denied: ./run.sh — execute chmod +x run.sh uma vez.
  • docker: command not found — instale o Docker Desktop ou o Docker Engine.
  • Erros de download de pacotes durante o build — confirme que o Docker tem acesso de saída temporário para o build e tente novamente com docker compose build --no-cache.

Referências

  • Aviso do mantenedor no GitHub GHSA-m42h-3232-vpv3
  • Entrada NVD para CVE-2026-12243
  • Issue original do NLTK #3504
  • Pull request de correção do NLTK #3522
  • Commit da correção aec4fce

Licença

Publicado sob a Licença MIT.

Baixar ferramenta
3.10.0
Bloqueia o traversal codificado