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-22738-POC — Prova de conceito de exploit para CVE-2026-22738, uma injeção crítica de SpEL com RCE no Spring AI SimpleVectorStore, demonstrando execução de comandos do sistema operacional sem autenticação. | Kitploit
Ferramentas/GitHubGitHub/n0n4m3x41/cve-2026-22738-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebPapers e PesquisaAprendizado e Educação
GitHubn0n4m3x41/cve-2026-22738-poc

CVE-2026-22738-POC

Prova de conceito de exploit para CVE-2026-22738, uma injeção crítica de SpEL com RCE no Spring AI SimpleVectorStore, demonstrando execução de comandos do sistema operacional sem autenticação.

Ver Repositório
1324há 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 →
Compartilhar

CVE-2026-22738 — Injeção SpEL RCE no SimpleVectorStore do Spring AI

CVSS CWE Status

Execução remota de código não autenticada via injeção de Spring Expression Language (SpEL) em SimpleVectorStore.similaritySearch().

Versões Afetadas

| Flag | Padrão | Descrição | |---|---|---| | `--target` | `http://localhost:8082` | URL base da aplicação vulnerável | | `--wait` | desativado | Aguarda até que o alvo esteja pronto (útil após `docker compose up`) |
ArtefatoVulnerávelCorrigida
org.springframework.ai:spring-ai-core1.0.0 – 1.0.41.0.5
org.springframework.ai:spring-ai-core1.1.0-M1 – 1.1.31.1.4

Commit da correção: ba9220b22383e430d5f801ce8e4fa01cf9e75f29


Vulnerabilidade

SimpleVectorStore.similaritySearch() passa o nome da chave de filtro fornecida pelo chamador, sem validação, para um template SpEL avaliado por StandardEvaluationContext. Como StandardEvaluationContext expõe toda a API de reflexão da JVM, um atacante pode injetar:

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec(...)

na chave de filtro para obter execução de comandos do sistema operacional sem autenticação.

Detalhes do Bypass

A injeção ingênua não funciona de imediato — duas peculiaridades do parser precisam ser contornadas:

  1. Remoção de aspas simples — uma chave que começa com ' é tratada como string entre aspas; as aspas externas são removidas, corrompendo o payload.
  2. Invólucro de aspas duplas — envolver o payload em "..." faz com que o parser remova as aspas duplas externas, deixando a expressão SpEL interna intacta como o valor da chave passado para #metadata['<KEY>'].
  3. Chave de metadados vazia — usar #metadata[''] em ambos os lados da expressão injetada (em vez de uma variável indefinida) evita o erro SpEL unknown variable enquanto ainda dispara exec().

A expressão avaliada resultante assume a forma:

root@kitploit:~
#metadata[''] + T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/bash','-c','<cmd>'}) + #metadata[''] == 'x'

Indicador de Sucesso

O corpo da resposta HTTP conterá EL1030E — o erro de runtime do SpEL:

root@kitploit:~
operator ADD not supported between null and java.lang.ProcessImpl

Este erro é gerado após o retorno de exec(), confirmando a execução de comandos no nível do sistema operacional sem exigir um callback out-of-band.


Uso

Pré-requisitos:

root@kitploit:~
pip install requests

Executar o exploit:

root@kitploit:~
python3 exploit.py [--target http://localhost:8082] [--wait]
image

Docker Desktop (macOS/Windows): use host.docker.internal em vez de 127.0.0.1 para payloads de callback.


Etapas do Exploit

O PoC executa cinco etapas sequenciais:

EtapaDescrição
1Verificação de linha de base — confirma que o endpoint está acessível e retorna dados semeados
2Sonda SpEL cega — lê java.version via T(java.lang.System) para confirmar o ponto de injeção
3RCE: touch /tmp/pwned_cve_2026_22738 dentro do contêiner
4RCE: grava a saída de id / uname / hostname em /tmp/rce_proof.txt
5Verificação via docker exec — imprime o conteúdo do arquivo de prova

Aviso Legal

Esta prova de conceito é fornecida apenas para fins educacionais e de testes de segurança autorizados. Não use contra sistemas que você não possui ou para os quais não tenha permissão explícita por escrito para testar.

Baixar ferramenta