[IE][W] Protected Mode, Integrity Level und Sandboxing

Aktuell ist das Thema Sandboxing in vieler Munde, daher möchte ich hier die technischen Hintergründe näher erläutern:

Agenda

  1. Einführung
  2. Was ist und woher kommt der Protected Mode
  3. Aber was genau ist der Protected Mode
  4. Wie kann ich das IL Verhalten sehen?
  5. Integrity Level
  6. Empfehlung
  7. Und was ist mit Windows XP
  8. Sonstiges
  9. Links

Einführung

Es war einmal ein Betriebssystem welches ab und an dazu benutzt wurde um Inhalte aus dem Internet herunterzuladen. Sei es über den mitgelieferten Internet Browser (nennen wir ihn kurz IE) oder durch z.B. Mailprogramme, welche zum Teil auch in der Lage waren HTML Content darzustellen und dazu natürlich auch die Nähe zu o.g. IE suchten. Damals – es war eine wahrlich düstere und gefährliche Zeit – wussten die Bürger leider nur wenig von den Gefahren, die auf den weiten Straßen des globalen Straßennetzes auf sie warteten. So kam es von Zeit zur Zeit dazu, dass unbescholtene Bürger auf Dinge klickten, die gar fürchterliches auf ihren Reisekutschen anrichteten, denn niemand half ihnen, niemand hob das Schild um den Hieb der Räuber und die Pfeile aus dem Hinterhalt abzufangen.

Doch als sich die Überfälle auf die Bürger mehrten begriff der Hersteller der Kutschgefährte, dass dies so nicht bleiben darf und dass nicht der Nutzer das Schild heben muss, sondern die Karosserie ihn beschützen sollte.
Gedacht – getan – die nächste Version der Kutsche sah anders aus – schicker, aber auch sicherer und schneller. Die Angreifer schlugen sich ihre ach so scharfen Schwerter an der eisernen Hülle der Kutschen stumpf, und so sah der König des Landes, dass es seinen Bürgerinnen und Bürgern besser ging.

Jedoch musste er hilflos mitansehen, dass nicht jeder aus seinem Gefolge die neue Kutsche nutzt, obwohl jeder sein altes und überholtes Modell einfach und kostenlos durch das Neue ersetzen kann. Dies machte ihn sehr traurig und so befahl er dem Kutschenbauer seine Anstrengungen noch mehr zu erhöhen, damit das nächste Modell so prächtig ist, dass ein niemand sich davor zurückhalten kann dieses sofort zu nutzen.

Und siehe, das neue Modell war so gut, dass seine Bürgerinnen und Bürger den Wert erkannten und das neue Modell mehr und mehr nutzen, denn es ist nicht nur sicherer, sondern auch noch schneller und noch schöner!

Und wenn der König nicht gestorben ist, dann lebt er und sein Gefolge heute immer noch sicher und geschützt durch den Internet Explorer 9.

 

Was ist und woher kommt der Protected Mode?

Ist Sicherheit nur ein Märchen? Natürlich nicht – aber die negativen Vorurteile zur Sicherheit des Internet Explorers sind eins!

In den vergangenen Jahren wurden die Sicherheits-Mechanismen sowohl in Windows (XP->Vista->7) als auch im Internet Explorer (6->7->8->9) deutlich weiterentwickelt.
Neben dem Smartscreen-Filter, den Änderungen an DEP/NX, Codeoptimierungen, Trackingschutz, etc ist eine wesentliche Komponente bei der Sicherheit der sog. Protected Mode, oder wenn man so will der IE Sandbox.

Aber was genau ist der Protected Mode?

Mit Windows Vista haben wir das Sicherheitskonzept von Windows grundlegend geändert. Neben vielen anderen Mechanismen haben wir die sog. Integrity Level (IL) eingeführt.
Ohne zu technisch zu werden und vom eigentlichen Thema abzukommen kurz was ist das:

