
Bildungspräsentation, die die Ausnutzung von CVE-2021-21220 detailliert beschreibt, einem V8 JIT-Compiler-Typenverwechslungsfehler, der zu Out-of-Bounds-Zugriff, beliebigem Speicherlesen/-schreiben und Remote-Codeausführung über WebAssembly führt.
Diese Präsentation erklärt die Ausnutzung von CVE-2021-21220, einer Schwachstelle in Googles Chrome V8 JavaScript-Engine, die durch falsche JIT-Compiler-Annahmen während der Optimierung verursacht wurde.
Die Präsentation führt durch:
Das Ziel dieser Präsentation ist es zu zeigen, wie ein subtiler Optimierungsfehler in einer modernen JavaScript-Engine eskalieren kann zu:
Die Exploit-Kette verdeutlicht, wie JIT-Engines Leistung und Sicherheit ausbalancieren und wie falsche Optimierungsannahmen ausnutzbar werden können.
Die Präsentation stellt die wichtigsten V8-Komponenten vor:
Das Architekturdiagramm in der Präsentation veranschaulicht, wie JavaScript sich bewegt von:
Parsing → Bytecode → Optimization → Execution
JavaScript ist für Hochleistungsausführung herausfordernd, weil:
+ mehrere Bedeutungen haben könnenV8 verwendet JIT-Kompilierung, um häufige Ausführungsmuster durch Spekulation über das Laufzeitverhalten zu optimieren.
Die Schwachstelle entsteht durch eine Nichtübereinstimmung zwischen vorzeichenbehafteten und vorzeichenlosen Integer-Werten während der JIT-Optimierung.
Schlüsselkonzepte, die gezeigt werden:
Uint32ArrayWord32XorChangeInt32ToInt64Der Exploit missbraucht den Wert:
0x80000000
der das Vorzeichenbit eines 32-Bit-Integer setzt.
Die Schwachstelle tritt auf, weil TurboFan die Operation:
x ^ 0
vollständig weg optimiert.
Während dieser Optimierung:
Dies führt zu falscher Maschinencode-Generierung und angreiferkontrollierten Werten.
Der Exploit wandelt das falsche JIT-Ergebnis in Kontrolle über das Array-Verhalten um.
Die Präsentation zeigt:
iArray.shift()-LängenunterlaufWichtige Exploit-Konzepte, die gezeigt werden:
Sobald die Array-Länge -1 wird, erhält der Angreifer:
Der Exploit demonstriert dann:
Die Präsentation erklärt, wie Angreifer Folgendes angreifen können:
Angriffsablauf:
Dies zeigt, wie ein JavaScript-Engine-Fehler zu Codeausführung auf Prozessebene eskalieren kann.
Der letzte Abschnitt behandelt moderne Browserabwehr:
Reduzieren direkte Pointer-Exposition und Heap-Vorhersagbarkeit.
Verhindern direkten Zugriff auf rohe Speicheradressen.
Isolieren Speicherbereiche und verringern Exploit-Auswirkungen.
Verhindern, dass Seiten gleichzeitig beschreibbar und ausführbar sind.
Die Präsentation enthält auch den eigentlichen V8-Patch-Diff, der den Fix für das Vorzeichenerweiterungsproblem zeigt.
Diese Präsentation zeigt, wie:
Dieses Material ist ausschließlich bestimmt für:
Verwenden Sie diese Informationen nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine Testberechtigung haben.