Horror aus der Windows-Steinzeit: Über die Texteingabe-Hilfe zum Admin

Kann man als normaler Windows-Nutzer eigentlich Befehle in Admin-Fenster einschleusen? Tavis Ormandy zeigt wie’s geht.

Tavis Ormandy, Sicherheitsforscher bei Googles Projekt Zero und Schrecken aller Software-Hersteller mit unsicheren Programmen, hat es wieder getan. Diesmal hat er Microsoft vorgeführt, in dem er einfache Texteingaben in einem unschuldigen Programm wie Notepad dazu missbrauchte, so ziemlich alle aktuellen Windows-Versionen komplett zu übernehmen.

Die Lücke, die von Microsoft mit einem CSS-Score von 7.8 knapp vor kritisch eingeordnet wird, wurde mit den gestern verteilten Patch-Tuesday-Updatesgestopft. Bei dieser Gelegenheit hat Ormandy es sich nicht nehmen lassen, eine detaillierte Beschreibung seines Hacks zu veröffentlichen.

Alles fing damit an, dass der Sicherheitsforscher einfach mal prüfen wollte, ob Programm-Fenster mit normalen Nutzerrechten Befehle an Programme schicken können, die mit Systemrechten laufen. Eigentlich sollte das nicht möglich sein, da es eine signifikante Sicherheitslücke darstellt. Aber wie Ormandys Untersuchungen ergaben, führen komplexe Interaktionen und Programmierfehler in Windows dazu, dass es entgegen seiner Ausgangsvermutung doch möglich war.

Wie sich herausstellt, kann eine Schwachstelle im Text Services Framework dazu missbraucht werden, Eingaben von Fenstern mit normalen Benutzerrechten an Fenster zu schicken, die Systemrechte haben. Das führt im richtigen Kontext dazu, dass normale Benutzer ihre Befehle mit Admin-Rechten ausführen können. Und das wiederrum kann dazu missbraucht werden, die komplette Kontrolle über Windows zu erlangen – etwa um Schadcode einzuschleusen und auszuführen.

Zum Text Services Framework von Windows gehören auch sogenannte IMEs (Input Method Editor), die automatisch installiert werden, wenn ein Nutzer eine bestimmte Eingabesprache wählt. Damit lassen sich etwa auf westlichen Tastaturen chinesische oder japanische Schriftzeichen eingeben. Um das zu bewerkstelligen, generiert der Windows-Kernel eine Schnittstelle zwischen einem Programm – etwa Notepad im Kontext normaler Benutzerrechte – und einem mit Systemrechten operierenden Fenster, über das die Eingaben des Nutzers in die fremden Schriftzeichen umgewandelt werden.

Der dazugehörige Prozess nennt sich CTF, wobei Ormandy bisher nicht rausfinden konnte, wofür diese mutmaßliche Abkürzung steht. Diese Technik stammt aus den Urzeiten von Windows XP und hat sich seit Windows Vista nicht viel geändert. Sie ist sehr komplex und, wie Ormandy jetzt feststellte, löchrig. Außerdem hat die ganze Infrastruktur absolut keine Mechanismen, Zugangsrechte umzusetzen oder zu kontrollieren. Oh, oh, kein gutes Zeichen.

Wie sich herausstellt, können beliebige Nutzer unter Windows einen CTF-Prozess starten und andere Programmfenster dazu bringen, sich mit diesem – im Fall eines Angriffes manipulierten – CTF-Prozess zu verbinden. Inhärent im Design dieser Infrastruktur ist die Idee, dass Windows-Fenster einer solchen CTF-Aufforderung gehorchen müssen, da sonst die Änderung der Eingabesprache und deren Hilfsmechanismen, wie ein eventuell vorhandener IME, nicht greifen.

Das gilt auch für Programme, die mit Admin-Rechten operieren. Da der Angreifer die Kontrolle über den CTF-Prozess hat, kann er so als einfacher Benutzer seine Eingaben in einen Kontext überführen, in dem sie mit Systemrechten ausgestattet sind. Ormandy war nach dieser Entdeckung sofort klar, dass er auf diese Weise Rechteausweitungs-Angriffe fahren und aus Schutzmechanismen wie Sandbox-Umgebungen ausbrechen kann. Er begab sich daran, das CTF-Protokoll mittels Reverse Engineering nachzubauen und entwickelte ein Kommandozeilen-Werkzeug, um dessen Schwachstellen auszunutzen.

Per CTF lässt sich eine Administrator-Komandozeile öffnen. Die UAC-Abfrage kann man dabei einfach selbst abnicken, ohne dafür den eigentlichen Besitzer des Systems stören zu müssen.

Per CTF lässt sich eine Administrator-Komandozeile öffnen. Die UAC-Abfrage kann man dabei einfach selbst abnicken, ohne dafür den eigentlichen Besitzer des Systems stören zu müssen.

(Bild: Tavis Ormandy / Project Zero)

Zwar werden die Eingaben von normalen Fenstern in Programme, die mit Admin-Rechten laufen übernommen, aber wie bekommt ein Angreifer ein solches Fenster ohne Admin-Rechte überhaupt gestartet? Wie sich herausstellt, läuft auf jedem Windows-System ein Anmeldebildschirm der, nötigerweise, mit Admin-Rechten ausgestattet ist. Und dieser lässt sich mit Ormandys CTF-Tool ansprechen. Schließlich will ein Anwender seine Spracheingabe-Hilfen eventuell auch beim Anmelden am System verwenden.

Nun kann der Angreifer einen der vielen Speicherverarbeitungsfehler, die Ormandy im CTF-Protokoll gefunden hat, missbrauchen, um Code auszuführen. Oder, viel einfacher, er könnte warten bis ein Admin Befehle in eine Kommandozeile eingibt und diese dann manipulieren. Laut Ormandy kann man auch den „Als Administrator starten“-Befehl der User Access Control (UAC) von Windows mit CTF ansprechen und ohne Eingabe eines Anwenders seine Programme auf diese Art mit Systemrechten starten.

Microsoft hat die mit CVE-2019-1162 versehene Sicherheitslücke mit dem gestrigen Patch-Tuesday-Update in allen unterstützten Windows-Versionen behoben. Auf Grund von Ormandys Ausführungen scheint es allerdings fast sicher, dass weitere Lücken in dem Uralt-Code von CTF stecken.

Immerhin kann ein Angreifer nur mit dieser Lücke alleine keinen Angriff von außen ausführen. Er muss bereits in ein System eingedrungen sein und überhaupt die Möglichkeit haben, Code auszuführen. Die Lücke eignet sich also nur zur Ausweitung von Benutzerrechten.

Quelle: https://www.heise.de/security/meldung/Horror-aus-der-Windows-Steinzeit-Ueber-die-Texteingabe-Hilfe-zum-Admin-4496709.html