Vistas Integrity Level, Teil 2

Standardmäßig nutzt unter Vista nur der Internet Explorer die neuen Integrity Level. Mit Bordmitteln kann man sie auch auf andere Programme wie den Firefox anwenden, um das System noch sicherer zu machen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 8 Min.
Von
  • Dr. Harald Bögeholz
Inhaltsverzeichnis

Der erste Teil ließ offen, wie überhaupt Prozesse zu ihren Berechtigungen und damit zu ihrem Integrity Level kommen. Gemäß dem von Vista-Vorgängern bekannten Windows-Sicherheitsmodell erbt ein Kindprozess normalerweise das Access Token seines Vaters. Vista ergänzt dieses Vorgehen um ein Bit im Access Token namens TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN, das für normale Benutzer gesetzt, in Administrator-Tokens jedoch gelöscht ist. Es bewirkt, dass neue Prozesse als Integrity Level das Minimum aus dem des erzeugenden Prozesses und dem der Datei bekommen, die den ausführbaren Code enthält. Damit kann ein normaler Anwender keine Prozesse mit einem Integrity Level starten, der höher als der der Exe-Datei ist.

Sollte also durch eine Sicherheitslücke in dem auf Low laufenden Internet Explorer Schadcode zur Ausführung gelangen, dann könnte dieser Programme auch nur auf der niedrigen Stufe starten. Dateien, die der IE in seine Verzeichnisse schreibt, erhalten per Vererbung den Integrity Level Low. Das schützt den Anwender davor, sie versehentlich auf einer höheren Stufe zu starten.

Um auszuprobieren, was ein mit Integrity Level Low laufender Prozess wie der IE so alles darf, öffnen Sie mit normalen Benutzerrechten eine Eingabeaufforderung und vergewissern sich mit whoami /all, dass sie auf der Stufe Medium läuft. Kopieren Sie den Kommandointerpreter cmd.exe aus \Windows\System32 in Ihr LocalLow-Verzeichnis. Mit icacls cmd.exe können Sie sich vergewissern, dass die Datei den Integrity Level Low hat; das "(I)" steht für inherited - geerbt. Wenn Sie nun diese cmd.exe starten, erhält der Prozess den Integrity Level Low, was sich wieder mit whoami /all überprüfen lässt.

Vergewissern Sie sich ruhig einmal, dass Sie von dieser Low-Kommandozeile aus selbst Ihre eigenen Dateien nicht mehr verändern können. Im Process Explorer lässt sich übrigens eine Spalte einblenden, die den Integrity Level anzeigt.

Whoami zeigt die Policy des Access Token leider nicht an. Wer der Sprache C mächtig ist und einen Compiler sowie das Vista-SDK zur Hand hat, kann aber vergleichsweise einfach hineinschauen. Hacken Sie dazu in das Beispielprogramm Mytoken aus dem SDK ein paar Zeilen hinein, die mit GetTokenInformation() die TokenMandatoryPolicy abfragen. Dort sehen Sie dann auch noch das andere Policy-Bit TOKEN_MANDATORY_POLICY_NO_WRITE_UP. Es bewirkt laut Dokumentation, dass man mit diesem Access Token nicht schreibend auf Objekte mit höherem Integrity Level zugreifen kann, und war in den von mir untersuchten Access Tokens immer gesetzt.