
Proof-of-concept che dimostra un use-after-free in cldflt.sys (CVE-2025-62221) che consente l'escalation dei privilegi locali a SYSTEM tramite pool grooming del kernel e furto di token.
DIMOSTRAZIONE Prova di Concetto: Incoerenza di Memoria Temporale in cldflt.sys (CVE-2025-62221) CVE-2025-62221:
Questo repository fornisce un'analisi tecnica completa e una dimostrazione Proof-of-Concept (PoC) relativa a un vettore di escalation dei privilegi verticale. La vulnerabilità è identificata come una primitiva Use-After-Free (UAF) residente all'interno del Windows Cloud Files Mini Filter Driver (cldflt.sys). Questa documentazione dettaglia i meccanismi attraverso i quali un'entità non privilegiata in modalità utente può transitare a un contesto di sicurezza Ring 0 (NT AUTHORITY\SYSTEM).
La vulnerabilità CVE-2025-62221 deriva da un fallimento critico nella gestione temporale dei cicli di vita degli oggetti di memoria all'interno del sottosistema esecutivo del kernel di Windows. Nello specifico, il driver cldflt.sys non implementa il conteggio dei riferimenti atomico durante l'elaborazione di richieste I/O asincrone per reparse point basati su cloud. Orchestrando una condizione di race non deterministica tramite routine di dispatch Input/Output Control (IOCTL) malformate, un attore locale può indurre uno scenario di puntatore pendente. Questo stato consente il grooming del pool del kernel, facilitando primitive di scrittura arbitraria e la successiva sostituzione dei token di sicurezza.
La metodologia di sfruttamento è strutturata in diverse fasi distinte:
La procedura inizia con un audit dell'ambiente kernel target per verificare la presenza del modulo cldflt.sys. Calcola inoltre gli offset necessari per la struttura EPROCESS e i campi associati del token di sicurezza relativi alla specifica build di Windows in esecuzione.
L'exploit istanzia una serie di strutture di directory sparse e basate su cloud. Queste strutture fungono da superficie di interazione primaria per il driver filtro, consentendo al manipolatore di influenzare i pattern di allocazione all'interno del Non-Paged Kernel Pool.
Attraverso l'invio di richieste I/O concorrenti e malformate, l'exploit induce uno stato asincrono in cui un oggetto di memoria viene deallocato mentre un riferimento attivo persiste nello stack di esecuzione del driver.
Viene utilizzata una tecnica di Heap Spraying per occupare lo slot di memoria appena liberato. L'exploit popola il pool con strutture dati controllate, trasformando di fatto la condizione "Use-After-Free" in una "Type Confusion" o "Sovrascrittura Controllata del Puntatore".
Dopo aver dirottato con successo l'esecuzione in modalità kernel, il payload esegue un'operazione di Token Stealing. Identifica il processo SYSTEM (PID 4) e replica il suo token di accesso primario nel descrittore di sicurezza del processo exploit.
[!CAUTION] Avvertenza Sperimentale: Questa ricerca è destinata alla validazione accademica e al controllo formale della sicurezza in modalità kernel. Un'implementazione impropria può comportare un Kernel Bug Check (BSOD) o il danneggiamento del filesystem. Tutti i test devono essere condotti in un ambiente ipervisore strettamente isolato.
Inizializza la topologia di rete:
sudo python3 topo.py
Apri terminali per i nodi cloud e utente:
xterm cloud user
Sul terminale cloud, naviga nella directory del progetto e avvia il server:
cd ~/Downloads/sps_test
python3 server.py
Sul terminale utente, esegui lo script exploit automatizzato (opzionale):
python3 run_all.py
In alternativa, esegui ogni fase manualmente per un'osservazione granulare.
Esegui le seguenti procedure sequenzialmente all'interno del terminale utente per osservare le transizioni di stato della memoria:
Step 1 — FileObject allocato | REF=ref-12345
python3 1.py
Step 2 — Oggetto liberato
python3 2.py
Step 3 — RIFERIMENTO PENDENTE
python3 3.py
Step 4 — Riuso dell'heap
python3 4.py
Step 5 — Handler sovrascritto
python3 5.py
Step 6 — HANDLER MALIGNO ESEGUITO
python3 6.py
Nota: In caso di pivot riuscito alla fase 6, il sistema eseguirà la sequenza di comandi malevoli definita in malware.json. Osserverai messaggi di esecuzione sul terminale cloud e riceverai il comando malware sul terminale utente.
La documentazione e il codice contenuti in questo repository sono forniti esclusivamente per il progresso della ricerca sulla sicurezza informatica. L'autore non si assume alcuna responsabilità per danni derivanti dall'uso di queste informazioni. L'obiettivo di questa ricerca è facilitare una comprensione completa delle vulnerabilità dei Mini Filter Driver e valutare l'efficacia delle strategie di mitigazione esistenti.
Riferimento: Microsoft Security Response Center (MSRC) - CVE-2025-62221
Realizzato per l'assegnazione SPS UPB 2026
| Parametro | Specifica |
|---|
| Classe di Vulnerabilità | Corruzione della Memoria Temporale / Use-After-Free (CWE-416) |
| Sottosistema Target | Windows Cloud Files Mini Filter (cldflt.sys) |
| Primitiva di Sfruttamento | Kernel Pool Grooming ed Exfiltrazione di Token |
| Confine di Privilegio | Utente a Kernel / Utente Standard a SYSTEM |
| Vettore CVSS v3.1 | AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (Punteggio Base: 7.8) |
| Contesto Temporale | Identificato Q4 2025; Patch di Rimediazione Rilasciata Gennaio 2026 |
| File | Utilizzo |
|---|
| topo.py | Script di orchestrazione Mininet che definisce il confine di rete |
| server.py | Servizio driver cldflt.sys simulato che incorpora la logica UAF |
| run_all.py | Script di sfruttamento automatizzato per test efficienti |
| user.py | Script di sfruttamento automatizzato alternativo |
| 1.py attraverso 6.py | Fasi di sfruttamento discrete fornite per analisi tecnica granulare |
| malware.json | Payload malevolo utilizzato per dimostrare la primitiva di esecuzione del codice: Payload malevolo utilizzato per dimostrare la primitiva di esecuzione del codice |