CVE-2024-36971 — Proof of Concept (Solo Ricerca e Analisi)
⚠️ DICHIARAZIONE DI NON RESPONSABILITÀ — LEGGERE PRIMA DI UTILIZZARE QUESTO REPOSITORY
Questo repository è destinato esclusivamente a ricerca difensiva, analisi e segnalazione responsabile.
Contiene un file proof of concept non sfruttabile denominato CVE-2024-36971 e uno snippet pubblico dell'header del kernel Android (sock.h) per illustrare l'area interessata.
Non vengono forniti codice di exploit, comandi di riproduzione o istruzioni passo-passo. Non eseguire alcun file da questo repository su dispositivi di produzione, sistemi di terze parti o reti che non controlli. L'autore declina ogni responsabilità per un uso improprio.
Indice
- Panoramica
- Contenuti del repository
- Riepilogo tecnico di alto livello
- Informazioni sullo snippet
sock.h incluso
- Ambiente di ricerca (alto livello, non attuabile)
- Risultato osservato (dispositivo testato)
- Divulgazione responsabile e contatti
- Avviso legale ed etico
1. Panoramica
CVE-2024-36971 è una vulnerabilità Use-After-Free (UAF) nel sottosistema di rete del kernel Android. La causa principale è un ordine non sicuro delle operazioni nella gestione della cache di destinazione (dst) utilizzata dal routing dei socket (sk->sk_dst_cache), che può lasciare un puntatore dangling accessibile a percorsi di codice concorrenti. Questo repository documenta un PoC di ricerca difensiva che dimostra l'impatto (instabilità del kernel e corruzione dei dati) senza fornire primitive di exploit.
Questo README spiega cosa dimostra il PoC, perché lo snippet sock.h incluso è rilevante e i vincoli responsabili riguardanti test e condivisione.
2. Contenuti del repository
CVE-2024-36971 — File sorgente del PoC (mantenuto nel repository per trasparenza). Non destinato all'esecuzione; incluso solo per scopi di archiviazione/analisi.
sock.h — snippet pubblico dell'header del kernel Android che mostra le strutture socket/destinazione e gli helper pertinenti al problema.
README.md — questo file (documentazione e guida).
3. Riepilogo tecnico di alto livello (non attuabile)
- Causa principale: ordine improprio nella gestione dei riferimenti e rilascio degli oggetti
dst nel percorso del codice della cache di routing/destinazione, che consente un Use-After-Free (UAF).
- Vettore di attivazione (alto livello): un percorso di rete che esercita
__dst_negative_advice() / il percorso del codice della cache di destinazione nel kernel può causare la condizione UAF. Questo repository non fornisce istruzioni per attivarlo.
- Impatto osservato: corruzione della memoria del kernel, instabilità e, in circostanze testate, corruzione dei metadati di archiviazione che porta a uno stato di avvio "data corrupted" (soft-brick).
- Stato di sfruttabilità: il PoC dimostra l'impatto e conferma la presenza di un bug critico del kernel. La corruzione osservata nei test è stata non deterministica e distruttiva, non uno sfruttamento stabile e affidabile per l'esecuzione di codice. Trasformare il bug in uno sfruttamento affidabile richiederebbe una manipolazione avanzata dell'heap e il controllo dell'allocatore — tale lavoro è al di fuori dello scopo di questo repository e non viene fornito.
L'header sock.h è un header del kernel disponibile pubblicamente (proveniente dagli alberi del kernel Android) che contiene:
- definizioni per
struct sock e strutture di rete correlate;
- riferimenti a
sk_dst_cache (la cache di destinazione del socket) e helper per ottenere/impostare i riferimenti di destinazione;
- pattern di accesso RCU/refcount e uso di
dst_release().
Questo snippet è incluso per mostrare le strutture e le posizioni del codice esatte che contestualizzano CVE-2024-36971. L'header supporta la spiegazione in questo README mostrando i campi dati e le funzioni il cui ordinamento o sincronizzazione è critico per la correttezza.
5. Ambiente di ricerca (alto livello, non attuabile)
Nota: Quanto segue è un elenco di capacità e strumenti tipici utilizzati dai ricercatori di sicurezza in un laboratorio controllato. È intenzionalmente non attuabile — nessun comando, nessuno script, nessun valore di parametro.
Capacità raccomandate per una ricerca sicura e isolata sul kernel:
- Una rete di test isolata o laboratorio air-gapped per garantire nessun impatto accidentale su sistemi di terze parti.
- Hardware di test dedicato di tua proprietà e che puoi completamente reflash/resettare (non utilizzare dispositivi di produzione o di terze parti).
- Virtualizzazione (es. QEMU/KVM) per costruire e debuggare immagini del kernel in un ambiente controllato.
- L'albero sorgente del kernel Android e un ambiente di build locale per compilare kernel instrumentati/debug e generare mappe dei simboli.
- Strumenti e flussi di lavoro di debug/logging:
adb/fastboot per l'accesso al dispositivo, raccolta di dmesg/last_kmsg e strumenti per mappare gli indirizzi del kernel alle righe di origine (file dei simboli, addr2line, ecc.).
- Debug del kernel e sanitizer (se appropriati) come KASAN/KMSAN, ftrace e altre funzionalità di tracciamento per rilevare violazioni della sicurezza della memoria senza tentare lo sfruttamento.
- Raccolta e archiviazione sicura degli artefatti per log, backtrace e prove fotografiche.
6. Risultato osservato (dispositivo testato)
- Dispositivo testato: Nothing Phone (1) — dispositivo di proprietà e controllato dal ricercatore. Il dispositivo eseguiva una revisione del kernel che non includeva la correzione al momento del test.
- Contesto del test: il PoC è stato eseguito dalla stessa rete locale del dispositivo target in un ambiente di test isolato.
- Risultato: dopo molteplici invii del traffico PoC, il dispositivo ha subito una grave corruzione della memoria del kernel. La corruzione si è propagata ai metadati di archiviazione e il dispositivo si è avviato con un errore che indicava "data corrupted". Il dispositivo ha richiesto riparazione/reflash per tornare a uno stato utilizzabile (soft-brick).
- Avvertenza importante: questo comportamento è stato distruttivo e non deterministico; il PoC ha prodotto corruzione e perdita di dati piuttosto che una primitiva affidabile per l'esecuzione di codice. Il ricercatore ha interrotto i test dopo aver osservato il comportamento distruttivo — l'obiettivo era verificare l'impatto, non sviluppare uno sfruttamento funzionante.
7. Divulgazione responsabile e contatti
Questo progetto segue i principi di divulgazione responsabile. Se sei un fornitore, un manutentore o un contatto di sicurezza e hai bisogno di artefatti diagnostici non attuabili aggiuntivi (backtrace completi, log sanificati o dump forensi) per validare o risolvere il problema, contatta il proprietario del repository tramite un canale sicuro. Gli approcci preferiti includono:
- aprire un issue privato su GitHub e indicare un canale di comunicazione sicuro, oppure
- contatto diretto tramite email crittografata con PGP (fornisci la tua chiave pubblica o richiedi la chiave del ricercatore).
Il ricercatore collaborerà con fornitori/manutentori validati e condividerà ulteriore materiale diagnostico in termini sicuri e appropriati. I passaggi di riproduzione riproducibili non verranno pubblicati pubblicamente.
8. Avviso legale ed etico
- Questo repository è fornito così com'è esclusivamente per scopi di ricerca, educativi e difensivi.
- L'autore non approva l'uso malevolo e declina ogni responsabilità per qualsiasi uso improprio.
- Non utilizzare i materiali contenuti su sistemi che non possiedi o gestisci.
- Segui sempre le leggi applicabili, le politiche istituzionali e i processi di divulgazione coordinata con i fornitori.