Im Cryptsetup-Paket, das zur Verschlüsselung von Festplattenpartitionen unter Linux verwendet wird, wurde eine Sicherheitsanfälligkeit (CVE-2021-4122) entdeckt, die es durch Modifikation von Metadaten ermöglicht, die Verschlüsselung in LUKS2-Partitionen (Linux Unified Key Setup) zu deaktivieren. Um die Schwachstelle auszunutzen, muss der Angreifer physischen Zugang zu dem verschlüsselten Medium haben, d.h. diese Methode ist hauptsächlich für Angriffe auf verschlüsselte externe Speichergeräte wie Flash-Laufwerke sinnvoll, auf die der Angreifer Zugriff hat, aber nicht das Passwort zur Entschlüsselung der Daten kennt.
Der Angriff ist nur für das LUKS2-Format anwendbar und steht im Zusammenhang mit der Manipulation von Metadaten, die für die Aktivierung der Erweiterung "online reencryption" verantwortlich sind. Diese ermöglicht es, bei Bedarf den Schlüssel zu wechseln und den Prozess der Datenerneuerung im laufenden Betrieb zu initiieren, ohne die Verwendung der Partition zu unterbrechen. Da der Entschlüsselungs- und Verschlüsselungsprozess mit einem neuen Schlüssel viel Zeit in Anspruch nimmt, ermöglicht die "online reencryption" eine unterbrechungsfreie Nutzung der Partition, während die Daten im Hintergrund schrittweise von einem Schlüssel auf einen anderen umgeschlüsselt werden. Außerdem gibt es die Möglichkeit, einen leeren Zielschlüssel auszuwählen, was es ermöglicht, die Partition in einen entschlüsselten Zustand zu versetzen.
Der Angreifer kann Änderungen an den LUKS2-Metadaten vornehmen, die eine simulierte plötzliche Unterbrechung des Entschlüsselungsvorgangs aufgrund eines Fehlers darstellen, und kann erreichen, dass ein Teil der Partition nach der Aktivierung und Nutzung des modifizierten Laufwerks durch den Eigentümer entschlüsselt wird. Dabei erhält der Benutzer, der das modifizierte Laufwerk angeschlossen und mit dem korrekten Passwort entsperrt hat, keine Warnung über die Durchführung des Wiederherstellungsprozesses der unterbrochenen Umschlüsselung und kann den Verlauf dieses Vorgangs nur mit dem Befehl "luks Dump" erfahren. Der Umfang der Daten, die der Angreifer entschlüsseln kann, hängt von der Größe des LUKS2-Headers ab, kann jedoch bei der Standardgröße (16 MiB) über 3 GB betragen.
Das Problem ergibt sich daraus, dass trotz der Tatsache, dass eine Neuschlüsselung die Berechnung und Überprüfung der Hashes des neuen und alten Schlüssels erfordert, für den Beginn der Entschlüsselung kein Hash benötigt wird, wenn der neue Zustand das Fehlen eines Schlüssels für die Verschlüsselung (Plaintext) nahelegt. Darüber hinaus sind die Metadaten von LUKS2, in denen der Verschlüsselungsalgorithmus festgelegt wird, nicht vor einer Modifikation durch Angreifer geschützt. Um die Sicherheitsanfälligkeit zu beheben, haben die Entwickler LUKS2 einen zusätzlichen Schutz für die Metadaten hinzugefügt, für den jetzt ein zusätzlicher Hash überprüft wird, der auf Basis der bekannten Schlüssel und des Inhalts der Metadaten berechnet wird, d. h. ein Angreifer kann die Metadaten jetzt nicht unbemerkt ändern, ohne das Passwort zur Entschlüsselung zu kennen.
Ein typisches Angriffszenario erfordert, dass der Angreifer mehrmals Zugriff auf das Speichermedium hat. Zunächst nimmt der Angreifer, der das Zugangspasswort nicht kennt, Änderungen an den Metadaten vor, die die Entschlüsselung eines Teils der Daten bei der nächsten Aktivierung des Speichermediums auslösen. Danach wird das Medium zurück an seinen Platz gebracht und der Angreifer wartet, bis der Benutzer es anschließt und das Passwort eingibt. Während der Aktivierung des Geräts durch den Benutzer wird ein Hintergrundprozess zur Neuschlüsselung gestartet, bei dem ein Teil der verschlüsselten Daten durch entschlüsselte Daten ersetzt wird. Wenn der Angreifer das Gerät dann erneut in die Hände bekommt, wird ein Teil der Daten auf dem Medium entschlüsselt sein.
Das Problem wurde vom Wartenden des Projekts cryptsetup erkannt und in den Updates von cryptsetup 2.4.3 und 2.3.7 behoben. Der Status der Problemlösung in den Distributionen kann auf diesen Seiten nachverfolgt werden: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Die Sicherheitsanfälligkeit tritt nur ab der Version cryptsetup 2.2.0 auf, in der die Unterstützung für die Operation „online reencryption“ eingeführt wurde. Als Workaround kann der Start mit der Option „—disable-luks2-reencryption“ verwendet werden.
Quelle: opennet.ru
