Protecting Cryptographic Libraries against Side-Channel and Code-Reuse Attacks
Questo documento analizza le vulnerabilità di sicurezza delle librerie crittografiche più diffuse contro gli attacchi tramite canali laterali e corruzione della memoria, valutando le loro difese attuali e proponendo miglioramenti per i loro processi di sviluppo.
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 le librerie crittografiche come le casseforti high-tech di Internet. Sono gli strumenti software che bloccano le tue password, cifrano i tuoi messaggi e verificano la tua identità. Senza di esse, il nostro mondo digitale sarebbe completamente esposto. Tuttavia, questo documento sostiene che anche le migliori casseforti hanno punti deboli, e le persone che le costruiscono (gli sviluppatori) e gli strumenti che utilizzano per costruirle (i compilatori) non fanno sempre abbastanza per proteggerle.
Ecco una panoramica dei punti principali del documento, utilizzando semplici analogie.
1. I Due Tipi di Ladri
Il documento identifica due modi principali in cui gli attaccanti tentano di forzare queste casseforti digitali:
Il "Ladro con il Cronometro" (Attacchi a Canale Laterale):
Immagina un ladro che non tenta di scassinare la serratura. Invece, si ferma fuori dalla cassaforte e ascolta. Nota che quando la guardia prova una chiave specifica, la porta della cassaforte impiega leggermente più tempo a scattare rispetto a quando prova una chiave sbagliata. Cronometrando queste minuscole differenze, il ladro può capire il codice segreto senza toccare mai la serratura.- Il Punto del Documento: Il codice crittografico spesso presenta passaggi "dipendenti da segreti". Se il codice impiega tempi diversi per essere eseguito in base a una password segreta, un hacker può usare un cronometro per rubare quella password.
Il "Dirottatore Copia-Incolla" (Attacchi di Riuso del Codice):
Immagina una biblioteca dove i libri sono scritti in un linguaggio disordinato e insicuro. Un ladro trova un buco nel pavimento (un errore di memoria) e lascia cadere una bomba che rompe le assi del pavimento. Una volta rotto il pavimento, il ladro non ha bisogno di costruire un'arma nuova; si limita a prendere un martello, un segaccio e una scala che erano già nella stanza di stoccaggio della biblioteca. "Cuce" insieme questi strumenti esistenti per uscire e prendere il controllo dell'edificio.- Il Punto del Documento: Molte librerie sono scritte in linguaggi come C o C++ che permettono errori di memoria. Gli hacker sfruttano questi errori per dirottare il flusso del programma, utilizzando piccoli pezzi di codice innocui già presenti nella libreria per lanciare un attacco massiccio.
2. Lo Stato Attuale della Cassaforte
Gli autori hanno esaminato 11 librerie crittografiche popolari (come OpenSSL, utilizzata da milioni di siti web) per vedere quanto bene siano protette.
- Il Problema del "Cronometro": La maggior parte degli sviluppatori conosce gli attacchi basati sui tempi e cerca di risolverli scrivendo codice che impiega esattamente lo stesso tempo per essere eseguito, indipendentemente dai dati. Tuttavia, il documento ha rilevato che solo 2 librerie su 11 testano effettivamente il loro prodotto finale per assicurarsi che il trucco del "cronometro" non funzioni. È come se uno chef assaggiasse la zuppa prima di servirla, ma dimenticasse di controllare se il sale è effettivamente sciolto.
- Il Problema del "Copia-Incolla": Gli sviluppatori utilizzano strumenti di sicurezza standard (come i "canari dello stack", che sono come trappole) per bloccare gli errori di memoria. Sebbene questi aiutino, non sono perfetti. Il documento ha rilevato che la maggior parte delle librerie non utilizza le impostazioni di sicurezza più robuste disponibili, lasciandole vulnerabili a dirottamenti sofisticati.
3. Il Progetto Rottto (Il Problema del Compilatore)
Questo è il cuore dell'argomento del documento. Gli sviluppatori scrivono il codice (il progetto), ma un compilatore è la macchina che traduce quel progetto nel codice macchina funzionante effettivo.
- Il Conflitto: I compilatori sono progettati per rendere il codice veloce ed efficiente. Sono come un editore molto zelante che vuole tagliare ogni "superfluo" per rendere la storia più breve.
- L'Errore: A volte, il "superfluo" che il compilatore taglia è in realtà una misura di sicurezza. Ad esempio, uno sviluppatore potrebbe scrivere codice extra per garantire che un processo impieghi lo stesso tempo (per fermare il Ladro con il Cronometro). Il compilatore, pensando che questo codice extra sia uno spreco inutile, lo cancella. Il risultato? Il codice è di nuovo veloce, ma il buco di sicurezza è tornato.
4. Nuovi Strumenti per il Lavoro (Compilazione Sicura)
Il documento suggerisce che abbiamo bisogno di un nuovo tipo di "editore" o compilatore che comprenda la sicurezza tanto quanto comprende la velocità. Hanno testato quattro diversi strumenti sperimentali:
- Il "Guardiano" (SecComp): Questo strumento permette agli sviluppatori di contrassegnare determinate parti del codice come "non toccare". Costringe il compilatore a mantenere in vigore le misure di sicurezza. Svantaggio: Non è ancora gratuito da usare.
- Il "Mescolatore" (Multicompiler/MCR): Questo strumento prende il codice e riorganizza i mobili ogni volta che compila il programma. È come spostare il martello e il segaccio in stanze diverse ogni giorno. Se un ladro irrompe, non riesce a trovare gli strumenti di cui ha bisogno perché la disposizione è cambiata. Svantaggio: Rallenta significativamente il programma se usato per fermare il "Ladro con il Cronometro".
- L'"Architetto" (SecDivCon): Questo strumento costruisce il codice con regole di sicurezza incorporate fin dall'inizio, garantendo che il prodotto finale sia sia veloce che sicuro. Svantaggio: Richiede molto tempo per essere costruito e funziona bene solo per compiti piccoli e specifici.
- Il "Linearizzatore" (PCFL): Questo strumento riscrive automaticamente il codice disordinato in una linea dritta e prevedibile che è impossibile cronometrare. Svantaggio: Non ferma gli attacchi del "Dirottatore Copia-Incolla".
5. Il Verdetto Finale
Il documento conclude che siamo attualmente bloccati in un divario tra velocità e sicurezza.
- Gli sviluppatori stanno cercando di scrivere codice sicuro manualmente, ma spesso sbagliano mira.
- I compilatori sono troppo focalizzati sulla velocità e cancellano accidentalmente le funzionalità di sicurezza.
- Gli strumenti attuali sono o troppo lenti, troppo complessi, o non coprono tutti i tipi di attacchi.
La Soluzione: Gli autori chiedono uno sforzo a tre vie:
- I creatori di compilatori devono dare agli sviluppatori più controllo in modo che possano dire: "Non cancellare questa funzionalità di sicurezza, anche se sembra lenta".
- I creatori di compilatori sicuri devono costruire strumenti che gestiscano contemporaneamente gli attacchi basati sui tempi e gli attacchi di dirottamento, non solo l'uno o l'altro.
- Gli sviluppatori di librerie devono smettere di fare affidamento sulla speranza e iniziare a utilizzare questi nuovi strumenti di compilazione più sicuri per garantire che le loro casseforti siano davvero bloccate.
In sintesi: abbiamo i progetti per casseforti sicure, ma le macchine che le costruiscono sono troppo eager a tagliare gli angoli. Dobbiamo insegnare alle macchine a dare priorità alla sicurezza tanto quanto alla velocità.
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.