Eine neue, noch unbenannte Schwachstellenklasse wurde im Kernel von Windows 11 entdeckt, die es Angreifern ermöglicht, beliebigen Code mit Kernel-Rechten auszuführen. Diese Schwachstelle, „File Immutability“ genannt, entsteht durch falsche Annahmen im Design einer zentralen Windows-Funktion. Diese Annahmen können zu undefiniertem Verhalten und Sicherheitslücken führen.

Details zur Schwachstelle

Die Schwachstelle betrifft mehrere Komponenten und Konzepte:

  • Windows-Dateifreigabe: Vollständige Zugriffsrechte.
  • Speicherverwaltung: Behandelt PE-relokierte Seiten als unverändert und wendet während Seitenfehlern Relokationen dynamisch an.
  • Freigabe-Durchsetzung: Die Dateisystemtreiber müssen IoCheckShareAccess oder IoCheckLinkShareAccess aufrufen, um zu prüfen, ob das angeforderte DesiredAccess/ShareMode-Tupel kompatibel ist.
  • Authenticode: Beschreibt die Verwendung von Kryptografie zum „Signieren“ von PE-Dateien.
  • Code-Integrität: Validiert Signaturen im Kernel.
  • Falsche Annahmen: Dateien, die erfolgreich ohne Schreibfreigabe geöffnet wurden, können von einem anderen Benutzer oder Prozess nicht verändert werden.
  • Seiten-Hashes: Liste von Hashes jeder 4KB-Seite innerhalb einer PE-Datei.
  • Netzwerk-Redirectoren: Ermöglichen die Verwendung von Netzwerkpfaden mit jeder API, die Dateipfade akzeptiert.
  • Protected Process Light (PPL): Anti-Malware-Dienste laufen als PPL und sind vor Manipulationen durch Malware mit Admin-Rechten geschützt.

Ein Angreifer kann diese falsche Dateiunveränderlichkeit nutzen, indem er einen Netzwerk-Redirector verwendet, um PPLs DLL-Server-seitig zu ändern und Freigabebeschränkungen zu umgehen.

Neue Forschungsergebnisse

Ein neuer Bericht von Elastic Security zeigt, wie Authenticode-Signaturen innerhalb von PE-Dateien, die eine abgetrennte Signatur namens Sicherheitskatalog verwenden, genutzt werden können. Jede PE mit einem Authentihash in der Liste wird als von diesem Unterzeichner signiert betrachtet, wobei Windows eine große Sammlung von Katalogdateien in C:\Windows\System32\CatRoot aufbewahrt.

Angriffsplanung

Der Angriffsablauf beginnt damit, dass ein Angreifer einen Sicherheitskatalog auf einem von ihm kontrollierten Speichergerät platziert. Dann installiert er einen symbolischen Link zu diesem Katalog im CatRoot-Verzeichnis, damit Windows ihn finden kann. Der Angreifer kann dann folgende Aktionen ausführen, um diese Schwachstelle auszunutzen:

  1. Den Kernel bitten, einen bösartigen, unsignierten Kernel-Treiber zu laden.
  2. Die Code-Integrität versucht, den Treiber zu validieren, kann jedoch keine Signatur oder vertrauenswürdigen Authentihash finden und durchsucht erneut das CatRoot-Verzeichnis, wo der neue Katalog des Angreifers gefunden wird.
  3. CI mappt den Katalog in den Kernel-Speicher und validiert seine Signatur. Dies erzeugt Seitenfehler, die an das Speichergerät des Angreifers gesendet werden. Das Speichergerät gibt einen legitimen, von Microsoft signierten Katalog zurück.
  4. Der Angreifer leert den Systemarbeitssatz, wodurch alle zuvor abgerufenen Katalogseiten verworfen werden.
  5. CI beginnt, den Katalog zu parsen, was neue Seitenfehler erzeugt. Diesmal injiziert das Speichergerät den Authentihash seines bösartigen Treibers.
  6. CI findet den Authentihash des bösartigen Treibers im Katalog und lädt den Treiber. Der Angreifer hat nun beliebigen Code im Kernel ausgeführt.

Betroffene Operationen und API

OperationAPIMitigations
Image SectionsCreateProcess LoadLibrary1. Enable Page Hashes
Data SectionsMapViewOfFile ZwMapViewOfSection1. Avoid double reads<br>2. Copy the file to a heap buffer before processing<br>3. Prevent paging via MmProbeAndLockPages/VirtualLock
Regular I/OReadFile ZwReadFile1. Avoid double reads<br>2. Copy the file to a heap buffer before processing

Diese Schwachstelle verdeutlicht die Bedeutung sorgfältiger Prüfungen und der Überprüfung von Annahmen bei der Entwicklung von Sicherheitsfunktionen. Sie zeigt auch, wie komplex und mehrschichtig moderne Angriffe sein können.