Der Protected Mode ist eine Sandbox Technologie – nicht mehr, aber auch nicht weniger.

Integrity Level

Etwas genauer:
Die Grundidee von ILs ist, dass jedes Objekt [ein Objekt kann eine Datei, ein Folder, ein Prozess, eigentlich alles auf einem Windows Betriebssystem sein] eine Sicherheitseinstufung (Integrity Level) erhält. Über diese IL wird definiert, welche Rechte ein Objekt hat und wie dieses mit anderen Objekten der gleichen oder eines anderen IL interagieren kann/darf.

Von diesen IL wurden 4 definiert:

  1. System/System – vorbehalten für System eigene Objekte, wie Services
  2. High/Hoch – dieses Level besitzen Objekte, die Administratoren zugeordnet werden können
  3. Medium/Mittel – dies ist das “normale” Benutzer Level
  4. Low/Niedrig – das niedrigste Level mit deutlich weniger Möglichkeiten als “Mittel”

Integrity Level werden – sofern nicht anders behandelt – vom Parent Objekt an das Child Objekt vererbt. D.h. ein Medium IL Prozess würde i.d.R. auch einen Medium IL Prozess erzeugen.

Beim IE7 war es noch so, dass bei einem Wechsel des ILs, extra ein neues Fenster (==Prozess) erzeugt werden musste, z.B. wenn ein Link von einer normalen Webseite (Protected Mode on => IL = Low) auf eine Webseite z.B: in der Trusted Sites Zone (Protected Mode off => IL = Medium) führte.

Dieses Verhalten wurde mit IE8 – und damit auch in IE9 ff. – durch die Technologie Loosly Coupled IE (LCIE) deutlich userfreundlicher gestaltet.

