Ein neuartiger Hardware-Angriff mit dem Namen PACMAN wurde gegen Apples M1-Prozessorchipsätze demonstriert, der es einem böswilligen Akteur ermöglichen könnte, beliebigen Code auf macOS-Systemen auszuführen.

Er nutzt „spekulative Ausführungsangriffe, um einen wichtigen Speicherschutzmechanismus zu umgehen, die ARM Pointer Authentication, eine Sicherheitsfunktion, die die Integrität von Zeigern erzwingt“, so die MIT-Forscher Joseph Ravichandran, Weon Taek Na, Jay Lang und Mengjia Yan in einem neuen Paper.

Was noch besorgniserregender ist: „Während die von PACMAN verwendeten Hardware-Mechanismen nicht mit Software-Funktionen gepatcht werden können, ist dies bei Fehlern, die den Speicher beschädigen, möglich“, fügen die Forscher hinzu.

Die Schwachstelle liegt in den Pointer Authentication Codes (PACs), einer in der arm64e Architektur eingeführten Verteidigungslinie, die unerwartete Änderungen an Zeigern – Objekten, die eine Speicheradresse speichern – im Speicher erkennen und absichern soll.

PACs zielen darauf ab, ein häufiges Problem in der Softwaresicherheit zu lösen, wie z. B. Schwachstellen in der Speicherkorruption, die oft durch das Überschreiben von Kontrolldaten im Speicher (d. h. Zeigern) ausgenutzt werden, um die Codeausführung an eine beliebige, vom Angreifer kontrollierte Stelle umzuleiten.

Während Strategien wie Address Space Layout Randomization (ASLR) entwickelt wurden, um Angriffe auf Pufferüberläufe zu erschweren, besteht das Ziel von PACs darin, die „Gültigkeit von Zeigern mit minimalen Auswirkungen auf Größe und Leistung“ festzustellen und so zu verhindern, dass ein Angreifer gültige Zeiger für einen Exploit erstellen kann.

Dies wird erreicht, indem ein Zeiger mit einem kryptografischen Hash – Pointer Authentication Code (PAC) genannt – geschützt wird, um seine Integrität sicherzustellen. Apple erklärt die Pointer-Authentifizierung wie folgt

Die Zeigerauthentifizierung funktioniert, indem ein spezieller CPU-Befehl zur Verfügung gestellt wird, der eine kryptografische Signatur – oder PAC – zu den unbenutzten höherwertigen Bits eines Zeigers hinzufügt, bevor der Zeiger gespeichert wird. Ein weiterer Befehl entfernt die Signatur und authentifiziert sie, nachdem der Zeiger aus dem Speicher zurückgelesen wurde. Jede Änderung des gespeicherten Wertes zwischen dem Schreiben und dem Lesen macht die Signatur ungültig. Die CPU interpretiert die fehlgeschlagene Authentifizierung als Speicherbeschädigung und setzt ein höherwertiges Bit im Zeiger, wodurch der Zeiger ungültig wird und die Anwendung abstürzt.

PACMAN „beseitigt das Haupthindernis für Angriffe auf den Kontrollfluss auf einer Plattform, die durch Zeigerauthentifizierung geschützt ist“. Es kombiniert Speicherbeschädigung und spekulative Ausführung, um das Sicherheitsmerkmal zu umgehen, indem es „PAC-Verifizierungsergebnisse über mikroarchitektonische Seitenkanäle ausspäht, ohne Abstürze zu verursachen.“

Die Angriffsmethode macht es möglich, zwischen einem korrekten PAC und einem falschen Hash zu unterscheiden, so dass ein Angreifer „den korrekten PAC-Wert erzwingen kann, während er Abstürze unterdrückt und einen Angriff auf ein PA-aktiviertes Opferprogramm oder -betriebssystem durch Entführung des Kontrollflusses durchführt.

Die Verhinderung von Abstürzen ist erfolgreich, weil jeder PAC-Wert spekulativ erraten wird, indem ein zeitbasierter Seitenkanal über den Translation Look-Aside-Buffer (TLB) mit einem Prime+Probe-Angriff ausgenutzt wird.

Schwachstellen in der spekulativen Ausführung, wie sie bei Spectre und Meltdown beobachtet wurden, machen sich die Out-of-Order-Ausführung zunutze, eine Technik, die in modernen Mikroprozessoren zu einer Leistungssteigerung führt, indem sie den wahrscheinlichsten Pfad des Programmablaufs vorhersagt.

Allerdings setzt das Bedrohungsmodell voraus, dass es bereits eine ausnutzbare Schwachstelle im Speicher des Opferprogramms (Kernel) gibt, die es dem unberechtigten Angreifer (einer bösartigen App) ermöglicht, bösartigen Code in bestimmte Speicherbereiche des Opferprozesses einzuschleusen.

„Dieser Angriff hat wichtige Auswirkungen für Entwickler, die zukünftige Prozessoren mit Zeigerauthentifizierung implementieren wollen, und hat weitreichende Folgen für die Sicherheit zukünftiger Kontrollflussintegritätsprimitive“, so die Forscher.

Update: „Wir möchten uns bei den Forschern für ihre Zusammenarbeit bedanken, da dieses Proof-of-Concept unser Verständnis dieser Techniken verbessert“, sagte Apple in einer Erklärung, die The Hacker News vorliegt, und wies darauf hin, dass das Potenzial von PACMAN, in freier Wildbahn ausgenutzt zu werden, gering ist.

„Auf der Grundlage unserer Analyse und der Details, die uns die Forscher mitgeteilt haben, sind wir zu dem Schluss gekommen, dass dieses Problem keine unmittelbare Gefahr für unsere Nutzer darstellt und nicht ausreicht, um die Sicherheitsvorkehrungen des Betriebssystems allein zu umgehen.

Die Schwachstelle erinnert an eine andere, nicht zu behebende Bedrohung namens M1RACLES (CVE-2021-30747), die letztes Jahr bekannt wurde. Sie ermöglicht es zwei oder mehr böswilligen Anwendungen, die auf einem Computer installiert sind, einen verdeckten Kanal zu erstellen, um Daten zwischen ihnen auszutauschen, ohne Speicher, Sockets, Dateien oder andere typische Betriebssystemfunktionen zu nutzen.