Una vulnerabilità in cryptsetup che consente di disabilitare la crittografia nelle partizioni LUKS2

È stata individuata una vulnerabilità (CVE-2021-4122) nel pacchetto Cryptsetup, utilizzato per crittografare le partizioni del disco in Linux, che consente di disabilitare la crittografia su partizioni in formato LUKS2 (Linux Unified Key Setup) modificando i metadati. Per sfruttare la vulnerabilità, l'aggressore deve avere accesso fisico ai media crittografati, ad es. Il metodo è utile soprattutto per attaccare dispositivi di archiviazione esterni crittografati, come ad esempio le unità Flash, a cui l'aggressore ha accesso ma non conosce la password per decrittografare i dati.

L'attacco è applicabile solo al formato LUKS2 ed è associato alla manipolazione dei metadati responsabile dell'attivazione dell'estensione “online reencryption”, che consente, se è necessario modificare la chiave di accesso, di avviare al volo il processo di ricrittografia dei dati senza interrompere il lavoro con la partizione. Poiché il processo di decrittografia e crittografia con una nuova chiave richiede molto tempo, la "ricodifica online" consente di non interrompere il lavoro con la partizione ed eseguire la ricrittografia in background, ricodificando gradualmente i dati da una chiave all'altra . È anche possibile selezionare una chiave di destinazione vuota, che consente di convertire la sezione in una forma decrittografata.

Un utente malintenzionato può apportare modifiche ai metadati LUKS2 che simulano l'interruzione dell'operazione di decrittografia a seguito di un errore e ottenere la decrittografia di parte della partizione dopo l'attivazione e l'utilizzo dell'unità modificata da parte del proprietario. In questo caso, l'utente che ha collegato l'unità modificata e l'ha sbloccata con la password corretta non riceve alcun avviso sul processo di ripristino dell'operazione di ricrittografia interrotta e può solo informarsi sullo stato di avanzamento di questa operazione utilizzando il "luks Dump" comando. La quantità di dati che un utente malintenzionato 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, sebbene la ricrittografia richieda il calcolo e la verifica degli hash delle nuove e delle vecchie chiavi, non è necessario un hash per iniziare la decrittografia se il nuovo stato implica l'assenza di una chiave in chiaro per la crittografia. Inoltre, i metadati LUKS2, che specificano l'algoritmo di crittografia, non sono protetti da modifiche se cadono nelle mani di un utente malintenzionato. Per bloccare la vulnerabilità, gli sviluppatori hanno aggiunto a LUKS2 una protezione aggiuntiva per i metadati, per la quale ora viene controllato un hash aggiuntivo, calcolato in base alle chiavi conosciute e al contenuto dei metadati, ad es. un utente malintenzionato non può più modificare di nascosto i metadati senza conoscere la password di decrittazione.

Uno scenario di attacco tipico richiede che l'aggressore riesca a mettere le mani sull'unità più volte. Innanzitutto, un utente malintenzionato che non conosce la password di accesso apporta modifiche all'area dei metadati, provocando la decrittografia di parte dei dati alla successiva attivazione dell'unità. L'unità viene quindi rimessa al suo posto e l'aggressore attende finché l'utente non la connette inserendo una password. Quando il dispositivo viene attivato dall'utente, viene avviato un processo di ricrittografia in background, durante il quale parte dei dati crittografati viene sostituita con dati decrittografati. Inoltre, se l'aggressore riesce a mettere nuovamente le mani sul dispositivo, una parte dei dati presenti sul disco sarà decrittografata.

Il problema è stato identificato dal manutentore del progetto cryptsetup e risolto negli aggiornamenti cryptsetup 2.4.3 e 2.3.7. Lo stato degli aggiornamenti generati per risolvere il problema nelle distribuzioni può essere monitorato su queste pagine: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. La vulnerabilità appare solo a partire dal rilascio di cryptsetup 2.2.0, che ha introdotto il supporto per l'operazione di “ricodifica online”. Come soluzione alternativa per la protezione, è possibile utilizzare l'avvio con l'opzione "--disable-luks2-reencryption".

Fonte: opennet.ru

Aggiungi un commento