Eine der wesentlichen Änderungen in Windows 7 gegenüber Windows Vista besteht darin, dass die Benutzerkontensteuerung (User Account Control, UAC) nun steuerbar ist: Der Administrator eines Systems hat die Möglichkeit, das Verhalten von UAC in vier Stufen festzulegen.
Die höchste Stufe verhält sich wie unter Vista und Windows Server 2008: UAC fragt bei jeder Systemänderung nach und bittet um Bestätigung durch einen Administrator. In der zweithöchsten Stufe fragt UAC nur, wenn ein Programm eine solche Änderung macht, schweigt aber, wenn der Administrator manuell eine solche Änderung ausführt. So geht es weiter, bis in der vierten, niedrigsten Stufe UAC abgeschaltet ist und sich gar nicht meldet. Als Standard nach der Installation ist die zweithöchste Stufe voreingestellt.
Laut Microsoft sei dies eine angemessene Reaktion auf das Feedback von Kunden und ein sinnvoller Kompromiss zwischen Sicherheit und Komfort. Nun ist das Abwägen zwischen diesen beiden Faktoren – Sicherheit auf der einen, Komfort auf der anderen Seite – immer eine heikle Sache. Warum entsteht in der aktuellen Beta von Windows 7 ein gravierendes und hochgefährliches Problem daraus?
Update 6. Februar 2009: Microsoft hat nun angekündigt, das hier beschriebene Problem zu beheben. Die Änderung soll in der nächsten Vorabversion enthalten sein (dem Release Candidate, RC). Mit einem Patch für die Beta ist also nicht zu rechnen. Details dazu:
[Engineering Windows 7 : UAC Feedback and Follow-Up]
http://blogs.msdn.com/e7/archive/2009/02/05/uac-feedback-and-follow-up.aspxAus diesem Grund entferne ich einige Details aus dem ursprünglichen Text dieses Artikels.
Das Problem in der Beta-Fassung liegt wie so oft in der Implementierung – und leider wieder in den Standards, die Windows direkt nach der Installation vorgibt. Das ist schade, denn aus diesem Stadium glaubten wir Windows schon heraus.
Windows hat in Wirklichkeit keine zuverlässige Möglichkeit, eine manuelle Aktion von einer programmgesteuerten Aktion zu unterscheiden. Hinter den Kulissen werden daher einige Tricks angewandt, um das neue UAC-Verhalten zu erreichen. Einer dieser Tricks besteht darin, dass das Programm, mit dem die UAC-Verhaltensstufe festgelegt wird, keine Programmierschnittstelle hat. Ein anderer Trick ist, dass bestimmte Systemkomponenten eine so genannte “Silent Elevation” ausführen. Das bedeutet, dass diese Bestandteile von Windows ohne UAC-Nachfrage vom eingeschränkten auf das volle Administratortoken wechseln und dadurch den direkten “Durchgriff” des Administrators ermöglichen.
Wer hier zweifelt, ob das eine sinnvolle Einrichtung ist, bekommt durch die Beta von Windows 7 leider Recht. Es gibt bereits zwei Beweise, dass diese neue Konstruktion nicht sicher ist. Das Erschreckende dabei: Beide “Proofs of Concept” sind nicht von versierten Hackern erzeugt worden und erfordern keine wilden Programmiertricks. Es handelt sich um sehr simple Angriffe, die in der Standardeinstellung nach der Installation funktionieren.
Beide Angriffe haben zwei zentrale Voraussetzungen. Diese entsprechen aber genau dem Zustand, in dem Windows 7 sich (zumindest in der Beta) direkt nach dem Setup befindet:
- UAC ist nicht auf die höchste Stufe (“Immer warnen”) eingestellt, sondern maximal auf die zweithöchste Stufe
- Der angemeldete Benutzer ist Mitglied der Gruppe “Administratoren”
UAC abschalten per Skript
Im ersten Fall wird das Steuerprogramm für die UAC-Levels angegriffen. Der Trick ist simpel: Dem Betriebssystem werden mit einem Skript Tastendrücke vorgegaukelt, sodass es annimmt, dass ein Benutzer die Änderung ausführt und kein Programm. Das Skript stellt nun einfach UAC auf den niedrigsten Level – deaktiviert es also. UAC fragt nicht nach. Ein einfacher Reboot reicht aus, und die Änderung ist aktiv.
Hier die Beschreibung mit dem Code des Proof of Concept:
[Malware can turn off UAC in Windows 7; “By design” says Microsoft – Within Windows]
http://www.withinwindows.com/2009/01/30/malware-can-turn-off-uac-in-windows-7-by-design-says-microsoft
UAC ganz umgehen
Einen zweiten simplen, aber effektiven Angriff hat Sven Groot (http://www.ookii.org) zuerst in den Beta-Newsgroups veröffentlicht. Sein Ansatz, der auch von einigen Blogs nachvollzogen wurde, beruht darauf, dass Windows, wenn UAC nicht auf dem höchsten Level läuft, bestimmte Systemaufrufe ohne UAC-Nachfrage direkt mit Administratorberechtigungen ausführt. Leider trifft das auch auf das Programm rundll32.exe zu, das in vielen Situationen von beliebigen Anwendungen genutzt wird. Das Programm führt DLLs aus – und zwar wiederum beliebige, die es nicht weiter prüft. Auf diese Weise ist es einem Angreifer also möglich, irgendwelche DLLs mit Administratorrechten aufzurufen – und UAC fragt nicht nach. Der Angriff bleibt dadurch unbemerkt.
Hier eine ausführliche Beschreibung, wie das funktioniert:
[Second Windows 7 beta UAC security flaw: malware can silently self-elevate with default UAC policy – istartedsomething]
http://www.istartedsomething.com/20090204/second-windows-7-uac-flaw-malware-self-elevate/
Fazit
Microsoft ist in der Beta ein beeindruckender Beweis gelungen (oder passender: unterlaufen), dass Sicherheit und Komfort nicht so ohne Weiteres zusammengehen. Die Standardeinstellung der Benutzerkontensteuerung (UAC) in der Beta ermöglicht mit simpelsten Methoden, das Schutzsystem komplett zu umgehen. Dadurch ist UAC faktisch wirkungslos.
Das Problem selbst war bereits im Oktober 2008 bekannt:
[Windows 7 UAC crippled – I broke it already! | The Coffeehouse | Channel 9]
http://channel9.msdn.com/forums/Coffeehouse/437545-Windows-7-UAC-crippled-I-broke-it-already/?CommentID=437606
Nun sieht es so aus, als würde Microsoft diese Lücke noch rechtzeitig vor dem Release stopfen! Das ist gut so, denn Windows 7 hat einige wirklich spannende Neuerungen zu bieten, die es nicht verdienen, hinter diesem (vermutlich gut lösbaren) Problem zurückzustehen.
In einer installierten Beta ist die einzige Möglichkeit, das Problem zu umgehen, die UAC-Einstellung ausdrücklich auf die oberste Stufe umzustellen. Dadurch verhält sich UAC wie in Vista und Windows Server 2008 und schützt das System wirkungsvoll.
http://faq-o-matic.net/?p=1108