Obligatorische Integritätskontrolle

Die obligatorische Integritätssteuerung (Mandatory Integrity Control, MIC) bietet einen Mechanismus zum Steuern des Zugriffs auf sicherungsfähige Objekte. Dieser Mechanismus dient zusätzlich zur diskretionären Zugriffssteuerung und wertet den Zugriff aus, bevor Zugriffsprüfungen für die diskretionäre Zugriffssteuerungsliste (DACL) eines Objekts ausgewertet werden.

MIC verwendet Integritätsstufen und obligatorische Richtlinien, um den Zugriff zu bewerten. Sicherheitsprinzipalen und sicherungsfähigen Objekten werden Integritätsebenen zugewiesen, die ihre Schutz- oder Zugriffsebenen bestimmen. Beispielsweise kann ein Prinzipal mit einer niedrigen Integritätsebene nicht in ein Objekt mit mittlerer Integritätsebene schreiben, auch wenn die DACL dieses Objekts Schreibzugriff auf den Prinzipal zulässt.

Windows definiert vier Integritätsstufen: niedrig, mittel, hoch und System. Standardbenutzer erhalten mittlere, erhöhte Benutzer erhalten high. Prozesse, die Sie starten, und Objekte, die Sie erstellen, erhalten Ihre Integritätsebene (mittel oder hoch) oder niedrig, wenn die Ebene der ausführbaren Datei niedrig ist; Systemdienste erhalten Systemintegrität. Objekte, denen eine Integritätsbezeichnung fehlt, werden vom Betriebssystem als Mittel behandelt. Dadurch wird verhindert, dass Code mit niedriger Integrität nicht beschriftete Objekte ändert. Darüber hinaus stellt Windows sicher, dass Prozesse, die mit einem niedrigen Integritätsgrad ausgeführt werden, keinen Zugriff auf einen Prozess erhalten können, der einem App-Container zugeordnet ist.

Integritätsbezeichnungen

Integritätsbezeichnungen geben die Integritätsebenen von sicherungsfähigen Objekten und Sicherheitsprinzipalen an. Integritätsbezeichnungen werden durch Integritäts-SIDs dargestellt. Die Integritäts-SID für ein sicherungsfähiges Objekt wird in seiner Systemzugriffssteuerungsliste (System Access Control List , SACL) gespeichert. Die SACL enthält einen SYSTEM_MANDATORY_LABEL_ACEZugriffssteuerungseintrag (ACE), der wiederum die Integritäts-SID enthält. Jedes Objekt ohne Integritäts-SID wird so behandelt, als hätte es eine mittlere Integrität.

Die Integritäts-SID für einen Sicherheitsprinzipal wird in seinem Zugriffstoken gespeichert. Ein Zugriffstoken kann mindestens eine Integritäts-SIDs enthalten.

Ausführliche Informationen zu den definierten Integritäts-SIDs finden Sie unter Bekannte SIDs.

Prozesserstellung

Wenn ein Benutzer versucht, eine ausführbare Datei zu starten, wird der neue Prozess mit dem Minimum der Benutzerintegritätsebene und der Dateiintegritätsebene erstellt. Dies bedeutet, dass der neue Prozess niemals mit höherer Integrität als die ausführbare Datei ausgeführt wird. Wenn der Administratorbenutzer ein Programm mit niedriger Integrität ausführt, wird das Token für die neuen Prozessfunktionen mit der niedrigen Integritätsebene verwendet. Dadurch wird ein Benutzer, der nicht vertrauenswürdigen Code startet, vor böswilligen Handlungen geschützt, die von diesem Code ausgeführt werden. Die Benutzerdaten, die sich auf der typischen Benutzerintegritätsebene befinden, sind vor diesem neuen Prozess schreibgeschützt.

Obligatorische Richtlinie

Die SYSTEM_MANDATORY_LABEL_ACE ACE in der SACL eines sicherungsfähigen Objekts enthält eine Zugriffsmaske, die den Zugriff angibt, für den Prinzipale mit niedrigeren Integritätsstufen als dem Objekt gewährt werden. Die für diese Zugriffsmaske definierten Werte sind SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, SYSTEM_MANDATORY_LABEL_NO_READ_UP und SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP. Standardmäßig erstellt das System jedes Objekt mit einer Zugriffsmaske von SYSTEM_MANDATORY_LABEL_NO_WRITE_UP.

Jedes Zugriffstoken gibt auch eine obligatorische Richtlinie an, die von der lokalen Sicherheitsbehörde (Local Security Authority , LSA) festgelegt wird, wenn das Token erstellt wird. Diese Richtlinie wird durch eine TOKEN_MANDATORY_POLICY Struktur angegeben , die dem Token zugeordnet ist. Diese Struktur kann abgefragt werden, indem die GetTokenInformation-Funktion aufgerufen wird, wobei der Wert des TokenInformationClass-Parameters auf TokenMandatoryPolicy festgelegt ist.