Start Empfohlen Nicht, dass Windows eine Enklave der Sicherheit ist: Microsofts größter Patch-Dienstag

Nicht, dass Windows eine Enklave der Sicherheit ist: Microsofts größter Patch-Dienstag

16
0


Viele der Präsentationen auf Sicherheits- (oder besser gesagt „Unsicherheits-„) Konferenzen wie Black Hat sind Experimenten oder „Wagen“ für Hacker gewidmet, um eine neue Version der digitalen Sicherheit zu durchbrechen. Nach einer Weile wird es so, als würde man Vorschulkindern dabei zusehen, wie sie sich gegenseitig wagen, durch immer höhere Lego-Wände zu schlagen. Aber mitten in den Briefings vom letzten Juli kam mindestens eine wissenschaftlich recherchierte, sorgfältig durchdachte und durchdachte Präsentation: das Ergebnis einer umfassenden Untersuchung von drei Ingenieuren bei einem Beratungsunternehmen namens Hustle Labs, das zeigt, wie die Vertrauensvermutung zwischen Browsern, ihre Add-Ons und andere Codekomponenten können die Arten von Softwarefehlern auslösen, die durch bösartigen Code ausgenutzt werden können.

Den Ingenieuren Mark Dowd, Ryan Smith und David Dewey wird heute zugeschrieben, dass sie eine Codierungspraxis von Entwicklern beleuchtet haben, die die Tür für Browserabstürze offen lässt. Die Entdeckung bestimmter Fälle, in denen eine solche Vorgehensweise leicht ausgenutzt werden könnte, steht im Mittelpunkt des kritischsten Microsoft-Patches am zweiten Dienstag des Monats – wohl das größte von 13 Bulletins, die eine Rekordzahl von 34 Fixes behandeln.

Zu den heutigen Fixes gehört eine, die speziell eine relativ neue Klasse von Web-Apps adressiert, die XAML, die XML-basierte Front-End-Layout-Sprache von Microsoft, anstelle von HTML verwenden, um dem Benutzer Steuerelemente zu präsentieren. Die Klasse von Apps wird derzeit als XAML-Browseranwendung oder XBAP bezeichnet (vielleicht sollte Microsoft sie nur wegen des lausigen Akronyms deaktivieren). Das einfache Surfen zu einer in böser Absicht erstellten XBAP-Anwendung könnte einen Angriffsvektor erzeugen, heißt es in einem der heute Morgen veröffentlichten Bulletins von Microsoft.

Aber das ist nicht wirklich das Problem, sondern das Symptom eines sehr ernsten Problems, das vom Hustle Labs-Trio aufgedeckt wurde – eines, das in den kommenden Monaten mehrere weitere Sicherheitskorrekturen generieren könnte. An der Wurzel des Problems liegt die Tatsache, dass Browser-Plug-Ins und Browser-externe Komponenten – zum Beispiel die Komponenten, die Browser an das .NET Framework binden, um XBAP-Apps auszuführen – eine höhere Vertrauenswürdigkeit genießen als die Browser selbst. Heutzutage werden Vertrauensstufen gedreht Nieder im Browser, um fast jede Möglichkeit zu deaktivieren, dass ein einfaches JavaScript Elemente des Dateisystems des Benutzers ohne Genehmigung löscht; Plug-Ins erhalten jedoch oft eine mittlere Vertrauensstufe, weil sie mit einer Komponente (dem Webbrowser) interoperabel sein müssen, die sich außerhalb ihres eigenen Kontexts befindet.

Wenn also ein Plug-In Verweise auf neue Komponenten erstellt, wird ein Prinzip namens transitives Vertrauen schreibt vor, dass dieses Vertrauen auf mittlerer Ebene auf die neue Komponente übertragen wird. Und wenn diese neue Komponente eine Instanz eines ActiveX-Objekts ist, kann diese neue Vertrauensstufe bedeuten, dass, wenn das Objekt eine Ausnahme verursacht, dem Chaos, das es hinterlässt, gerade genug Berechtigungen zugewiesen werden, um bösartigen Code auszuführen.

Das Chaos selbst illustrierten die Hustle Labs-Forscher im vergangenen Juli bei Black Hat (PDF hier verfügbar), kann durch einen kniffligen Datentyp verursacht werden, der meine Augenbrauen seit Anfang der 90er Jahre hochgezogen hat, als ich Zeuge seiner ersten Demonstrationen wurde: Variante type, erstellt, um Daten darzustellen, die als Parameter zwischen Prozeduren oder Komponenten übergeben werden können, deren Typ unspezifisch oder sogar unbekannt sein kann. Die Art und Weise, wie Microsoft Varianten im Speicher darstellt, besteht darin, ihren Typ mit ihrem Wert als eine einzelne Einheit zu paaren, und dieser Typ ist eigentlich ein Zeiger auf eine Struktur. Diese Struktur kann ein primärer Typ sein, aber im Fall von COM-Komponenten (den Webbenutzern als ActiveX-Komponenten bekannt) handelt es sich meistens um ein komplexes Objekt, das aus mehreren Datenelementen besteht, die wie Datensätze in einer Datenbank zusammengefügt sind und deren Typen oft enthalten können andere Varianten.

