Linux: in una implementazione di LUKS c’è una falla di sicurezza

0

luks-logo

Una delle caratteristiche che più apprezziamo dell’OpenSource è la sicurezza: se c’è un problema nel codice, chiunque può accertarlo e correggerlo. Ma dare accesso al codice non vuol dire avere qualcuno che davvero lo legga, e quindi alcuni errori, sebbene lampanti, rimangono in giro per molto tempo.

LUKS (ne abbiamo già parlato) è un sistema molto potente per crittografare il proprio hard disk; come spesso accade con le grandi distribuzioni, viene fornito con degli script che ne rendono semplice e automatico l’utilizzo. La distribuzione in questione è Debian (con le sue derivate, in primis Ubuntu), e gli script incriminati (cryptsetup) si occupano di chiedere la password per decriptare il disco prima di montarlo; questi script sono inglobati in un initramfs, ovvero un mini-sistema Linux progettato per caricare il sistema principale o fornire un minimo di assistenza in caso di errore.

Lo script bucato in effetti fornisce questa assistenza: al trentesimo tentativo fallito di inserimento della password, il sistema apre una shell, ma di root: cosa piuttosto curiosa! L’intento è quello di avere uno spazio di lavoro dal quale sistemare eventuali piccoli errori, ma l’effetto è di avere una accesso al sistema, potenzialmente illimitato. In realtà i dati sulla partizione criptata sono ancora criptati, e quindi al sicuro dalla lettura, ma il resto no. In particolare, se l’intento è quello di danneggiare il sistema il buco è perfetto.

La partizione di boot (a meno di configurazioni molto particolari) è campo libero, non criptato, e quindi è possibile immaginare la sostituzione dell’initramfs con uno che includa un malware, compreso un keylogger per la password del disco.

La soluzione? Come descritto dalla CVE-2016-4484, modificare 3 righe dello script in /scripts/local-top/cryptroot e ricreeare l’initramfs:
cryptsetup-fix

Come spesso accade (ricordate GRUB2?) la falla c’è ma necessita di un accesso fisico, o per lo meno a livello console, quindi risulta difficilmente sfruttabile, il che ne mitiga molto l’impatto.

In questo caso abbiamo però un elemento d’ironia: quella che è una leggerezza di programmazione crea un buco grave, per lo più attivata da quelle azioni volte ad incrementare la propria sicurezza: criptare il disco!

Ho coltivato la mia passione per l’informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.