Vistas Integrity Level, Teil 1

Seite 2: Allmächtiger Besitzer

Inhaltsverzeichnis

Die DACL im Security Descriptor eines Objekts bestimmt, wer was mit ihm anstellen darf.

Das soeben geschilderte Sicherheitsmodell nennt sich auch Discretionary Access Control (DAC). Es heißt so, weil es im Ermessen (engl. discretion) des Besitzers eines Objekts liegt, Zugriffsrechte zu vergeben. Der Besitzer nimmt also eine Sonderrolle ein: Er darf jederzeit die DACL seiner Objekte verändern. Wenn die DACL eines seiner Objekte ihm den Zugriff verwehrt, kann er sich diesen in zwei Schritten verschaffen: Erst ändert er die DACL so, dass sie ihm Rechte einräumt, dann öffnet er das Objekt.

Administratoren müssen nötigenfalls einen Dreisprung machen: Sie führen das Privileg SeTakeOwnership in ihrem Access Token, das sie berechtigt, den Besitzer beliebiger Objekte zu ändern. Wenn also ein Administrator auf ein störrisches Objekt zugreifen will, muss er zunächst von ihm Besitz ergreifen, sich dann in der DACL ein Zugriffsrecht einräumen und kann es schließlich öffnen.

Durch diese Eigenschaften eignet sich die Discretionary Access Control nicht gut, um zur Vorbeugung gegen Sicherheitslücken gezielt die Rechte eines Prozesses wie des Internet Explorer einzuschränken. Natürlich könnte man dem IE eine spezielle SID in sein Access Token schreiben und minutiös DACLs setzen, die dieser SID allerlei verbieten. Doch solange der Prozess unter der User-ID des angemeldeten Benutzers läuft, lässt sich der Zugriff auf Objekte dieses Benutzers nicht verhindern.

Das mag einer der Gründe sein, warum sich Microsoft entschieden hat, in Vista einen zusätzlichen Sicherheitsmechanismus zu implementieren, der Vorrang vor der DAC hat, also Zugriffe auch dann verhindert, wenn sie die DAC erlauben würde. Dazu bekommt jeder Prozess in seinem Access Token einen sogenannten Integrity Level verpasst, der ausdrücken soll, wie vertrauenswürdig er ist. In Vista gibt es die vier Stufen Low, Medium, High und System: Auf der Stufe Medium laufen Programme mit normalen Benutzerrechten, High ist für administrative Tätigkeiten gedacht und die noch höhere Stufe System einigen Betriebssystemdiensten vorbehalten. Ganz unten, auf der Stufe Low, rangiert der Internet Explorer.

In der deutschen Vista-Version hat Microsoft Integrity Level unglücklich mit "Verbindlichkeitsstufe" übersetzt und aus den Labels, die gleich zur Sprache kommen, "Verbindliche Beschriftungen" gemacht. Da bleibe ich im Folgenden doch lieber bei den englischen Begriffen - wann immer Vista Ihnen etwas von "Verbindliche Beschriftung\Mittlere Verbindlichkeitsstufe" erzählt, denken Sie einfach Medium.

Der Process Explorer liefert detaillierte Informationen zu allen im System laufenden Prozessen, insbesondere zu deren Integrity Level-

Jedes Objekt im System befindet sich auf einer der vier genannten Stufen, gekennzeichnet durch ein Label in seinem Security Descriptor. Die Grundidee der Integrity Levels ist es nun, dass Prozesse, die auf einer niedrigeren Stufe laufen, Objekten höherer Stufe nichts anhaben können. So darf der Low-Level-IE die auf Medium stehenden Benutzerdaten nicht anrühren und schon gar nicht die noch höher eingestuften Systemkomponenten. Zugriffe von unten nach oben sind also beschränkt, während auf gleicher Ebene oder von oben nach unten alles erlaubt ist - im Rahmen der Discretionary Access Control, die ja auch noch ein Wörtchen mitzureden hat.

Der auf niedrigem Integrity Level laufende Internet Explorer hat nur wenige Privilegien, wie ein Blick in sein Access Token zeigt.

Das Label für den Integrity Level eines Objekts hat Microsoft in eine bisher nicht erwähnte Komponente des Security Descriptor gesteckt, die System Access Control List (SACL). Sie hat im Prinzip den gleichen Aufbau wie die DACL, ist also eine Liste von Einträgen, die aus einem Typ, einer SID und einer Handvoll Rechte-Bits bestehen. In XP dient die SACL nur dazu, bestimmte Zugriffsversuche auf ein Objekt zu protokollieren.

Vista führt einen neuen Eintragstyp für das Integrity Label ein sowie spezielle SIDs für die vier Stufen (durch die Dokumentation spukt auch noch eine fünfte namens Untrusted, die wir aber im Diesseits noch nicht gesichtet haben). In der SACL ist das Integrity Label gut aufgehoben, weil man besondere Privilegien braucht, um sie zu ändern. Insbesondere genügt es nicht, der Besitzer eines Objekts zu sein, um die SACL zu ändern.