Haufensprühen
Im Computersicherheit, Haufensprühen ist eine Technik in Heldentaten zu erleichtern willkürliche Codeausführung.Der Teil der Quellcode eines Exploits, der diese Technik implementiert, heißt a Haufenspray.[1] Im Allgemeinen codieren Sie das sprüht den Haufen Versuche, eine bestimmte Folge von Bytes an einem vorgegebenen Ort in der Erinnerung eines Ziels Prozess Indem es den Prozess (große) Blöcke zugibt Haufen und füllen Sie die Bytes in diesen Blöcken mit den richtigen Werten.
Betrieb
Ein Haufenspray nutzt keine Sicherheitsprobleme aus, kann jedoch verwendet werden, um eine Verletzlichkeit zu erleichtern. Ein Haufenspray an sich kann nicht verwendet werden, um Sicherheitsgrenzen zu brechen: Es ist ein separates Sicherheitsproblem erforderlich.
Die Nutzung von Sicherheitsproblemen ist oft schwierig, da verschiedene Faktoren diesen Prozess beeinflussen können. Zufällige Ausrichtungen des Gedächtnisses und des Timings führen zu viel Zufallsleistung (aus Sicht des Angreifers). Ein Haufenspray kann verwendet werden, um eine große Menge an Ordnung einzuführen, um dies zu kompensieren und die Wahrscheinlichkeit einer erfolgreichen Ausbeutung zu erhöhen. Heap -Sprays nutzen die Tatsache, dass bei den meisten Architekturen und Betriebssystemen der Startort großer Haufen Zuordnungen vorhersehbar und aufeinanderfolgende Zuteilungen in etwa sequentiell sind. Dies bedeutet, dass der besprühte Haufen jedes Mal, wenn das Haufenspray ausgeführt wird, ungefähr an der gleichen Stelle liegt.
Exploits verwenden häufig bestimmte Bytes, um den Haufen zu sprühen, da die auf dem Haufen gespeicherten Daten mehrere Rollen haben. Während der Ausbeutung eines Sicherheitsproblems kann der Anwendungscode häufig eine Adresse von einem willkürlichen Ort im Speicher lesen. Diese Adresse wird dann vom Code als Adresse einer Funktion zur Ausführung verwendet. Wenn der Exploit die Anwendung dazu zwingen kann, diese Adresse aus dem besprühten Haufen zu lesen, kann er den Ausführungfluss steuern, wenn der Code diese Adresse als Funktionszeiger verwendet und auf den besprühten Haufen umleitet. Wenn es dem Exploit gelingt, den Kontrollfluss zum gesprühten Haufen umzuleiten, werden die dort ausgeführten Bytes ausgeführt, sodass der Exploit die von den Angreifer will, die die Aktionen ausführen können. Daher sind die Bytes auf dem Haufen beschränkt, um gültige Adressen innerhalb des Heap -Sprays selbst darzustellen, wobei gültige Anweisungen für die Zielarchitektur enthalten sind, sodass die Anwendung nicht zum Absturz kommt. Es ist daher üblich, mit einem einzigen Byte zu sprühen, der sowohl eine gültige Adresse als auch a NOP oder NOP-ähnliche Anweisung zur Zielarchitektur. Dadurch kann der Haufenspray als sehr groß fungieren NOP -Schlitten (Zum Beispiel wird 0x0c0c0c0c häufig als nicht-kanonische NOP verwendet[2]))
Geschichte
Haufensprays werden seit mindestens 2001 gelegentlich in Heldentaten verwendet.[3][4] Aber die Technik begann, in Exploits für weit verbreitete Verwendung zu sehen Internetbrowser Im Sommer 2005 nach der Veröffentlichung mehrerer solcher Heldentaten, die die Technik gegen eine Vielzahl von Bugs in verwendeten Internet Explorer.[5][6][7][8][9] Die in all diesen Heldentaten verwendeten Haufensprays waren sehr ähnlich, was die Vielseitigkeit der Technik und ihre Benutzerfreundlichkeit zeigte, ohne dass es wichtige Modifikationen zwischen Exploits benötigt. Es erwies sich als einfach genug, um zu verstehen und zu verwenden, um Anfänger zu ermöglichen Hacker schnell zuverlässige Exploits für viele Arten von zu schreiben Schwachstellen im Webbrowser und im Webbrowser Plugins. Viele Webbrowser -Exploits, die das Haufen Sprühen verwenden kopieren aus einem früheren Exploit in Kombination mit einem kleinen Stück Drehbuch oder Html Das löst die Verwundbarkeit aus.
Implementierung
JavaScript
Heap -Sprays für Webbrowser werden üblicherweise in implementiert JavaScript und sprühen Sie den Haufen, indem Sie große erzeugen Saiten. Die häufigste Technik besteht darin, mit einer Zeichenfolge von einem Zeichen zu beginnen und verketten es immer wieder mit sich selbst. Auf diese Weise kann die Länge der Saite können exponentiell wachsen bis zur maximalen Länge, die von der zulässig ist Skriptmotor. Je nachdem, wie der Browser auch Strings implementiert ASCII oder Unicode Zeichen können in der Zeichenfolge verwendet werden. Der Heap -Sprühcode macht Kopien der langen Zeichenfolge mit Shellcode und speichert diese in einem Array bis zu dem Punkt, an dem genügend Speicher gesprüht wurde, um sicherzustellen, dass der Exploit funktioniert.
Vbscript
Gelegentlich, Vbscript wird im Internet Explorer verwendet, um Zeichenfolgen durch die Verwendung der zu erstellen Saite Funktion.
Aktionen
Im Juli 2009 wurde festgestellt Aktionen zum Sprühen des Haufens einsprühen Adobe Flash.[10][11]
Bilder
Obwohl nachgewiesen wurde, dass die Haufenspraying auf andere Weise durchgeführt werden kann, beispielsweise durch Laden von Bilddateien in den Prozess,[12] Dies hat nicht weit verbreitet (ab August 2008).[Benötigt Update]
HTML5
Im September 2012 wurde in Eusecwest 2012 eine neue Technik vorgestellt.[13] Zwei Kernforscher, Federico Muttis und Anibal SACCO, zeigten, dass der Haufen mit einer sehr hohen Allokations -Granularität durch die Verwendung von Technologien besprüht werden kann HTML5. Insbesondere verwendeten sie die von der angebotene Bitmap-Schnittstelle auf niedriger Ebene Canvas -API, und Webarbeiter Um es schneller zu machen.
Erkennung und Prävention
- Das Düsenprojekt von Microsoft Research zielt darauf ab, das Sprühen von Haufen zu erkennen und zu verhindern.[14]
- Blase ist eine weitere Gegenmaßnahme, die in Betracht gezogen werden kann, um einen Angriff zu erkennen und zu verhindern[15]
Siehe auch
- NOP -Folie oder NOP Sled, eine Technik, die zum Haufensprühen ergänzt
- Heap Feng Shui, eine Technik zum Manipulieren von Haufen Layout
- JIT -Sprühen
Verweise
- ^ John Hays, Security Training Engineer (2. September 2016). "YouTube -Titel: Heap Spray Exploit -Technik". Palo Alto Networks Live -Community. Abgerufen 14. November, 2018. Aus dem offiziellen "Palo Alto Networks Live Community" wurde YouTube Channel den Titel "Heap Spray Exploit Technique".
- ^ corelanc0d3r (31. Dezember 2011). "Exploit -Schreiben Tutorial Teil 11: Haufen des entmystifizierten Sprühens". Corelan -Team. Archiviert von das Original am 25. April 2015. Abgerufen 15. Januar 2014.
- ^ "Cami": Telnetd Exploit -Code
- ^ Eeye Digital Security - Forschung
- ^ InternetExploiter 1: MSIE Iframe SRC & Name Parameter BOF Exploit
- ^ InternetExploiter 3: MSIE .ANI -Datei "Anih" Header Bof Exploit
- ^ InternetExploiter 2: MSIE DHTML -Objekthandhabung Rassenbedingung Exploit
- ^ "FRSIRT - Microsoft Internet Explorer Javaprxy.dll Com -Objekt -Sicherheitsanfälligkeit / Exploit (Sicherheitsberater)". Archiviert von das Original am 2008-03-27. Abgerufen 2008-03-25.
- ^ "FRSIRT - Microsoft Internet Explorer" msdds.dll "Remote -Code -Ausführung / Exploit (Sicherheitsberater)". Archiviert von das Original Am 2007-12-19. Abgerufen 2008-03-25.
- ^ Roee Hay: Ausbeutung von CVE-2009-1869
- ^ "Fireye Malware Intelligence Lab: Heap -Sprühen mit ActionScript". Archiviert von das Original Am 2014-05-01. Abgerufen 2014-04-22.
- ^ Michael Sutton & Greg MacManus, Punk -Ode - Haltung von Shellcode in Sichtweite, Black Hat 2006
- ^ HTML5 -Haufen.Eusecwest 2012
- ^ Düsenprojekt von Microsoft Research zielt darauf ab, das Sprühen von Haufen zu erkennen und zu verhindern
- ^ Blase: Eine Gegenmaßnahme der JavaScript-Motorebene gegen haufenssprüche Angriffe