Mayhem — ein Angriff, der Bits im Speicher verfälscht, um die Authentifizierung in sudo und OpenSSH zu umgehen.

Forscher des Worcester Polytechnic Institute (USA) haben einen neuen Angriffstyp namens Mayhem vorgestellt, der die Rowhammer-Methode zur Verzerrung von Bits im dynamischen RAM nutzt, um Werte von Variablen im Stack zu ändern, die im Programm als Flags zur Entscheidung über die erfolgreiche Authentifizierung und den Bestehen von Sicherheitsprüfungen verwendet werden. Praktische Anwendungsbeispiele des Angriffs wurden zur Umgehung der Authentifizierung in SUDO, OpenSSH und MySQL sowie zur Manipulation des Ergebnisses sicherheitsrelevanter Prüfungen in der OpenSSL-Bibliothek demonstriert.

Der Angriff kann auf Anwendungen angewendet werden, in denen bei Prüfungen Vergleiche der Unterschiede von Werten mit null verwendet werden. Beispiel für anfälligen Code: int auth = 0; … // Code zur Prüfung, der den Wert von auth bei erfolgreicher Authentifizierung ändert if(auth != 0) return AUTH_SUCCESS; else return AUTH_FAILURE;

Im Kontext dieses Beispiels genügt es für einen erfolgreichen Angriff, irgendein Bit im Speicher zu verzerren, das einem 32-Bit-Wert auth im Stack zugeordnet ist. Durch die Verzerrung eines beliebigen Bits in der Variablen wird der Wert nicht mehr null und der bedingte Operator bestimmt das erfolgreiche Bestehen der Authentifizierung. Solche Prüfungsbedingungen sind in Anwendungen weit verbreitet und kommen beispielsweise in SUDO, OpenSSH, MySQL und OpenSSL vor.

Mayhem - ein Angriff, der Bits im Speicher verzerrt, um die Authentifizierung in sudo und OpenSSH zu umgehen.

Der Angriff kann auch auf Vergleiche vom Typ „if(auth == 1)“ angewendet werden, aber in diesem Fall wird seine Durchführung komplizierter, da nicht irgendein Bit von 32, sondern das letzte Bit verzerrt werden muss. Die Methode kann auch verwendet werden, um Werte von Variablen in Prozessorregistern zu beeinflussen, da der Inhalt der Register beim Kontextwechsel, bei Funktionsaufrufen oder beim Auslösen eines Signalhandlers vorübergehend in den Stack zurückgesetzt werden kann. In dem Zeitraum, in dem die Registerwerte im Speicher liegen, können Verzerrungen in diesen Speicher eingeführt werden und es wird der geänderte Wert im Register wiederhergestellt.

Mayhem - ein Angriff, der Bits im Speicher verzerrt, um die Authentifizierung in sudo und OpenSSH zu umgehen.

Für die Verzerrung von Bits wird eine der Modifikationen des RowHammer-Angriffs verwendet. Da DRAM-Speicher ein zweidimensionales Array von Zellen darstellt, die aus einem Kondensator und einem Transistor bestehen, führt das kontinuierliche Lesen desselben Speicherbereichs zu Spannungsschwankungen und Anomalien, die zu einem leichten Verlust von Ladung in benachbarten Zellen führen. Wenn die Leselast hoch ist, kann die benachbarte Zelle eine ausreichende Menge an Ladung verlieren, sodass der nächste Regenerationszyklus nicht ausreicht, um ihren ursprünglichen Zustand wiederherzustellen, was zu einer Änderung der in der Zelle gespeicherten Daten führt. Um sich vor RowHammer zu schützen, haben Chip-Hersteller den TRR-Mechanismus (Target Row Refresh) hinzugefügt, der in bestimmten Fällen die Verzerrung von Zellen blockiert, jedoch nicht vor allfälligen Angriffsvarianten schützt.

Um sich vor dem Mayhem-Angriff zu schützen, wird empfohlen, anstelle der Beurteilung der Abweichungen von Null oder der Übereinstimmung mit Eins Vergleiche durchzuführen, indem ein zufälliger Wert mit nicht null Oktetten verwendet wird. In diesem Fall ist es notwendig, eine bestimmte Anzahl an Bits genau zu verzerren, um den gewünschten Wert einer Variablen festzulegen, was unrealistisch ist, im Gegensatz zur Verzerrung eines einzelnen Bits. Beispiel eines nicht angreifbaren Codes: int auth = 0xbe406d1a; … // Prüfcode, der auth auf 0x23ab8701 setzt, falls die Authentifizierung erfolgreich ist if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;

Die genannte Schutzmethode wurde bereits von den Entwicklern von sudo angewendet und ist in das Release 1.9.15 als Sicherheitsupdate für die Schwachstelle CVE-2023-42465 aufgenommen worden. Ein Prototypcode für den Angriff soll nach der Behebung der Hauptanfälligkeiten veröffentlicht werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4