Seit Internet Explorer 8 werden nämlich beim Start eines IEs – zumindest mit der default Einstellung – genau zwei Prozesse gestartet:

  1. Der Verwaltungsprozess (oder auch “Brokerprozess”, der z.B. auch das eigentliche Fenster bereitstellt
  2. Der TAB-Prozess, der die Webseite anzeigt

Dabei ist es “normal”, dass der TAB Prozess im Protected Mode – also mit IL=low – gestartet wird und der Verwaltungsprozess mit IL=medium. Dies ist notwendig, damit z.B. Dateidownloads auch an das Betriebssystem übergeben werden können, denn wenn nur IL=low IE Prozesse existieren würden, so könnten auch Downloads nicht die Sandbox des IE verlassen!

Bei einem Wechsel von ILs im IE wird daher dann nicht mehr ein neues Fenster (==Broker) geöffnet, sondern unter der Haube ein neuer Prozess verwendet, der dann das entsprechende IL erhält – dies wird vom Broker Prozess gesteuert.
Übrigens: das Erstellen von Prozessen ist ein relativ “teurer” Vorgang in einem Betriebssystem. Daher versucht der IE seine eigenen Prozesse wiederzuverwenden. Und grade nach einem Wechsel zwischen ILs kann es also dazu kommen, dass es mehr Prozesse gibt, als man eigentlich erwarten würde. Diese “sterben” allerdings – sofern sie nicht anderweitig genutzt werden können – nach einer gewissen Zeit (~30s).

Ich freue mich übrigens, dass auch andere Browserhersteller sich endlich an unserem Konzept orientiert haben und vergleichbare Sandbox Modelle implementieren – zwar immer noch zu wenige, aber ich sehe optimistisch in die Zukunft, dass neben dieser vielleicht auch die anderen Sicherheitsmechanismen langsam Einzug halten!

Wie kann ich das IL Verhalten sehen?

Die einfachste Methode hierzu ist den Process Explorer von Sysinternals zu verwenden. Hier muss lediglich die Spalte “Integrity” hinzugefügt werden:

image

Im Screenshot zu sehen sind mehrere Internet Explorer Fenster (4), die dreimal je einen und einmal insg. 4 Tabs enthalten.

Empfehlung

Für Consumer / normale, nicht-firmen Nutzer:

Einfach die Default Einstellungen verwenden. Da für nicht Domänen Maschinen die Zonen nicht (bzw. nur in geringem Maße) verwendet werden, ist hier keine Aktion notwendig!

Für IT Pros:

Per Default ist der PM – also die Sandbox – für die Trusted Sites und Local Intranet Zone deaktiviert:

image

Dies dient dazu, dass insb. ältere Anwendungen, die u.U. auf veraltete ActiveX Controls zurückgreifen, weiter genutzt werden können.

Dies stellt einen “trade-off” zwischen Kompatibilität und Sicherheit dar.

Sofern also keine alten Anwendungen verwendet werden, oder ein Test ergeben hat, dass die alten Anwendungen keine Probleme mit dem Protected Mode haben, so sollte der Protected Mode auch für die Trusted Sites und Local Intranet Zone vorgegeben werden.

Aber auch wenn dies nicht möglich ist, so sollte zumindest für die Internet und die Restricted Sites Zone der PM über GPOs festgeschrieben werden!

Und was ist mit Windows XP?

Da unter Windows XP – und damit auch Windows Server 2003 – das Modell der Integrity Level nicht existiert, kann eine Sandbox über IL nicht erreicht werden!

Daher sollten Rechner, die heute noch mit Windows XP betrieben werden, alleine schon wegen der Sicherheit im Internet auf ein aktuelles Betriebssystem wie Windows 7 upgegradet werden.

Außerdem rennt die Zeit langsam davon, es sind beinahe nur noch 2 Jahre mit Extended Support für Windows XP übrig und wenn man von einem typischen Migrationsprojekt ausgeht, so wird das langsam knapp hier noch vor diesem Ende das Projekt zum Ende geführt zu haben.

Also neben der Sicherheit sollte auch aus Support Gründen (==keine Security Patches mehr) wenn nicht eh schon geschehen, dann genau jetzt ein Windows XP=>Windows 7 Migrations Projekt gestartet werden!
(Jede Applikations Kompatibilitätsanstrengung für Windows 7 wird auch Früchte für zukünftige Betriebssysteme tragen und ist somit weder heute noch in der Zukunft verschwendetes Geld!)

Sonstiges

Übrigens: Integrity Level funktionieren nur dann, wenn die User Account Control (UAC) aktiviert ist!
=> Unter gar keinen Umständen sollte die UAC deaktiviert werden!

Dies gilt genauso wenn der User “Administrator” verwendet wird. Auch dann existiert die Sicherung über ILs nicht!

 

Neben den Sicherheitsmechanismen, die auf Bit-Ebene implementiert wurden, eben wie PM, DEP, etc, ist es aber wenigstens genauso wichtig Mechanismen und damit eine Antwort auf Angriffe zu haben, die nicht das System sondern den User angreifen, sprich Social Engineering Malware. Und immer wichtiger wird außerdem ein Schutz der Privatsphäre, denn (nicht nur) die Werbetreibenden haben ein zunehmendes Interesse daran, Nutzerverhalten zu speichern und für die eigenen Zwecke zu missbrauchen. Daher sollte sich jeder auch einmal die Möglichkeiten des Internet Explorers anschauen, genau dieses Tracking der eigenen Persönlichkeit zu unterbinden!

Links

Windows Vista Integrity Mechanism Technical Reference – MSDN 
Understanding and Working in Protected Mode Internet Explorer
Loosly Coupled IE
Default Integrity Level and Automation – Eric Lawrence Blog
PsExec, User Account Control and Security Boundaries – Mark Russinovich

 

Bis zum nächsten Post!

 

Ich habe lange genug gelebt, um mir gerade die Dinge sorgfältig ein zweites Mal anzusehen, bei denen ich mir auf den ersten Blick ganz sicher bin. J. Billings

 

-Stephanus