
# Simulatore Python educativo di target per CVE-2026-22807 Simulatore Python educativo di target che replica CVE-2026-22807, una RCE nella supply chain dell'IA tramite TOCTOU nel caricamento dei modelli. Include libreria vulnerabile, script PoC e generazione dinamica di payload per ricerca e didattica sulla sicurezza.
⚠️ Disclaimer / Avvertenza
Questo progetto è destinato esclusivamente a scopi di ricerca e didattica sulla sicurezza, per dimostrare il principio degli attacchi alla supply chain durante il caricamento di modelli AI (Remote Code Execution). Non utilizzare i modelli dannosi generati in ambienti di produzione ed è severamente vietato utilizzare questo progetto per qualsiasi attività di attacco illegale. Gli sviluppatori non si assumono alcuna responsabilità legale derivante da un uso improprio.
Questo è un target range Python leggero, progettato per simulare e riprodurre CVE-2026-22807 (una tipica logica di vulnerabilità nella supply chain AI).
Il target range dimostra il problema di race condition (TOCTOU) quando framework di inferenza AI (come vLLM, Transformers, ecc.) caricano modelli:
se il loader importa prematuramente il codice Python fornito dall'utente per risolvere l'architettura del modello (AutoConfig/AutoModel) prima di verificare trust_remote_code=False, un attaccante può aggirare i controlli di sicurezza e ottenere Remote Code Execution (RCE).
| Nome File | Ruolo | Descrizione |
|---|---|---|
vulnerable_lib.py | 🎯 Vittima | Simula una libreria di caricamento modelli AI vulnerabile (MiniLLM). Contiene l'ordine logico errato. |
poc_dynamic.py | 🔫 Attaccante | Script di attacco automatizzato. Genera la directory del modello dannoso e attiva il processo di caricamento. |
dynamic_evil_model/ | 📦 Payload dannoso | Directory generata automaticamente dopo l'esecuzione dello script, contenente config.json e malicious.py con codice iniettato. |
Assicurarsi di avere Python 3.x installato. Questo target range non ha dipendenze da librerie di terze parti.
Eseguire direttamente lo script di attacco; per impostazione predefinita esegue il comando whoami.
python poc_dynamic.py
Output atteso: Vedrai la console stampare la scritta PWNED e il nome utente corrente del sistema, dopodiché il programma solleverà l'eccezione "Remote code not allowed". Questo dimostra che la difesa è stata aggirata.
Puoi passare qualsiasi comando di sistema come parametro allo script per generare una "bomba" specifica.
Esempio Windows (apre la calcolatrice):
python poc_dynamic.py calc
Esempio Linux/Mac (visualizza un file):
python poc_dynamic.py cat /etc/passwd
Questo target range riproduce il seguente flusso pericoloso:
config.json.auto_map e, per confermare la classe del modello, esegue direttamente l'import tramite importlib del file Python di destinazione.import di Python, l'os.system() al livello superiore del file dannoso viene eseguito immediatamente.trust_remote_code. Sebbene a questo punto intercetti e segnali l'errore, l'attacco è già stato completato.❌ Codice vulnerabile (vulnerable_lib.py):
# 1. Prima attiva il caricamento del codice (l'RCE avviene qui)
self._resolve_model_class()
# 2. Poi esegue il controllo di sicurezza (chiudere la stalla dopo che i buoi sono scappati)
if not self.trust_remote_code:
raise RuntimeError("Aborted!")
✅ Soluzione corretta:
# 1. Prima esegue il controllo di sicurezza
if not self.trust_remote_code and self._needs_remote_code():
raise RuntimeError("Aborted!")
# 2. Solo dopo il superamento del controllo carica il codice
self._resolve_model_class()