Das Problem bei der Verwendung von Varianten besteht, wie Microsoft (mehr als einmal) auf die harte Tour gelernt hat, darin, dass beim Versuch, die Schnittstellen zwischen Komponenten abzusichern, das Fehlen expliziter Typen es schwierig macht, sicherzustellen, dass sie sich innerhalb der Regeln verhalten . Aber wie die Forscher herausfanden, ist es der Sicherheitscode selbst – wie sie es nennen Rangiercode, die Sprache aus der Blütezeit von COM wiederbelebt – das kann tatsächlich ein ernsthaftes Problem verursachen, ein Durcheinander, das Möglichkeiten zur Ausbeutung hinterlässt.

„Der offensichtlichste Fehler, den ein Steuerelement in Bezug auf die Objektaufbewahrung machen kann, besteht darin, es zu vernachlässigen, den Referenzzähler eines COM-Objekts hinzuzufügen, das es behalten möchte“, schreibt das Trio. Ein Verweiszähler hilft einem Steuerelement, ein Handle für das Objekt zu verwalten, das instanziiert wird. Aber Marshalling-Code wird in dem Bemühen, dem System Sicherheit zu bieten, auch den Referenzzähler ändern; und wenn es denkt, dass die Kontrolle mit dem Objekt abgeschlossen ist, wird diese Zählung der Reihe nach verringert. Wenn das Steuerelement also andere Pläne für das Objekt hatte, muss es dem gleichen Objekt seinen eigenen Referenzzähler hinzufügen.

Um eine (sehr) lange Geschichte kurz zu machen, am Ende gibt es oft mehr Zeiger auf das Objekt als es Objekte gibt. Und mit mittleren Privilegien können diese Zeiger theoretisch ausgenutzt werden.

Der Fall-in-Punkt beinhaltet diese bösen Varianten. Das Hinzufügen von Verweisen auf Objekte im Speicher beinhaltet oft das Kopieren der Objekte selbst; und bei Varianten gibt es dafür eine spezielle Funktion. Um diese spezielle Funktion verwenden zu können, müsste der Marshalling-Code jedoch wissen, dass die kopierten und neu referenzierten Objekte Varianten sind; stattdessen greifen sie auf das Bewährte zurück memcpy() Bibliotheksfunktion. Diese Funktion ist in der Lage, das komplexe Objekt zu kopieren, aber auf eine so „flache“ Weise, dass es keinen Unterschied macht, ob der Inhalt des komplexen Objekts selbst komplexe Objekte ist – und da memcpy() COM um einige Jahrzehnte älter ist, wird der Referenzzähler für neue Instanzen eingeschlossener Objekte, die im Prozess erstellt werden, nicht erhöht. Ein Zeiger auf das neue Objekt existiert natürlich, aber nicht die Referenz, die COM benötigt.

So könnte eine gewöhnliche Speicherbereinigungsroutine den Inhalt des duplizierten enthaltenen Objekts bereinigen, obwohl eine Komponente Designs für die spätere Verwendung dieses Objekts hat. Wie die Gruppe schreibt: „Wenn die Variante irgendein komplexes Objekt enthält, wie z IDispatch [a common COM object], wird ein Zeiger auf das Objekt dupliziert und verwendet, ohne einen zusätzlichen Verweis auf das Objekt hinzuzufügen. Wenn das Ergebnis dieser duplizierten Variante beibehalten wird, könnte das Objekt, auf das gezeigt wird, gelöscht werden, wenn jede andere Instanz dieses Objekts freigegeben wird.“

Es gibt in diesem Forschungspapier eine Vielzahl ähnlicher Beispiele für im Wesentlichen das gleiche Prinzip in der Wirkung: ein Prinzip, das auf einen grundlegenden Fehler in der bisherigen Sicherung von COM-Objekten hinweist. Das Hustle Labs-Team nimmt Microsoft nur an einer Stelle in der Zeitung zur Rede, und zwar ganz behutsam, um Patch-Dienstag-Fixes zu implementieren, die dazu neigen, „Killbits“ in der Registrierung zu verwenden, um COM-Komponenten und ActiveX-Steuerelemente auszuschalten, die von dieser Art betroffen sind Sicherheitslücke, anstatt den Marshalling-Code zu überarbeiten, um das Problem auf einer grundlegenden Ebene zu beheben.

Die heutige Runde der Patch-Dienstag-Releases kann also mehr ins Detail gehen, als nur auf Killbits zurückzugreifen – in einigen Situationen in dieser Woche gehen neue Patches tatsächlich tiefer in die Patch-Probleme ein, die angeblich bereits gepatcht wurden, einschließlich der GDI+-Bibliothek . Aber es ist ein Indiz dafür, dass unabhängige Forscher mit gewissenhaften Zielen wirklich durchkommen.



Vorheriger ArtikelMicrosoft schließt LinkedIn… in China
Nächster ArtikelMicrosoft veröffentlicht Update KB5006674 für Windows 11, um Netzwerkprobleme und mehr zu beheben

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein