Windows-Fehlerklasse: Zugriff ... Notiz

Windows-Fehlerklasse: Zugriff auf abgefangene COM-Objekte mit IDispatch

James Forshaw, Forscher bei Google Project Zero, beschreibt die „Gefangenen-Objekt-Fehlerklasse“ in objektorientierten Remote-Technologien wie DCOM und .NET Remoting. Diese Technologien ermöglichen die Entwicklung objektorientierter Schnittstellen, die Prozess- und Sicherheitsgrenzen überschreiten können. Diese Flexibilität hat jedoch Nachteile, darunter das Potenzial für Rechteerhöhungen oder die Ausführung von Remote-Code.Nicht alle Objekte, die remotefähig sind, sind auch sicher. Einige Objekte, wie z. B. XML-Bibliotheken, können beliebigen Script-Code im Kontext eines XSLT-Dokuments ausführen. Wenn ein XML-Dokument-Objekt über die Grenze hinweg zugänglich gemacht wird, könnte ein Client Code im Kontext des Serverprozesses ausführen.Es gibt mehrere Szenarien, die diese Fehlerklasse einführen können, darunter das unbeabsichtigte Teilen unsicherer Objekte, die Verwendung asynchroner Marshalling-Primitive und der Missbrauch integrierter Mechanismen zum Suchen und Instanziieren von Objekten. Beispielsweise führten die Windows Runtime-Bibliotheken einen Fehler ein, indem sie Code zum bestehenden XML DOM Document v6 COM-Objekt hinzufügten, wodurch die runtime-spezifischen Schnittstellen verfügbar gemacht wurden. Dies ermöglichte es einem bösartigen Client, nach der alten IXMLDOMDocument-Schnittstelle zu fragen und diese zu verwenden, um ein XSLT-Skript auszuführen.Ein weiteres Beispiel sind die .NET-Klassen FileInfo und DirectoryInfo, die sowohl nach Wert als auch nach Referenz gemarshallt werden können und verwendet werden können, um eine neue Instanz des Objekts im Prozess des Servers zu erstellen. Ein Angreifer kann dies ausnutzen, indem er eine serialisierte Form des Objekts an den Server sendet, der dann eine neue Instanz des Objekts erstellt. Anschließend kann das erstellte Objekt zurückgelesen werden, wobei es per Referenz an den Angreifer gemarshallt wird.Das letzte erwähnte Szenario ist der Missbrauch der integrierten Mechanismen zum Suchen und Instanziieren von Objekten, um ein unerwartetes Objekt zu erstellen. Beispielsweise kann ein Angreifer in COM die CoCreateInstance-API verwenden, um ein beliebiges COM-Objekt im Kontext des Servers zu erstellen und es an den Client zurückgeben zu lassen. Dies kann ausgenutzt werden, indem ein XML DOM Document-Objekt auf dem Server erstellt, per Referenz an den Client gemarshallt und dann verwendet wird, um beliebigen Code im Kontext des Servers auszuführen.Diese Szenarien unterstreichen die Bedeutung einer sorgfältigen Abwägung der Sicherheitsaspekte bei der Verwendung objektorientierter Remote-Technologien und der Sicherstellung, dass nur sichere Objekte über Sicherheitsgrenzen hinweg geteilt werden.