Details über die Windows-Lücke zur Rechteausweitung

Ende vergangener Woche hat Microsoft eine Sicherheitsmeldung zu einer Schwachstelle in Windows veröffentlicht, durch die Anwender ihre Rechte im System ausweiten können. Inzwischen wurden Details zur Lücke bekannt.

In Pocket speichern vorlesen Druckansicht 115 Kommentare lesen
Lesezeit: 3 Min.
Von

Eine Schwachstelle, durch die lokale Anwender oder angemeldete Nutzer mit Zugriffsrechten auf einen Internet Information Server (IIS) oder MS-SQL-Server ihre Rechte ausweiten können, hat Microsoft Ende vergangener Woche in einer Sicherheitswarnung gemeldet. Als besonders gefährdet stufte Microsoft Serverbetreiber ein, die die Ausführung von Anwendercode etwa auf dem IIS und dem SQL-Server gestatten. Dazu gehören beispielsweise Hosting-Provider.

Erste Details hat der Entdecker der Schwachstelle, Cesar Cerrudo vom Sicherheitsdienstleister Argeniss, auf der Sicherheitskonferenz HITBSecConf2008 vorgestellt.

Die Schwachstelle beruht darauf, dass ein als Dienst laufender Prozess den sogenannten Sicherheits-Token eines anderen Prozesses übernehmen kann. In diesem Token vermerkt Windows die Rechte eines Prozesses, beispielsweise das Benutzerkonto, in dem der Prozess läuft. Eines der Rechte in diesen Sicherheits-Token, SeImpersonatePrivilege, erlaubt es einem Prozess, einen Thread mit anderen Sicherheitsbeschränkungen auszuführen, als der Eltern-Prozess besitzt.

Unter Windows XP und Server 2003 können Dienste in den Benutzerkonten Local Service, Network Service oder Local System laufen, wobei nur Local System den vollständigen Systemzugriff ermöglicht. Die Dienste können nicht direkt aufeinander zugreifen. Laut Cerrudo haben jedoch die Dienste in den beiden Betriebssystemen das Recht, die Zugriffseinschränkungen in den Access Control Lists (ACLs) des Dienstes zu verändern (WRITE_DAC), wodurch alle Dienste die Sicherheits-Token eines anderen Dienstes übernehmen können.

Als Beispiel nennt Cerrudo den Dienst Microsoft Distributed Transaction Coordinator (MSDTC), bei dem ein Dienst den Sicherheits-Token mit Impersonation-Rechten auf Network Service durch den Aufruf von DtcGetTransactionManagerEx() erhalten kann. Mit diesem Token kann der Prozess auf Threads des Dienstes Remote Procedure Call System Services (RPCSS) zugreifen, die mit ihrem Sicherheits-Token die Rechte von Local System anfordern können.

Unter Windows Vista und Server 2008 hat Microsoft die Dienste besser gesichert. Sie laufen mit so wenig Rechten wie möglich (least privilege), der Sicherheits-Token ist schreibgeschützt, und jeder Dienst hat eine eigene Security-ID. Cerrudos Präsentation zufolge können Dienste jedoch Arbeit auf Threads aus sogenannten Thread Pools verteilen – die auf andere Threads, die im selben Benutzer-Konto laufen, zugreifen können. Dadurch lässt sich der Schutz durch die eigene Security-ID umgehen. Außerdem sind nur Sicherheits-Token einiger Dienste schreibgeschützt.

Cerrudo erläutert, dass etwa der WMI-Dienst (WmiPrvSE.exe) von Windows Vista und Server 2008 ungeschützt ist und die Rechte besitzt, auf Local System zuzugreifen. Dazu müsse ein Dienst WMI-Funktionen nutzen, die Funktionen CloseHandle und OpenThreadToken patchen und anschließend alle Token-Handles durchtesten, bis das Local-System-Token gefunden wurde.

Ein Beispielsprogramm, das die Lücke demonstriert, will Cerrudo noch nicht veröffentlichen. Es soll vorführen, wie eine DLL von einer ASP-.NET-Webseite in den RPCSS-Dienst injiziert wird, der im Konto Network Service läuft und anschließend die DLL in den IIS-Dienst einschleust, der mit SYSTEM-Rechten läuft. Cerrudo will den Code erst bereitstellen, wenn Microsoft die Lücken abgedichtet hat. Allerdings ist noch immer unklar, wann das passieren wird.

Siehe dazu auch:

(dmk)