Problemi con la cancellazione delle chiavi di crittografia del disco dalla RAM durante il passaggio di Linux alla modalità sospensione

Durante il porting per NixOS dello strumento cryptsetup-suspend è stato scoperto un errore nel sottosistema di crittografia del disco LUKS (Linux Unified Key Setup), a causa del quale, a partire dal kernel Linux 6.9 (commit problematico), rilasciato a maggio 2024, la pulizia delle chiavi di crittografia dalla memoria RAM ha smesso di funzionare quando il sistema va in modalità sospensione.

Lo strumento cryptsetup-suspend è utilizzato in Debian per bloccare automaticamente le partizioni LUKS prima di passare alla modalità sospensione. Si presume che, in caso di furto di un laptop messo in modalità sospensione, l'aggressore non possa accedere ai dati, poiché al risveglio sarà necessario inserire una password per riottenere l'accesso ai dati crittografati. A causa di un errore nel kernel Linux, dopo aver bloccato la partizione LUKS con il comando "cryptsetup luksSuspend", le chiavi non venivano pulite dalla memoria RAM e rimanevano visibili tramite /proc/keys, consentendo all'attaccante di estrarle, ad esempio, tramite il metodo del "cold reboot", e utilizzarle per accedere ai dati.

L'assenza di pulizia delle chiavi è stata scoperta durante il debug di una condizione di race, che causava problemi nel passaggio alla modalità sospensione. L'errore è emerso dopo un rifactoring nel kernel 6.9, che legava le chiavi al thread chiamante, il quale avrebbe dovuto essere eliminato al termine della sua esecuzione, ma in realtà rimaneva in memoria. È stata proposta una patch in un'unica riga per il kernel Linux, che risolve l'errore riscontrato.

Questa patch non è stata accettata nel kernel, in quanto è stata identificata una mancanza: la patch funziona solo per dispositivi di archiviazione fisici, ma non per dispositivi virtuali loop. Invece di correggere il problema a livello di kernel, gli sviluppatori dello strumento cryptsetup hanno proposto una soluzione alternativa per la pulizia delle chiavi. Questa modifica è già stata accettata e farà parte del rilascio di cryptsetup 2.8.7.

In aggiunta, per NixOS è stata creata una propria implementazione di script per bloccare i dischi crittografati prima di passare alla modalità sospensione, utilizzando una vecchia patch per il kernel, non accettata nel 2015, che forzatamente purifica le chiavi dalla memoria prima di entrare in modalità sospensione.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster