ForschungHoch

Windows-Administrator-Schutz umgehen: UI Access für Rechteausweitung ausnutzen

7 Min. LesezeitQuelle: Google Project Zero
Diagram illustrating Windows UI Access process flow and privilege escalation attack vectors

Sicherheitsforscher enthüllt fünf kritische Schwachstellen in Microsofts UI Access-Implementierung, die Angreifern das Umgehen des Administrator-Schutzes ermöglichen. Alle Patches sind verfügbar.

Windows-Administrator-Schutz umgehen: UI Access für Rechteausweitung ausnutzen

Von [Cybersecurity-Journalist]

Wichtige Erkenntnisse

Der Sicherheitsforscher James Forshaw hat technische Details zu fünf kritischen Schwachstellen in Microsofts UI Access-Implementierung offengelegt, die es Angreifern ermöglichten, den Windows-Administrator-Schutz zu umgehen. Alle neun während Forshaws Forschung identifizierten Bypasses – einschließlich der fünf in dieser Analyse detailliert beschriebenen – wurden inzwischen von Microsoft gepatcht.

Die Schwachstellen resultieren aus der UI Access-Funktion, die ursprünglich in Windows Vista eingeführt wurde, um Barrierefreiheits-Tools wie Screenreader zu unterstützen. Durch den Missbrauch dieser Funktionalität konnten Angreifer beliebigen Code in einem UI Access-Prozess mit hoher Integrität ausführen und so die Sicherheitsgrenze des Administrator-Schutzes ohne Benutzerinteraktion kompromittieren.

Technischer Hintergrund: UI Access und UIPI

Die Entwicklung der Fenstersicherheit

Vor Windows Vista konnte jeder Prozess, der auf dem Desktop eines Benutzers lief, jedes von einem anderen Prozess erstellte Fenster über Fenster-Nachrichten steuern – einschließlich privilegierter Prozesse. Dieses Verhalten wurde in sogenannten Shatter-Angriffen ausgenutzt, bei denen ein eingeschränkter Benutzer privilegierte UI-Komponenten manipulieren konnte, um seine Rechte zu erweitern. Microsoft entschärfte dieses Problem, indem UI-Elemente aus privilegiertem Code entfernt wurden.

Mit der Einführung von User Account Control (UAC) in Windows Vista liefen Prozesse mit unterschiedlichen Berechtigungsstufen auf demselben Desktop. Um die Manipulation von Fenstern über Berechtigungsgrenzen hinweg zu verhindern, implementierte Microsoft User Interface Privilege Isolation (UIPI), das auf Mandatory Integrity Control (MIC) basiert, um Prozessinteraktionen einzuschränken. UIPI blockiert, dass ein Prozess Fenster-Nachrichten an Fenster sendet oder Hooks verwendet, die von einem Prozess mit höherer Integrität erstellt wurden.

Beispiele:

  • Ein Prozess eines eingeschränkten Benutzers (mittlere Integrität) kann keine Nachrichten an einen Administrator-Prozess (hohe Integrität) senden.
  • UIPI verhindert auch andere UI-Funktionalitäten wie Fenster-Hooks über Integritätsstufen hinweg.

Das Barrierefreiheits-Dilemma

Die Einschränkungen von UIPI stellten ein erhebliches Problem für Barrierefreiheits-Tools wie Screenreader dar. Diese Anwendungen, die als eingeschränkte Benutzer laufen, konnten nicht mehr mit Administrator-Prozessen interagieren – was sie daran hinderte, Fensterinhalte auszulesen oder Aktionen wie das Klicken von Schaltflächen durchzuführen. Um dies zu lösen, führte Microsoft das UI Access-Flag ein.

Wenn dieses Flag im Zugriffstoken eines Prozesses während der Initialisierung gesetzt wird, gewährt es spezielle Berechtigungen, um viele UIPI-Einschränkungen zu umgehen. Das Aktivieren dieses Flags erfordert die Berechtigung SE_TCB_NAME, die nur Systemdiensten zur Verfügung steht. Daher erfolgt die Erstellung eines UI Access-Prozesses über einen Systemdienst – typischerweise den UAC-Dienst – mittels des RAiLaunchAdminProcess-RPC-Aufrufs.

Ablauf der UI Access-Prozess-Erstellung

Um Missbrauch zu verhindern, führt der UAC-Dienst strenge Prüfungen der ausführbaren Datei durch, bevor das UI Access-Flag aktiviert wird:

  1. Manifest-Anforderung: Die ausführbare Datei muss ein eingebettetes Manifest mit dem auf true gesetzten uiAccess-Attribut enthalten.
  2. Code-Signierung: Die Datei muss mit einem Code-Signing-Zertifikat signiert sein, das vom Stammzertifikatsspeicher des lokalen Computers vertraut wird.
  3. Sicherer Speicherort: Die ausführbare Datei muss sich in einem nur für Administratoren zugänglichen Verzeichnis auf dem Systemlaufwerk befinden, wie z. B.:
    • Program Files-Verzeichnis
    • Windows-Verzeichnis (ausgenommen bekannte beschreibbare Orte)
    • System32-Verzeichnis (ausgenommen bekannte beschreibbare Orte)

Wenn diese Kriterien erfüllt sind, führt der UAC-Dienst folgende Schritte aus:

  • Erstellt eine Kopie des Zugriffstokens des Aufrufers.
  • Aktiviert das UI Access-Flag.
  • Erhöht die Integritätsstufe basierend auf dem Aufrufer:
    • Eingeschränkter Benutzer eines UAC-Administrators: Setzt die Integrität auf High.
    • Administrator: Setzt die Integrität auf High (typischerweise ein No-Op).
    • Normaler Benutzer: Setzt die Integrität auf die des Aufrufers + 16, bis maximal High.

Wichtiger Hinweis: Das UI Access-Flag erlaubt nur das Umgehen einer begrenzten Anzahl von Operationen, wie das Senden von Fenster-Nachrichten an Prozesse mit höherer Integrität. Es ermöglicht nicht die Verwendung von Fenster-Hooks, die Code-Injection ermöglichen könnten.

Ausnutzung von UI Access im Administrator-Schutz

Die Kernschwäche

Der Administrator-Schutz, eine neuere Windows-Funktion, wurde entwickelt, um eine sichere Grenze für UAC zu schaffen, indem der eingeschränkte Benutzer vom Schatten-Administrator getrennt wird. Forshaw entdeckte jedoch, dass UI Access-Prozesse diese Grenze untergraben konnten:

  • Wenn ein eingeschränkter Benutzer einen UI Access-Prozess über RAiLaunchAdminProcess erstellt, läuft der Prozess unter dem Token des Aufrufers (dem eingeschränkten Benutzer), jedoch mit aktiviertem UI Access-Flag und auf High-Integrität gesetzt.
  • Ein Prozess mit hoher Integrität kann jeden anderen Prozess mit hoher Integrität auf demselben Desktop kompromittieren, selbst wenn dieser unter einem anderen Benutzer läuft.
  • Da der UI Access-Prozess als eingeschränkter Benutzer läuft, gibt es keine Profiltrennung – eine zentrale Verbesserung des Administrator-Schutzes.
  • Die Erhöhung auf hohe Integrität erfolgt lautlos, sodass Angreifer die Sicherheitsgrenze ohne Benutzerinteraktion durchbrechen können.

Willkürliche Codeausführung in UI Access-Prozessen mit hoher Integrität

Forshaw identifizierte mehrere Methoden, um willkürliche Codeausführung in einem UI Access-Prozess mit hoher Integrität zu erreichen. Obwohl Microsoft diese Probleme zunächst nicht als prioritär für eine Behebung eingestuft hatte, wurden mehrere davon inzwischen gepatcht. Die Techniken lassen sich in drei Hauptkategorien einteilen:

1. Umgehen der Prüfung des sicheren Anwendungsverzeichnisses

Die Methode AiCheckSecureApplicationDirectory des UAC-Dienstes validiert, ob sich die ausführbare Datei in einem sicheren Verzeichnis befindet. Forshaw entdeckte mehrere Möglichkeiten, diese Prüfung zu umgehen:

  • NTFS-Named Streams: 2017 berichtete Forshaw über einen Bypass, bei dem ein Angreifer einen NTFS-Named Stream in ein Verzeichnis schreiben konnte, das für eingeschränkte Benutzer beschreibbar war. Beispielsweise ist das Verzeichnis C:\Windows\tracing beschreibbar, wird aber von der Sicherheitsprüfung ausgeschlossen. Durch das Schreiben eines Named Streams (z. B. C:\Windows\tracing:file.exe) wurde die Datei als sicher betrachtet, da der Pfad innerhalb von C:\Windows lag. Dieses Problem wurde in einer späteren Windows-Version behoben.

  • Beschreibbare Dateien/Verzeichnisse in sicheren Orten: Angreifer konnten eine vorhandene beschreibbare Datei in einem sicheren Verzeichnis mit einer schädlichen ausführbaren Datei überschreiben. Die von dem UAC-Dienst verwendete API CreateProcessAsUser erfordert keine bestimmte Dateierweiterung, sodass jede Datei ausgeführt werden konnte. Alternativ konnten Angreifer eine ausführbare Datei in ein beschreibbares Verzeichnis innerhalb eines sicheren Ortes kopieren.

  • Missbrauch des MSIX-Installers: In neueren Forschungen stellte Forshaw fest, dass der Windows-Installer MSIX-Dateien in C:\Program Files\WindowsApps ablegen konnte, ein Verzeichnis, das nicht von der Sicherheitsprüfung ausgeschlossen wurde. Windows 11 erlaubt standardmäßig die Installation signierter MSIX-Dateien ohne Administratorrechte. Durch das Verpacken einer UI Access-ausführbaren Datei in einen MSIX-Installer und das Signieren mit einem beliebigen Zertifikat konnten Angreifer die ausführbare Datei in einem sicheren Verzeichnis platzieren. Dieses Problem wurde behoben, indem das WindowsApps-Verzeichnis ausgeschlossen wurde.

