Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-12243-NLTK-PoC — # Laboratoire Docker démontrant le CVE-2026-12243 — traversée de chemin dans NLTK avant la version 3.10.0, comparant le comportement vulnérable et corrigé avec un secret synthétique dans un environnement isolé et hors ligne. | Kitploit
Outils/GitHubGitHub/morzelowski/cve-2026-12243-nltk-poc
Sécurité des ConteneursAnalyse des VulnérabilitésSécurité WebApprentissage et ÉducationLabs et Pratique
GitHubmorzelowski/cve-2026-12243-nltk-poc

CVE-2026-12243-NLTK-PoC

# Laboratoire Docker démontrant le CVE-2026-12243 — traversée de chemin dans NLTK avant la version 3.10.0, comparant le comportement vulnérable et corrigé avec un secret synthétique dans un environnement isolé et hors ligne.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
il y a 9h 25mPas encore vérifié

CVE-2026-12243 — Laboratoire de traversée de chemin NLTK

CVE NLTK Lab License

Un petit laboratoire Docker reproductible qui compare le comportement de traversée de chemin encodé en pourcentage dans NLTK 3.9.4 avec le comportement corrigé dans NLTK 3.10.0.

La version vulnérable valide le nom de la ressource avant le décodage d'URL. La charge utile fixe %2e%2e/%2e%2e/outside/lab-secret.txt passe la vérification, est ensuite décodée en ../../outside/lab-secret.txt, et s'échappe à la fois du répertoire de données NLTK configuré et du répertoire de travail du processus. La version corrigée rejette la même entrée.

[!CAUTION] Ce dépôt est destiné uniquement à l'éducation défensive et aux tests autorisés. Le laboratoire utilise un secret synthétique fixe dans un conteneur isolé. Ne l'adaptez pas pour accéder à des systèmes ou des données que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.

En un coup d'œil

ConteneurVersion NLTKRésultat attendu
vulnerable3.9.4Lit le marqueur synthétique hors de /lab/nltk_data
patched

Aucun téléchargement de corpus, serveur, port, montage bind, ni connexion internet au moment de l'exécution n'est utilisé.

Prérequis

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

Utilisation

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

Résultat attendu :

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'image affectée signale que /outside/lab-secret.txt n'est pas autorisé mais renvoie quand même son contenu car NLTK 3.9.4 utilise une sécurité de chemin avec simple avertissement par défaut. Le texte des exceptions et des avertissements peut varier légèrement ; run.sh utilise le code de sortie du processus, et non une correspondance textuelle fragile, pour décider si la démonstration a réussi.

Comment fonctionne la démonstration

Chaque image contient cette disposition délibérément séparée :

root@kitploit:~
/
├── app/
│   └── poc.py          # le répertoire de travail du processus est /app
├── lab/
│   └── nltk_data/      # racine de recherche NLTK configurée
└── outside/
    └── lab-secret.txt  # marqueur synthétique public

poc.py remplace nltk.data.path par /lab/nltk_data et transmet le nom de ressource fixe %2e%2e/%2e%2e/outside/lab-secret.txt à nltk.data.load(..., format="raw"). Dans la version affectée, le décodage se produit trop tard dans le flux de validation :

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

Comme le répertoire de travail est /app, le canari se trouve en dehors des deux emplacements qui comptent pour la démonstration : /app et /lab/nltk_data.

Le script comporte deux assertions explicites :

  1. NLTK 3.9.4 doit renvoyer le marqueur synthétique connu.
  2. NLTK 3.10.0 doit rejeter exactement le même nom de ressource.

Tout autre résultat se termine avec un code de sortie non nul, de sorte que les vérifications automatisées ne peuvent pas signaler un faux succès.

Modèle de sécurité

La configuration Compose limite intentionnellement le laboratoire :

  • network_mode: none désactive la mise en réseau pendant l'exécution de chaque démonstration.
  • Aucun port hôte n'est publié.
  • Aucun répertoire hôte ni socket Docker n'est monté.
  • Les conteneurs s'exécutent avec un utilisateur non privilégié, toutes les capacités Linux étant supprimées et no-new-privileges activé.
  • Le système de fichiers racine est en lecture seule ; seul un petit système de fichiers temporaire noexec est accessible en écriture.
  • La seule valeur divulguée est fixtures/lab-secret.txt, un marqueur de test public copié dans l'image lors de la construction.

La construction de l'image nécessite un accès à l'index des paquets pour installer les deux versions épinglées de NLTK. L'exécution au moment de l'exécution est hors ligne.

Détails techniques

  • CVE : CVE-2026-12243
  • GHSA : GHSA-m42h-3232-vpv3
  • Faiblesse : CWE-22 — traversée de chemin
  • Affecté : versions de NLTK antérieures à 3.10.0
  • Corrigé : NLTK 3.10.0
  • Impact : divulgation de fichiers lisibles par le processus applicatif lorsqu'un attaquant contrôle un nom de ressource fourni à nltk.data.load() ou nltk.data.find()

Le laboratoire épingle 3.9.4 car c'est la version concrète nommée dans le rapport d'origine et 3.10.0 car c'est la première version corrigée enregistrée par l'avis du mainteneur.

Atténuation

Mettez à niveau NLTK et maintenez-le à jour :

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

Évitez également de transmettre des noms de ressources non fiables aux API de chargement depuis le système de fichiers. Lorsqu'une sélection par l'utilisateur est requise, mappez les identifiants visibles par l'utilisateur vers une liste blanche de ressources appartenant à l'application au lieu d'accepter directement des chemins ou des URL.

Commandes manuelles

Exécutez chaque côté indépendamment :

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

Inspectez la configuration Compose entièrement résolue :

root@kitploit:~
docker compose config

Supprimez les images de laboratoire construites localement :

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

Dépannage

  • permission denied: ./run.sh — exécutez chmod +x run.sh une fois.
  • docker: command not found — installez Docker Desktop ou Docker Engine.
  • Erreurs de téléchargement de paquets pendant la construction — vérifiez que Docker dispose d'un accès sortant temporaire pour la construction, puis réessayez docker compose build --no-cache.

Références

  • Avis du mainteneur GitHub GHSA-m42h-3232-vpv3
  • Entrée NVD pour CVE-2026-12243
  • Problème NLTK d'origine #3504
  • Demande de tirage du correctif NLTK #3522
  • Commit du correctif aec4fce

Licence

Publié sous la licence MIT.

Télécharger l’outil
3.10.0
Bloque la traversée encodée