Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-21220 — 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. | Kitploit
Tools/GitHubGitHub/borahll/cve-2021-21220
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPapers & ForschungLernen & BildungBinary-Exploitation
GitHubborahll/cve-2021-21220

CVE-2021-21220

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.

Repository anzeigen
vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Ausnutzung von CVE-2021-21220

Von falschem JIT-Verhalten zu Remote Code Execution

Übersicht

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:

  • Wie V8 Just-In-Time (JIT)-Kompilierung durchführt
  • Wie ein Vorzeichen-/Vorzeichenlos-Typkonfusionsfehler während der Optimierung auftritt
  • Wie der Fehler zu einer Out-of-Bounds (OOB)-Array-Primitive führt
  • Wie Angreifer OOB-Zugriff nutzen können, um Adressen zu leaken und beliebige Speicherschreibvorgänge zu erreichen
  • Wie WebAssembly (Wasm) ein Ziel für native Codeausführung wird
  • Vorhandene Gegenmaßnahmen und moderne Browserabwehr

Präsentationsziele

Das Ziel dieser Präsentation ist es zu zeigen, wie ein subtiler Optimierungsfehler in einer modernen JavaScript-Engine eskalieren kann zu:

  • Speicherkorruption
  • Beliebigem Lesen/Schreiben
  • Native Code-Modifikation
  • Potenzieller Remote Code Execution (RCE)

Die Exploit-Kette verdeutlicht, wie JIT-Engines Leistung und Sicherheit ausbalancieren und wie falsche Optimierungsannahmen ausnutzbar werden können.


Behandelte Themen

1. V8-Architektur

Die Präsentation stellt die wichtigsten V8-Komponenten vor:

Ignition Interpreter

  • Führt JavaScript-Bytecode aus
  • Sammelt Laufzeit-Feedback
  • Speichert Typinformationen in Feedback-Vektoren

TurboFan Optimizer

  • Erstellt optimierte Graphen aus Laufzeit-Feedback
  • Fügt spekulative Annahmen und Guards ein
  • Führt aggressive Optimierungsdurchläufe durch

Machine Code Backend

  • Erzeugt native CPU-Befehle
  • Produziert optimierten Maschinencode für „heiße“ Funktionen

Das Architekturdiagramm in der Präsentation veranschaulicht, wie JavaScript sich bewegt von:

root@kitploit:~
Parsing → Bytecode → Optimization → Execution

2. Warum JavaScript schwer zu optimieren ist

JavaScript ist für Hochleistungsausführung herausfordernd, weil:

  • Variablen dynamisch ihren Typ ändern
  • Arrays ihre Struktur und Elementtypen ändern
  • Operatoren wie + mehrere Bedeutungen haben können
  • Laufzeitprüfungen teuer sind

V8 verwendet JIT-Kompilierung, um häufige Ausführungsmuster durch Spekulation über das Laufzeitverhalten zu optimieren.


3. Grundursache von CVE-2021-21220

Die Schwachstelle entsteht durch eine Nichtübereinstimmung zwischen vorzeichenbehafteten und vorzeichenlosen Integer-Werten während der JIT-Optimierung.

Schlüsselkonzepte, die gezeigt werden:

  • Uint32Array
  • Word32Xor
  • Falsche Typweiterleitung
  • ChangeInt32ToInt64
  • Falsche Auswahl von Assembler-Befehlen

Der Exploit missbraucht den Wert:

root@kitploit:~
0x80000000

der das Vorzeichenbit eines 32-Bit-Integer setzt.


4. Optimierungsfehler

Die Schwachstelle tritt auf, weil TurboFan die Operation:

root@kitploit:~
x ^ 0

vollständig weg optimiert.

Während dieser Optimierung:

  • Die XOR-Operation verschwindet
  • Typinformationen gehen verloren
  • Vorzeichenbehaftete Werte werden als vorzeichenlos interpretiert
  • Das JIT-Verhalten weicht vom Interpreter-Verhalten ab

