Nel pacchetto Cryptsetup, utilizzato per la crittografia delle partizioni disco in Linux, è stata individuata una vulnerabilità (CVE-2021-4122) che consente di disattivare la crittografia nelle partizioni in formato LUKS2 (Linux Unified Key Setup) tramite la modifica dei metadati. Per sfruttare la vulnerabilità, un attaccante deve avere accesso fisico al supporto crittografato, ovvero il metodo ha senso principalmente per attaccare dispositivi esterni crittografati, come le chiavette USB, a cui un malintenzionato ha accesso ma non conosce la password per decrittografare i dati.
L'attacco è applicabile solo al formato LUKS2 ed è legato alla manipolazione dei metadati responsabili dell'attivazione dell'estensione "online reencryption", che permette di avviare il processo di riescrittura dei dati in tempo reale durante un cambio di chiave di accesso, senza interrompere il lavoro con la partizione. Poiché il processo di decrittografia e crittografia con la nuova chiave richiede tempo, "online reencryption" offre la possibilità di non interrompere il lavoro con la partizione e di eseguire la riescrittura in background, mentre i dati vengono gradualmente trasferiti da una chiave all'altra. È anche possibile scegliere una chiave di destinazione vuota, consentendo di trasferire la partizione in uno stato decrittografato.
L'attaccante può apportare modifiche ai metadati LUKS2 che simulano un'interruzione improvvisa dell'operazione di decrittografia a causa di un guasto e riesce a decrittografare parte della partizione dopo l'attivazione e l'uso del supporto modificato da parte del legittimo proprietario. In tale scenario, l'utente che collega il supporto modificato e lo sblocca con la password corretta non riceve alcun avviso riguardo il ripristino dell'operazione di riescrittura interrotta e può venire a conoscenza dell'andamento di tale operazione solo tramite il comando "luks Dump". La quantità di dati che l'attaccante può decrittografare dipende dalla dimensione dell'intestazione LUKS2, ma con la dimensione predefinita (16 MiB) può superare i 3 GB.
Il problema è causato dal fatto che, nonostante la riestrazione richieda il calcolo e la verifica degli hash delle nuove e vecchie chiavi, per avviare la decrittazione l'hash non è necessario, se il nuovo stato implica l'assenza di una chiave per la crittografia (testo in chiaro). Inoltre, i metadati di LUKS2, in cui è definito l'algoritmo di crittografia, non sono protetti da modifiche in caso di accesso da parte di un malintenzionato. Per bloccare questa vulnerabilità, gli sviluppatori hanno aggiunto una protezione aggiuntiva nei metadati di LUKS2, per cui ora viene verificato un ulteriore hash, calcolato sulla base delle chiavi note e del contenuto dei metadati, cioè l'attaccante non può più modificare silenziosamente i metadati senza conoscere la password per la decrittazione.
Uno scenario tipico di attacco richiede che il malintenzionato abbia la possibilità di ottenere ripetutamente il dispositivo. Inizialmente, l'attaccante, che non conosce la password di accesso, apporta modifiche all'area dei metadati che avviano la decrittazione di parte dei dati alla successiva attivazione del dispositivo. Poi, il dispositivo viene restituito e l'attaccante aspetta che l'utente lo colleghi inserendo la password. Durante l'attivazione del dispositivo da parte dell'utente, viene avviato un processo di riestrazione in background, durante il quale parte dei dati crittografati viene sostituita con dati decrittografati. Successivamente, se l'attaccante riesce a ottenere di nuovo il dispositivo, parte dei dati sul supporto sarà in forma decrittografata.
Il problema è stato identificato dal maintainer del progetto cryptsetup ed è stato corretto negli aggiornamenti di cryptsetup 2.4.3 e 2.3.7. Lo stato degli aggiornamenti con la correzione del problema nei vari distribuzioni può essere monitorato su queste pagine: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. La vulnerabilità si manifesta solo a partire dal rilascio di cryptsetup 2.2.0, in cui è stata introdotta la supporto per l'operazione di "riestrazione online". Come soluzione alternativa per la protezione può essere utilizzata l'esecuzione con l'opzione "--disable-luks2-reencryption".
Fonte: opennet.ru
