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.
Anzeige
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.
Quelle:
www.heise.de
Hatte am Freitag schon erschreckend diese News gelesen, als das Thema aufkam. Da man nun etwas mehr Informationen hat mache ich mir da schon ein paar Gedanken. Dieses Problem ist nicht nur ein einfaches Programmierproblem, es ist ein prizipelles Strukturproblem. Da viele Dienste ja diese "Lücke" brauchen um überhaupt zu funktionieren, gestaltet sich auch die Behebung deutlich schwieriger. Sollte also nen Patch kommen, so rechne ich damit, dass sich so einige Programme erstmal nicht mehr ordentlich ausführen lassen werden.
Was meint ihr dazu? Und an unsere lieben Linuxtrolle: Lasst bitte sinnlose Kommentare und antwortet vernünftig.