Dies führt zu falscher Maschinencode-Generierung und angreiferkontrollierten Werten.


5. Aufbau einer OOB-Primitive

Der Exploit wandelt das falsche JIT-Ergebnis in Kontrolle über das Array-Verhalten um.

Die Präsentation zeigt:

  1. Falscher optimierter Integer-Wert
  2. Umwandlung in Kontrollvariable i
  3. Unterschied zwischen Warmup und Trigger-Ausführung
  4. Array.shift()-Längenunterlauf
  5. Erstellung eines OOB-fähigen Arrays

Wichtige Exploit-Konzepte, die gezeigt werden:

  • Warmup-Optimierung
  • Spekulative Optimierung
  • Typkonfusion
  • Array-Längen-Korruption

6. Zugriff außerhalb der Grenzen

Sobald die Array-Länge -1 wird, erhält der Angreifer:

  • Lesezugriffe außerhalb der Grenzen
  • Schreibzugriffe außerhalb der Grenzen
  • Zugriff auf benachbarte V8-Heap-Objekte

Der Exploit demonstriert dann:

  • Pointer-Leaks
  • Objektadressen-Erkennung
  • Überlappende Arrays
  • Extraktion roher V8-Pointer

7. Missbrauch von WebAssembly

Die Präsentation erklärt, wie Angreifer Folgendes angreifen können:

  • Kompilierte WebAssembly-Codeseiten
  • Von V8 erzeugten nativen ausführbaren Speicher

Angriffsablauf:

  1. Erstellen einer Wasm-Funktion
  2. Lokalisieren des ausführbaren Speichers
  3. Überschreiben des kompilierten Maschinencodes
  4. Erneutes Ausführen von Wasm
  5. Erreichen beliebiger nativer Codeausführung

Dies zeigt, wie ein JavaScript-Engine-Fehler zu Codeausführung auf Prozessebene eskalieren kann.


Verteidigung und Gegenmaßnahmen

Der letzte Abschnitt behandelt moderne Browserabwehr:

Compressed Pointers

Reduzieren direkte Pointer-Exposition und Heap-Vorhersagbarkeit.

Pointer Indirection

Verhindern direkten Zugriff auf rohe Speicheradressen.

Heap Sandboxing

Isolieren Speicherbereiche und verringern Exploit-Auswirkungen.

W^X (Write XOR Execute)

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.


Wichtige Erkenntnisse

Diese Präsentation zeigt, wie:

  • Kleine Optimierungsfehler zu kritischen Schwachstellen werden können
  • JIT-Compiler die Komplexität der Angriffsfläche erheblich erhöhen
  • Laufzeitspekulation gefährliche Inkonsistenzen einführen kann
  • WebAssembly die Exploit-Landschaft verändert
  • Moderne Browser mehrere abgestufte Verteidigungen benötigen

Besprochene Technologien

  • JavaScript
  • Google V8 Engine
  • TurboFan
  • Ignition
  • WebAssembly (Wasm)
  • JIT Compilation
  • Memory Corruption
  • Out-of-Bounds Access
  • Browser Exploitation

Bildungszweck

Dieses Material ist ausschließlich bestimmt für:

  • Sicherheitsforschung
  • Bildungsdemonstrationen
  • Lernen über Browser-Interna
  • Schwachstellenanalyse

Verwenden Sie diese Informationen nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine Testberechtigung haben.


Referenzen

  • CVE-2021-21220
  • Google Chrome V8 Engine
  • TurboFan Compiler Internals
  • WebAssembly Runtime Security
  • https://www.zerodayinitiative.com/blog/2021/12/15/exploitation-of-cve-2021-21220-from-incorrect-jit-behavior-to-rce
  • https://www.zerodayinitiative.com/blog/2021/12/8/understanding-the-root-cause-of-cve-2021-21220-a-chrome-bug-from-pwn2own-2021
  • https://www.zerodayinitiative.com/blog/2021/12/8/understanding-the-root-cause-of-cve-2021-21220-a-chrome-bug-from-pwn2own-2021
Tool herunterladen