
CVE-2026-6307 PoC: Longinus - 2 Boundaries in One Bug https://nebusec.ai/research/v8-cve-2026-6307-writeup/)
المعروف باسم 'Longinus': حدان في خطأ واحد
المستودع: https://github.com/J4ck3LSyN-Gen2/CVE-2026-6307-Longinus
تقرير مفصل: OS-IS-CVE-2026-6307-07-2026.md
شرح تقني: Nebula Security - Longinus: حدان في خطأ واحد
[!WARNING] هذا الكود مقدم "كما هو" (AS IS) لأغراض تعليمية وبحثية فقط. لا تستخدم هذا الإثبات (PoC) على أنظمة الإنتاج أو البيئات المشتركة أو أي أهداف غير مصرح بها.
- يوضح هذا الاستغلال ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد (RCE) (CVE-2026-6307) يمكنها اختراق sandbox محرك Chrome بالكامل.
- قد يؤدي تشغيل أو استضافة هذا الكود إلى اكتشافات من برامج مكافحة الفيروسات، أو تنبيهات مراقبة أمنية، أو عواقب قانونية في حالة إساءة الاستخدام.
- لا يتحمل المؤلفون والقائمون على المستودع أي مسؤولية عن أي ضرر أو سوء استخدام أو نشاط غير قانوني ناتج عن هذا الكود.
- استخدم حصريًا في بيئات معملية معزولة وبالتفويض المناسب. مخصص فقط للبحث الدفاعي، وتحليل الثغرات، واختبار الفريق الأزرق.
يحتوي هذا المستودع على إثبات المفهوم (PoC) لـ CVE-2026-6307 ("Longinus")، وهي ثغرة من نوع ارتباك النوع عالية الخطورة في محرك V8 TurboFan الخاص بـ Google. ينشأ الخلل من مقارنة مساواة غير كاملة في FrameStateFunctionInfo أثناء تضمين استدعاءات JS إلى WebAssembly، وتحديدًا إهمال الحقل signature_ الخاص بـ JSToWasmFrameStateFunctionInfo.
يسمح هذا العيب بـ دمج غير صحيح لعُقد FrameState مع أنواع إرجاع مختلفة (externref مقابل i64). أثناء إلغاء التحسين البطيء (lazy deoptimization)، يسيء مُلغِي التحسين تفسير سجلات الإرجاع، مما ينتج عنه بدائيات قوية للقراءة/الكتابة الاعتباطية:
addrof(target) - تسريب عنوان كائن JavaScript كـ BigInt.fakeobj(addr) - إنشاء كائن JavaScript وهمي في عنوان اعتباطي.تخترق هذه البدائيات كلاً من حدود heap sandbox الخاصة بـ V8 و حدود sandbox المعالج في ثغرة واحدة عند دمجها مع تقنيات متابعة مناسبة.
التأثير: تنفيذ تعليمات برمجية عن بُعد (RCE) داخل عملية المعالج المعزولة عبر JavaScript ضار (مثل صفحة ويب مصممة خصيصًا).
FrameState تدمج JSToWasmFrameStateFunctionInfo.==) الخاص بـ FrameStateFunctionInfo بمقارنة توقيع دالة WebAssembly (signature_).FrameStates ذات أنواع إرجاع غير متطابقة.externref بشكل خاطئ على أنه i64 → تسريب بتات المؤشر كـ BigInt (addrof).i64 بشكل خاطئ على أنه externref → تحويل بتات العدد الصحيح إلى مرجع موسوم (fakeobj).راجع الشرح الكامل من Nebula Security وتقرير التحليل المرفق للحصول على رسوم بيانية، ومقتطفات IR الخاصة بـ TurboFan، وسلوك مُلغِي التحسين.
d8 الثنائي المطابق من حوالي مارس–يونيو 2026).--allow-natives-syntax --expose-wasmd8 للتصحيح مع --turbo-dynamic-map-checks أو ما شابه لتصحيح الأخطاء.# باستخدام قشرة d8
./d8 --allow-natives-syntax --expose-wasm poc.js
السلوك المتوقع (على بناء ضعيف):
addrof ناجح لكائن وهمي.fakeobj ناجح (فحص الهوية ينجح).ملاحظة: يتطلب تحقيق RCE الكامل هندسة إضافية (حساب الإزاحات، التفاعل مع WASM/GC، الهروب من sandbox). يركز هذا PoC على البدائيات الأساسية.
يمكن استخدام قاعدة .yar المضمنة في أدوات الأمن لتحديد نمط PoC في النصوص أو الذاكرة.
إخلاء مسؤولية: هذا المستودع مقدم لأغراض تعليمية، دفاعية، وبحثية فقط. لا تستخدمه على أنظمة غير مصرح بها. لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام.
للاستفسارات أو المساهمات أو تطوير المتغيرات، افتح issue أو PR.
آخر تحديث: يوليو 2026
| الملف | الوصف |
|---|
poc.js | إثبات المفهوم الأساسي يوضح بدائيات addrof و fakeobj + عرض أساسي للقراءة/الكتابة. |
gen.py | برنامج مساعد لتوليد متغيرات PoC أو هيكل الحمولة. |
val.py | أدوات التحقق والاختبار للبدائيات. |
cve-2026-6307_d8_execution.yml | تكوين / سير عمل لتشغيل PoC في قشرة V8 d8. |
cve-2026-6307_longinus_poc.yar | قاعدة YARA للكشف عن توقيع PoC أو الأنماط ذات الصلة. |