Microsoft hat mit den August 2019-Updates auch eine gravierende, 20 Jahre alte Schwachstelle in allen Windows-Versionen geschlossen, die eine Ausweitung der Benutzerrechte ermöglicht. Googles Sicherheitsforscher Tavis Ormandi hat nun die Details offen gelegt. Microsoft stuft die Ausnutzbarkeit aber als 'weniger wahrscheinlich' ein und hat im August 2019 einen Sicherheitspatch zum Schließen freigegeben.
Anzeige
Die Information liegt bereits seit einigen Stunden vor. Sicherheitsforscher Tavis Ormandi von Googles Projekt-Zero hat nun die Details des 'Kaninchen-Lochs' offen gelegt.
Here's a video of the exploit I wrote, I actually had to write a custom rudimentary scripting language https://t.co/eO74xahbjs
— Tavis Ormandy (@taviso) August 13, 2019
Die Details hat Ormandy in diesem Beitrag sowie auf GitHub offen gelegt. The Hacker News hat das Thema aufgegriffen und diesen Artikel veröffentlicht.
Schwachstelle in Microsofts CTF
Unter Windows können Fenster auf dem gleichen Desktop miteinander kommunizieren. Dies eröffnet die Möglichkeit, Das Programmfenster andere Fenster bewegen, deren Größe ändern, oder Fenster schließen. Und Fenster können sich oder sogar gegenseitig Eingaben senden. Zuständig für diese Kommunikation ist das CTF-Protokoll, welches seit Windows XP implementiert wurde.
Bezüglich der genauen Bedeutung des Kürzels CTF gibt es unterschiedliche Interpretationen (siehe und hier). Es gibt das Collaborative Translation Framework, was eine API für mehrsprachige Texte bereitstellt und veraltet ist. Es gibt auch ein Text Service Framework, welches seit Windows XP erweiterte Text-Eingabemethoden unterstützen soll.
Die spannende Frage für Ormandi war: Können Fenster, die mit normalen Benutzerrechten laufen, Befehle an Fenster mit Systemrechten senden? Input-Mode-Editoren für fremdsprachige Eingaben (japanische oder chinesische Texte über westliche Tastaturen eingeben) sind beispielsweise solche Prozesse, die mit höheren Rechten laufen.
Anzeige
Meldet sich ein Benutzer an Windows an, startet er einen CTF-Monitordienst. Dieser wickelt die Kommunikation zwischen allen Clients ab, um fremdsprachige Eingaben umzuwandeln. Dazu schreibt Ormandi:
"You might have noticed the ctfmon service in task manager, it is responsible for notifying applications about changes in keyboard layout or input methods. The kernel forces applications to connect to the ctfmon service when they start, and then exchange messages with other clients and receive notifications from the service."
Der ctfmon-Dienst informiert also Anwendungen über die Änderungen an der Eingabemethode, wobei der Windows-Kernel die Anwendungen mit dem Dienst kommunizieren lässt. Der Dienst hat aber erhöhte Berechtigungen. Nun soll aber die UIPI, User Interface Privilege Isolation, verhindern und die Möglichkeit blocken, dass ein nicht privilegiertes Fenster Befehle an ein hochprivilegiertes Fenster sendet.
Fehlende Zugriffskontrolle im ctfmon-Dienst
So weit die Theorie, für einen Praxistest hat Ormandi dann ein kleines Tool (ctftool) geschrieben. Mit diesem interaktiven Commandozeilen-Tool konnte er dann mit dem CTF experimentieren. Informationen zu diesem Tool finden sich hier, wobei Ormandi dieses unter Windows 7, Windows 8 und Windows 10 in 32- sowie 64-Bit-Umgebungen getestet hat.
Dabei machte er die Feststellung, dass es in ctfmon keine Prüfung der Zugriffsberechtigungen und Authentifizierung gibt. Jede Anwendung, jeder Benutzer und sogar Prozesse in einer Sandbox können:
- eine Verbindung zur CTF-Sitzung herstellen,
- aus jeder anderen Sitzung Texte eines beliebigen Fensters lesen und schreiben,
- ihre Thread-ID, Prozess-ID und HWND fälschen.
Dies ermöglicht es, sich als CTF-Dienst gegenüber andere Anwendungen auszugeben. Das klappt auch bei privilegierten Anwendungen. Dies lässt sich dann nutzen, um diese Anwendungen austricksen, um sich mit diesen zu verbinden und diesen Befehle zu senden. Es ermöglicht auch, aus Sandboxen auszubrechen und eine Eskalation von Privilegien zu erreichen. Tavis Ormandy demonstriert dies in nachfolgendem Video.
(Quelle: YouTube)
Ormandis schreibt, das es möglich war, über Sessions hinweg zu kommunizieren und die NT-Sicherheitsmechanismen auszuhebeln. Die Schwachstelle besteht seit fast zwanzig Jahren, und niemand hat die bemerkt. So viel zur Versicherung Microsofts 'mit Windows 10 wird alles sicherer, denn alles ist neu und besser implementiert'.
Microsoft patcht im August 2019
Tavis Ormandis hat die Schwachstelle und seine Erkenntnisse in diesem länglichen Blog-Beitrag umfassend beschrieben und das Test-Tool auf GitHub veröffentlicht. Wesentlich kompakter und lesefreundlicher ist der englischsprachige Beitrag bei The Hacker News oder der deutschsprachige heise-Artikel.
Relevant ist für Nutzer ist lediglich, dass die Schwachstelle CVE-2019-1162 in ctfmon existiert und ausnutzbar ist. Ormandis hat Microsoft über diese Schwachstelle informiert, worauf diese im August 2019 das Problem in Sicherheitsupdates für diverse Windows-Versionen adressiert haben. Microsoft hat die Details im Beitrag CVE-2019-1162 | Windows ALPC Elevation of Privilege Vulnerability veröffentlicht und dort auch die betreffenden Updates verlinkt. Die Windows-Entwickler stufen die Ausnutzbarkeit dieser Schwachstelle als 'wenig wahrscheinlich' (Exploitation Less Likely) ein.
Anzeige
"Und Fenster können sich oder sogar gegenseitig Eingaben senden. Zuständig für diese Kommunikation ist das CTF-Protokoll"
AUTSCH!
Nein, dafür ist NICHT CTF zuständig; die Kommunikation zwischen Fenster(prozedure)n ist eine BASIS-Funktion von Windows!
Vor Windows Vista, mit dem Microsoft das Sicherheizkasperltheater "Benutzerkontensteuerung" sowie die dieses unterstützende UIPI (User Interface Privilege Isolation) und die "Session 0 Isolation" eingeführt hat, waren Angriffe wie der von Tavis Ormandy demonstrierte als Shatter-Attacks WOHLbekannt. Diese sind allerdings auf die jeweilige Benutzersitzung und deren Desktop(s) beschränkt: Desktops (und Sitzungen) sind zugesagte und DOKUMENTIERTE Sicherheitsbarrieren.
CTF durchbricht diese Barrieren und ihre Sicherheitszusage.
Windows 10 Defender erkennt die ctftool.exe schon.
Ach, seit 20 Jahren und nun sind diese nicht mehr. Das ist doch eine gute Nachricht.
Wie heißt eigentlich das Windows Programm (Vor-)Vor Windows XP. Das ist auf einem Notebook vom Typ Sony Vario PCG-F403 drauf.
Es ist schön zu hören, dass man sich weltweit kümmert. Da soll mir noch mal was einer davon erzählen, dass der Computerbranche Obsoleszenz vorgeworfen wird, schon gar nicht dem Weltverbesserer Microsoft.
Also der Computer von Konrad Zuse ist wohl sicher. Aber nichts genaues weiß man nicht. Irgenwann kommt einer und schließt eine Lücke, die schon 70 Jahre existiert. Wetten werden angenommen.
Ist also so, wie bei Linux https://www.heise.de/security/meldung/X-org-Luecke-nach-20-Jahren-gestopft-1976429.html