VUPER: Verified ASN.1 UPER Parser
Questo articolo presenta VUPER, un framework che genera parser e serializzatori ASN.1 UPER formalmente verificati e bit-precisi, i quali sono stati utilizzati per scoprire 20 tipi di incongruenze e vulnerabilità di sicurezza concrete in popolari parser open-source e commerciali attraverso il testing dinamico su protocolli 5G e V2X.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Immagina Internet e i nostri telefoni cellulari come una città enorme e frenetica dove miliardi di messaggi sfrecciano tra gli edifici ogni secondo. Per mantenere questa città operativa, questi messaggi hanno bisogno di un linguaggio universale, così che un telefono a New York possa parlare con una torre a Tokyo senza confondersi. Questo linguaggio è chiamato ASN.1, ed è come la grammatica e il vocabolario che dicono ai computer esattamente come impacchettare le informazioni in minuscole, efficienti scatole digitali. Ma ecco la parte complicata: per risparmiare spazio e velocizzare le cose, queste scatole sono impacchettate così strettamente che non sono nemmeno allineate a file ordinati di byte (come le parole standard del computer); invece, sono compresse fino all'ultimo bit, la più piccola particella di dati. Questo specifico metodo di impacchettamento super-stretto è chiamato UPER.
Il problema è che scrivere un traduttore (o "parser") per spacchettare queste minuscole scatole a livello di bit è incredibilmente difficile. Se il traduttore commette anche un solo piccolo errore — come leggere male un singolo bit o dimenticare una regola su come gestire nuove informazioni sconosciute — può causare il crash dell'intero sistema, la fuga di segreti o permettere agli hacker di infiltrarsi. Per anni, gli ingegneri hanno cercato di correggere questi errori testando i traduttori con milioni di messaggi casuali, sperando di catturare i bug. Ma questo è come cercare un ago in un pagliaio scuotendo semplicemente la paglia; potresti trovare alcuni aghi, ma non potrai mai essere sicuro di averli trovati tutti, o che quelli che hai trovato siano effettivamente quelli veri.
Entra in scena VUPER, uno strumento creato dai ricercatori della Penn State che cambia le regole del gioco. Invece di limitarsi a scuotere il pagliaio, VUPER costruisce un traduttore matematicamente perfetto da zero. Immagina di creare un dizionario e un libro di grammatica "gold standard" che sia provato da un matematico informatico come 100% corretto. I ricercatori hanno usato questo traduttore perfetto per testare altri 11 popolari parser utilizzati nelle reti 5G reali e nei sistemi di comunicazione veicolare. Hanno scoperto che molti di questi traduttori ampiamente utilizzati erano in realtà piuttosto non conformi, mancando di 20 tipi diversi di regole. In alcuni casi, questa non conformità ha permesso agli hacker di mandare in crash i telefoni o di ingannare le reti per inviare messaggi non criptati. VUPER dimostra che, sebbene non sempre si possa fidare dei traduttori che abbiamo, possiamo ora costruirne di quali siano matematicamente garantiti per essere sicuri, e usarli per riparare quelli difettosi.
La storia di VUPER: Costruire il traduttore perfetto
Nel mondo delle reti informatiche, i dati sono come un lungo flusso d'acqua che scorre attraverso i tubi. Per inviare un messaggio, un computer "serializza" il dato, comprimendolo in un flusso compatto di bit. Per riceverlo, un altro computer "analizza" (parse) il flusso, comprimendo i bit nuovamente in un messaggio leggibile. Nel mondo ad alta posta in gioco delle reti cellulari 5G e della comunicazione vehicle-to-everything (V2X), questo processo utilizza un insieme specifico di regole chiamato UPER (Unaligned Packed Encoding Rules). È chiamato "unaligned" (non allineato) perché non si cura dei puliti confini di byte; impacchetta i dati il più strettamente possibile, bit per bit, per risparmiare larghezza di banda.
La sfida è che il manuale ufficiale per l'UPER è scritto in un testo descrittivo denso, non in codice. Questo lascia gli ingegneri a indovinare come implementare le regole, portando a errori sottili. I ricercatori dietro VUPER hanno deciso di smettere di indovinare. Hanno costruito un framework che dimostra formalmente che il parser è corretto. Non si sono limitati a scrivere codice sperando che funzionasse; hanno usato uno potente strumento matematico chiamato Rocq prover per verificare ogni singolo passaggio della logica.
Il test del "Round-Trip"
Per capire come funziona VUPRE, immagina di avere un traduttore magico che trasforma un libro in un codice segreto e viceversa. Un test "round-trip" significa che prendi una frase, la trasformi in codice e poi trasformi quel codice di nuovo in una frase. Se ottieni esattamente la stessa frase, il traduttore sta funzionando.
Tuttavia, l'UPER ha un colpo di scena speciale: le estensioni. Mentre la tecnologia evolve (come il passaggio dal 4G al 5G), vengono aggiunte nuove funzionalità ai messaggi. Un vecchio traduttore deve essere in grado di leggere un nuovo messaggio, ignorare le parti nuove che non capisce e comunque dare senso alle parti vecchie. Questo è chiamato compatibilità in avanti (forward compatibility). VUPER gestisce questo processo dimostrando due cose:
- Round-Trip Stretto: Se il messaggio proviene dalla stessa versione, il traduttore deve trasformarlo di nuovo nell'esatto identico schema di bit. Nessun bit extra, nessun bit mancante.
- Round-Trip Debole: Se il messaggio contiene nuove estensioni sconosciute, il traduttore può saltarle, ma deve comunque essere in grado di trasformare le parti note in un messaggio valido. Non deve corrispondere esattamente al bit originale (perché le parti sconosciute sono scomparse), ma non deve corrompere il resto.
Trovare i Bug
I ricercatori hanno costruito un "oracolo fidato" — un parser perfetto generato da VUPER — e lo hanno usato per testare altri 11 parser. Questi includevano 7 strumenti open-source (come asn1c e pycrate) e 4 parser commerciali utilizzati all'interno di vere stazioni base 4G e 5G (l'hardware che collega il tuo telefono alla rete).
Non hanno solo inviato spazzatura casuale; hanno utilizzato un "fuzzer" intelligente che comprendeva la struttura dei messaggi per creare milioni di casi di test complicati. Quando hanno confrontato i risultati, hanno trovato 20 tipi diversi di incongruenze negli altri parser.
Ecco alcune delle scoperte più interessanti:
- Il problema del "Troppo Lungo": Alcuni parser accettavano numeri troppo grandi per lo spazio allocato, o lunghezze che non corrispondevano ai dati. È come un postino che accetta una lettera che dice "Ho 5 pagine" ma ne contiene effettivamente 100, causando un traboccamento della cassetta delle lettere e il crash del sistema.
- La confusione della "Estensione Sconosciuta": Quando un messaggio conteneva nuove funzionalità che il vecchio parser non conosceva, alcuni parser si confondevano e iniziavano a leggere la parte sbagliata del messaggio, pensando fosse qualcos'altro interamente. È come un traduttore che vede una nuova parola in una lingua straniera, si confonde e poi traduce il resto della frase in modo errato.
- L'errore del "Valore di Default": Le regole dicono che se un valore è quello "di default", non dovrebbe nemmeno essere inviato per risparmiare spazio. Ma alcuni parser stavano ancora inviando tali valori, o non riuscivano a riconoscere quando mancano.
Il pericolo nel mondo reale
Il documento non si è limitato a trovare bug teorici; ha dimostrato come questi potessero essere sfruttati. I ricercatori hanno presentato quattro attacchi concreti:
- Crash di un Telefono: Inviando un messaggio con una lista di ID di rete leggermente troppo lunga (violando un vincolo), hanno causato il crash del software di un telefono, portando a un Denial of Service (DoS).
- Crash di una Torre: Una stazione base compromessa potrebbe inviare un messaggio malformato a un'altra stazione, causando il crash della seconda stazione mentre tenta di elaborarlo.
- Fuga di Segreti: Se un parser interpreta male un messaggio a causa di un'estensione sconosciuta, potrebbe pensare che un'impostazione di sicurezza sia "spenta" quando in realtà è "accesa", o viceversa. Ciò potrebbe portare a una situazione in cui un telefono pensa di comunicare in modo sicuro, mentre la rete sta in realtà inviando dati in chiaro, permettendo agli intercettatori di leggerli.
- Fingerprinting del Dispositivo: Poiché diversi parser gestiscono gli errori in modi differenti, un hacker potrebbe inviare specifici messaggi "truccati" e osservare come reagisce il dispositivo. Se il dispositivo accetta un messaggio strano, l'hacker sa che utilizza una specifica marca di hardware (come un baseband Samsung), permettendogli di colpire quel dispositivo specifico con exploit noti.
Prestazioni e Futuro
I ricercatori ammettono che il loro parser perfetto, matematicamente verificato, non è il più veloce in circolazione. È circa 4 volte più lento delle librerie C altamente ottimizzate attualmente utilizzate nel settore. Tuttavia, è 4 volte più veloce dei parser basati su Python.
L'obiettivo di VUPER non è sostituire immediatamente i parser veloci, ma servire come implementazione di riferimento. Proprio come uno chef maestro può assaggiare un piatto e dirti esattamente cosa c'è che non va nella ricetta, VUPER può dire agli ingegneri esattamente dove i loro parser stanno fallendo. I ricercatori sperano che, usando VUPER per trovare e correggere questi bug, l'industria possa eventualmente costruire parser che siano sia veloci che matematicamente garantiti per essere sicuri.
In definitiva, VUPER dimostra che nel mondo complesso e ad alta velocità del 5G e oltre, non possiamo più affidarci a test "abbastanza buoni". Abbiamo bisogno di traduttori matematicamente provati per mantenere la nostra città digitale sicura, protetta e in funzione senza intoppi.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.