
Toolkit, um Chromium-Schwachstellen in zuverlässige, plattformübergreifende Full-Chain-Exploits zu verwandeln.
Ein Toolkit zur Nutzbarmachung von Chromium-Schwachstellen für zuverlässige, plattformübergreifende Full-Chain-Exploits.
Dieses Projekt bietet eine Reihe leistungsfähiger Hilfsskripte, setzt jedoch voraus, dass du deine eigenen Schwachstellen mitbringst. Du bist für die Implementierung minimaler Exploit-Primitive verantwortlich, das Toolkit übernimmt alles Übrige.
Eine benutzerdefinierte Exploit-Kette basiert auf der Skriptdatei main.js, mit der du deine Schwachstellen gezielt zusammen mit den Hilfsskripten des Toolkits einbinden kannst:
// Exploit settings
let loglevel = 5;
let run_in_worker = false;
// Exploit chain
async function main() {
// Common helpers
await include("kit/common/convert.js");
await include("kit/common/dom.js");
await include("kit/common/stability.js");
await include("kit/common/v8-utils.js");
await include("kit/common/versions.js");
await include("kit/common/wasm-module-builder.js");
// Symbols database for your exploit chain
await include("vulns/symbols.js");
// Early fingerprinting
await include("kit/fingerprint/d8.js");
await include("kit/fingerprint/useragent.js");
// Your initial V8 memory corruption
// This should craft addrOf() & fakeObj() primitives
await include("vulns/memcor/your-code.js");
// Bootstrap stage-2 primitives & gain memory read/write inside the V8 SBX
await include("kit/v8/cage.js");
// Your V8 sandbox escape
// This should craft arbRead() & arbWrite() primitives AND leak some pointers
await include("vulns/v8sbx/your-code.js");
// Utils to manipulate the renderer memory
await include("kit/v8/memory.js");
// Achieve code execution (automatically select the best method based on the leaked pointers)
await include("kit/v8/rwx/egghunt.js");
await include("kit/v8/rwx/isolate.js");
await include("kit/v8/rwx/partitionalloc.js");
await include("kit/v8/rwx/wasmrwx.js");
await include("kit/v8/rwx.js");
// Bootstrap stage-3 primitives & provide generic shellcodes
await include("kit/shellcodes/x64.js");
await include("kit/shellcodes/x64-win.js");
await include("kit/shellcodes/x64-linux.js");
// Precise fingerprinting
await include("kit/fingerprint/win.js");
await include("kit/fingerprint/linux.js");
// Enable MojoJS and other protected flags
await include("kit/renderer/mojo.js");
// Your sandbox escape
await include("vulns/sbx/your-code.js");
}
/*
Other customizable features are implemented here
(logging, clean exit handling, exploit reloading, scripts execution context...)
...
*/
Lies die Dokumentation für einen umfassenden Überblick über die verfügbaren Funktionen.
Eine Test-Webseite wird in index.html bereitgestellt.
Sie protokolliert Ausgaben, behandelt Abstürze und ermöglicht es dem Hauptskript, Dateien aus den Unterordnern des Projekts einzubinden.
Du kannst sie lokal mit python3 server.py ausführen und dann http://localhost:8000 aufrufen.
Die Webseite monitor.html bietet eine einfache Oberfläche zur Fernüberwachung und zum Testen von Exploits.
Sie zeigt entfernte Hosts, Exploit-Protokolle und Fehlerstatistiken an.
Sie ermöglicht außerdem das Senden von Befehlen an entfernte Hosts, einschließlich Exploit-Neuladungen und einem Stresstest-Modus.
Für die frühe Exploit-Entwicklung kannst du das Haupt-Exploitskript auch in d8 ausführen: d8.exe main.js.
Sobald eine Exploit-Kette fertig ist, werden Werkzeuge zur Automatisierung verschiedener Aufgaben bereitgestellt:
build.py zum Erstellen des Exploits als einzelnes Skriptdownload.py zum Herunterladen bestimmter Google-Chrome-Versionensymbols.py für automatisiertes PDB-ParsingEinige Exploits für öffentlich bekannte Schwachstellen werden bereitgestellt, um die Funktionen des Toolkits zu demonstrieren:
| Schwachstelle | Betroffene Versionen (Chrome Stable) | Details |
|---|---|---|
| CVE-2024-11114 | 94 - 130 (nur Windows) | Die Maus kann über die Mojo-IPC-Schnittstelle startDragging() gesteuert werden, um heruntergeladene Dateien auszuführen und die Sandbox zu verlassen |
Eine Demonstrations-Exploit-Kette wird in der Standarddatei main.js bereitgestellt. Sie basiert auf den folgenden Schwachstellen:
Diese Exploit-Kette funktioniert sofort auf jedem Chrome-130-Stable-Release und Extended-Releases bis 130.0.6723.160. Sie kann durch Hinzufügen von Symbolen problemlos auf M128, M129 und M131 (< 131.0.6778.264) erweitert werden.
Exploits können außerdem remote über die Überwachungswebseite getestet werden:

Dieses Toolkit ist ausschließlich für Sicherheitsforschung bestimmt. Es stellt für sich genommen kein Material zur Ausnutzung nicht offengelegter Schwachstellen im Chromium-Projekt bereit. Die Verwendung dieses Toolkits für böswillige Zwecke liegt in deiner alleinigen Verantwortung.
Öffentliche Veröffentlichungen sind unter den Bedingungen der GNU AGPLv3 lizenziert. Insbesondere ist der Handel mit privaten Exploits, die auf diesem Toolkit basieren, unter diesen Bedingungen nicht gestattet. Frühere Commits, die vor der ersten öffentlichen Veröffentlichung erstellt wurden, können unlizenziert sein und sind durch das Standard-Urheberrecht geschützt.
Dieses Projekt enthält lizenzierte Komponenten von Drittanbietern: Details siehe hier.
| Schwachstelle | Betroffene Versionen (Chrome Stable) | Details |
|---|
| CVE-2024-7971 | <= 127 | WASM-Typverwechslung während ParallelMove in Liftoff |
| CVE-2025-0291 | 128 - 131 (< 131.0.6778.264, gefährdete Komponente über Finch ausgeliefert) | Typverwechslung in Turboshafts WasmGCTypeAnalyzer bei Single-Block-Schleifen |
| CVE-2025-2135 | 133 - 134 (< 134.0.6998.88) | Typverwechslung bei Aliasing-Objekten in TransitionElementsKindOrCheckMap |
| CVE-2025-5419 | <= 136 (Finch-Kill-Switch ab 133) | Speicherzugriff außerhalb der Grenzen aufgrund ungültiger Store-Store-Eliminierung bei dynamischen Indizes |
| Schwachstelle | Betroffene Versionen (Chrome Stable) | Details |
|---|
| 352689356 | <= 131 | WASM-Funktionssignatur-Verwechslung bei nicht inlineiertem TurboFan call_ref |
| 379140430 | <= 132 | Signatur-Typverwechslung beim Tier-up von WasmToJsWrapper mit In-Sandbox-Tuple2-Korruption |
| 395659804 | <= 134 | Beliebige Codeausführung über OSR-DeoptimizationData-Verwechslung |
| 421403261 | 134 - 137 (< 137.0.7151.119, nur x64) | Signatur-Hash-Kollision i32/i64 in Liftoff |