IIS 6 Betriebswissen: Anwendungen isolieren

Isolation an einem Beispiel

Einmal angenommen, ein neuer Besucher der Website startet eine Webanwendung, indem er die passende Eintrittsseite aufruft. Dabei wird der Besucher automatisch dem anonymen Account zugeordnet. Dies ist üblicherweise der Account mit dem Namen IUSR_NameDesSystems. Die von der Webanwendung angeforderte Datei wird also mit den Rechten des anonymen Users geöffnet beziehungsweise ausgeführt – natürlich nur dann, wenn der IUSR_* auch die entsprechenden Rechte hat.

Die Anwendung kann aber nun ihrerseits eine bestimmte Funktion der Win32-API verwenden: RevertToSelf(). Diese führt dazu, dass der laufende Prozess nicht mehr über die Rechte des zugeordneten Users (IUSR_*) eingeschränkt wird, sondern stattdessen die Rechte des Accounts erhält, der den Prozess ursprünglich gestartet hat. Im Fall einer Webanwendung ist das der Account „Network Service“. Dies ist ein eingebauter Account, der als Identität für die Application Pools verwendet wird.

Nun hat der „Network Service“ zwar eingeschränkte Rechte – aber alle Application Pools, die auch dessen Identität verwenden, können gegenseitig auf ihre Ressourcen zugreifen, wenn die ACLs dem Network Service diesen Zugriff erlauben. Mit anderen Worten: Der Programmierer kann durch den Aufruf von RevertToSelf() seiner Anwendung Zugriff auf die Dateien anderer Anwendungen ermöglichen, sofern alle in einem Application Pool liegen, der dieselbe Identität verwendet.

Es ist also dringend erforderlich, dass Sie Webanwendungen unterschiedlicher Kunden nicht nur in getrennten Application Pools betreiben – jeder Pool muss auch unter einer eigenen Identität betrieben werden, die nur den minimal benötigten Satz an Rechten haben sollte.