2. Weitere historische Bypasses

Forshaw verwies auch auf andere historische Methoden zur Erzielung willkürlicher UI Access-Ausführung, darunter:

  • DLL-Planting: Hijacking legitimer ausführbarer Dateien in sicheren Verzeichnissen durch das Platzieren schädlicher DLLs.
  • COM-Missbrauch: Ausnutzung von COM-Komponenten, die fensterlose Nachrichten verwenden, um Prozesse zu kompromittieren, ohne UI anzuzeigen.

Auswirkungenanalyse

Die in dieser Forschung beschriebenen Schwachstellen stellen ein erhebliches Risiko für Windows-Systeme mit aktiviertem Administrator-Schutz dar:

  • Rechteausweitung: Angreifer könnten ihre Berechtigungen von einem eingeschränkten Benutzer auf hohe Integrität erweitern und so die Sicherheitsgrenze des Administrator-Schutzes effektiv umgehen.
  • Lautlose Ausnutzung: Die Erhöhung auf hohe Integrität erfolgt ohne Benutzerinteraktion, was die Erkennung erschwert.
  • Willkürliche Codeausführung: Sobald willkürliche Codeausführung in einem UI Access-Prozess mit hoher Integrität erreicht ist, können Angreifer jeden anderen Prozess mit hoher Integrität auf demselben Desktop kompromittieren.
  • Keine Profiltrennung: Das Fehlen der Profiltrennung untergräbt eine der zentralen Sicherheitsverbesserungen des Administrator-Schutzes.

Empfehlungen

Sicherheitsexperten und Systemadministratoren sollten folgende Maßnahmen ergreifen, um die mit diesen Schwachstellen verbundenen Risiken zu mindern:

  1. Patches anwenden: Stellen Sie sicher, dass alle Windows-Systeme mit den neuesten Sicherheitsupdates von Microsoft aktualisiert werden, um die behobenen Bypasses zu adressieren.
  2. UI Access-Prozesse überwachen: Implementieren Sie eine Überwachung für ungewöhnliche Erstellungen von UI Access-Prozessen, insbesondere solche mit hoher Integrität.
  3. Zugriff auf sichere Verzeichnisse einschränken: Beschränken Sie Schreibzugriffe auf Verzeichnisse wie Program Files, Windows und System32 auf Administratoren.
  4. Code-Signing-Zertifikate prüfen: Überprüfen und beschränken Sie die Code-Signing-Zertifikate, die vom Stammzertifikatsspeicher des lokalen Computers vertraut werden, um Missbrauch zu verhindern.
  5. Unnötige Barrierefreiheitsfunktionen deaktivieren: Deaktivieren Sie UI Access für Anwendungen, die es nicht benötigen, um die Angriffsfläche zu reduzieren.

Fazit

Die Forschung von James Forshaw zeigt die anhaltenden Herausforderungen bei der Absicherung der Rechteausweitungsmechanismen von Windows auf. Obwohl UI Access entwickelt wurde, um Barrierefreiheit zu unterstützen, führte seine Implementierung zu erheblichen Sicherheitsrisiken, die ausgenutzt werden konnten, um den Administrator-Schutz zu umgehen. Microsoft hat die in dieser Analyse beschriebenen Schwachstellen behoben, doch die Forschung unterstreicht die Bedeutung rigoroser Sicherheitstests und proaktiver Überwachung, um ähnliche Bedrohungen in Zukunft abzuwehren.

Weitere technische Details finden Sie im ursprünglichen Blogbeitrag von Forshaw auf Project Zero.

Teilen

TwitterLinkedIn