Probleme mit der Bereinigung von Festplattenschlüssel aus dem RAM beim Übergang von Linux in den Ruhezustand.

Bei der Portierung des Tools cryptsetup-suspend für NixOS wurde ein Fehler im LUKS (Linux Unified Key Setup) Festplattenverschlüsselungssystem festgestellt, aufgrund dessen die Löschung der Verschlüsselungsschlüssel aus dem Arbeitsspeicher seit dem Linux-Kernel 6.9 (problematischer Commit), der im Mai 2024 veröffentlicht wurde, nicht mehr funktioniert, wenn das System in den Ruhezustand wechselt.

Das Tool cryptsetup-suspend wird in Debian verwendet, um LUKS-Partitionen automatisch vor dem Wechsel in den Schlafmodus zu sperren. Es wird angenommen, dass im Falle eines Diebstahls eines in den Schlafmodus versetzten Laptops der Angreifer keinen Zugriff auf die Daten erhält, da beim Aufwachen aus dem Ruhezustand ein Passwort eingegeben werden muss, um den Zugriff auf die verschlüsselten Daten wiederherzustellen. Aufgrund eines Fehlers im Linux-Kernel wurden nach der Sperrung der LUKS-Partition mit dem Befehl „cryptsetup luksSuspend“ die Schlüssel nicht aus dem Arbeitsspeicher gelöscht und blieben über /proc/keys sichtbar, was es einem Angreifer ermöglichte, sie durch einen „Cold Boot“-Angriff zu extrahieren und für den Datenzugriff zu verwenden.

Das Fehlen der Schlüssellöschung wurde während der Fehlersuche eines Race Conditions festgestellt, die Probleme mit dem Übergang in den Ruhezustand verursachte. Der Fehler trat nach der Refaktorisierung im Kernel 6.9 auf, bei der die Schlüssel an den aufrufenden Thread gebunden wurden und beim Beenden desselben gelöscht werden sollten, jedoch tatsächlich im Speicher verblieben. Ein einzeiliger Patch, der den Fehler behebt, wurde für den Linux-Kernel vorgeschlagen.

Dieser Patch wurde nicht in den Kernel aufgenommen, da ein Mangel festgestellt wurde – der Patch wirkt sich nur auf physische Speichergeräte aus und funktioniert nicht für virtuelle Loop-Geräte. Anstelle der Behebung des Problems auf der Seite des Kernels wurde von den Entwicklern des Tools cryptsetup ein Workaround angeboten, um die Schlüssel zu löschen. Diese Änderung wurde bereits angenommen und wird Bestandteil der Version cryptsetup 2.8.7 sein.

Darüber hinaus wurde für NixOS eine eigene Implementierung von Skripten zur Sperrung von verschlüsselten Festplatten vor dem Übergang in den Ruhezustand erstellt, bei der ein alter Patch für den Kernel verwendet wird, der 2015 abgelehnt wurde und die Schlüssel, bevor der Schlafmodus aktiviert wird, zwangsweise aus dem Speicher löscht.

Quelle: opennet.ru

60GB SSD 8Gb DDR4