Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-9999-exploit — أداة إثبات مفهوم (PoC) وfuzzer لتظليل GLSL لثغرة CVE-2026-9999 في الواجهة الخلفية ANGLE/Metal الخاصة بـ WebGL في متصفح Chrome، مع تحديد بصمة البناء، وتظليلات مُنسّقة، والتقاط آثار الانهيار. | Kitploit
أدوات/GitHubGitHub/josephfarah-ciso/cve-2026-9999-exploit
تحليل الثغرات الأمنيةالاستغلالأمن الويبالاختبار العشوائي
GitHubjosephfarah-ciso/cve-2026-9999-exploit

CVE-2026-9999-exploit

أداة إثبات مفهوم (PoC) وfuzzer لتظليل GLSL لثغرة CVE-2026-9999 في الواجهة الخلفية ANGLE/Metal الخاصة بـ WebGL في متصفح Chrome، مع تحديد بصمة البناء، وتظليلات مُنسّقة، والتقاط آثار الانهيار.

عرض المستودع

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
منذ 7 أياملم تتم المراجعة بعد

CVE-2026-9999 — أداة البحث عن PoC لثغرة Chrome ANGLE/Metal WebGL (نظام macOS)


1. ملخص الثغرة

الحقلالقيمة
CVECVE-2026-9999
البائع / المنتجGoogle Chrome
المتأثرChrome < 148.0.7778.216، نظام macOS فقط [1]
تم الإصلاح في148.0.7778.216 [1]
التأثيرتنفيذ تعليمات برمجية عشوائية داخل صندوق الحماية (sandbox) عبر صفحة HTML مصمّمة بعناية [1]
شدة Chromiumعالية [1]
CVSS 3.1 (CISA-ADP)8.8 عالية — CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H [1]
تقييم CVSS من NVD (NIST)لم يُقدَّم بعد [1]
CWECWE-269 — إدارة امتيازات غير سليمة (إثراء بواسطة CISA-ADP) [1]
SSVC من CISA (2026-05-29)exploitation: none, automatable: no, technicalImpact: total [1]
النشر / آخر تعديل2026-05-28 / 2026-07-21 [1]
السبب الجذريغير معلن — مشكلة Chromium 513364480 تظهر "Permissions Required" [1]

الآثار المترتبة على سلسلة الهجوم: تنفيذ التعليمات البرمجية "داخل صندوق الحماية" [1] يعني أن المهاجم يحصل على السيطرة على عملية معزولة (على الأرجح عملية GPU). وللاستيلاء الكامل على المتصفح، يلزم إضافيًا هروب منفصل من صندوق الحماية ليس جزءًا من هذه الثغرة.


2. الاستراتيجية والفرضية (تقييم المحلل الخاص — يُعتبر غير مؤكد)

ما يلي استنتاج من السجلات العامة، وليس حقائق مؤكدة:

  • ANGLE هو المحرك الذي يستخدمه Chrome لترجمة WebGL GLSL إلى واجهات رسوميات النظام — على نظام macOS، إلى Metal. ووصول "صفحة HTML مصمّمة بعناية" [1] إلى ANGLE يعني شبه مؤكد محتوى WebGL — أي shaders يتحكم بها المهاجم و/أو حالة WebGL تتم معالجتها بواسطة خلفية Metal.
  • CWE-269 (إدارة امتيازات غير سليمة) [1] مع التأثير المحصور داخل صندوق الحماية يشير إلى أن طبقة ANGLE/GPU تفشل في تقييد شيء يتحكم به المهاجم بشكل صحيح أثناء ترجمة shader أو التحقق من الحالة.
  • تاريخيًا، أنتج هذا المكوّن أخطاء تتعلق بسلامة الذاكرة عبر حالات حافة في مترجم GLSL (فهرسة ثوابت خارج النطاق OOB، تحديد حجم مصفوفة بتجاوز عدد صحيح، تفاعلات swizzle/discard، كتل uniform ضخمة، انفجارات فك الحلقات loop-unrolling).

لذلك، يختبر هذا الإطار (harness) تلك الأنماط تحديدًا ثم يغيّر GLSL على نطاق واسع للبحث عن انهيار من جهة العارض (فقدان سياق WebGL = انهيار عملية GPU أو قتلها بواسطة المراقب watchdog).


3. محتويات المستودع

الملفالغرض
cve-2026-9999-poc.htmlإطار PoC مكتفٍ ذاتيًا (بدون تبعيات): تحديد إصدار البناء، 8 shaders مختارة لضغط المترجم، مدمج Fuzzer للـ GLSL مع التقاط أثر الانهيار
README.mdهذا الملف

4. المتطلبات

  • جهاز macOS أو جهاز افتراضي يدعم Metal مصرّح لك بتعطيله عمدًا. الثغرة خاصة بنظام macOS [1]؛ الاختبار على Windows/Linux لن يفعّل خلفية ANGLE Metal المعرضة للخطر.
  • إصدار Chrome < 148.0.7778.216 [1] (انظر §5).
  • دعم GPU / Metal بشكل فعلي. بدونه، يتراجع Chrome إلى SwiftShader (العرض البرمجي) ولا يتم الوصول إلى المسار المعرّض للخطر أبدًا — انظر فحص §5.4.
  • Python 3 (اختياري، فقط للأداة المساعدة للبحث عن الإصدارات في §5.1 ولخادم HTTP محلي).

5. إعداد البيئة

5.1 الطريقة أ — Chrome for Testing (موصى به)

أرشيف Chrome for Testing من Google يوفر إصدارات مثبتة بواسطة رقم الإصدار لا يتم تحديثها تلقائيًا. ابحث عن أحدث بناء معرّض للخطر (كل ما هو أقل من 148.0.7778.216 متأثر [1]):

root@kitploit:~
import json, urllib.request
data = json.load(urllib.request.urlopen(
  "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json"))
key = lambda v: tuple(int(x) for x in v.split('.'))
fix = (148, 0, 7778, 216)
cands = sorted((v["version"] for v in data["versions"]
                if "chrome" in v.get("downloads", {}) and key(v["version"]) < fix), key=key)
print(cands[-5:])   # pick the last (newest vulnerable) entry

نزّل لمعمارية جهازك (uname -m):

root@kitploit:~
# Apple Silicon
https://storage.googleapis.com/chrome-for-testing-public/<VERSION>/mac-arm64/chrome-mac-arm64.zip
# Intel
https://storage.googleapis.com/chrome-for-testing-public/<VERSION>/mac-x64/chrome-mac-x64.zip

فك الضغط إلى مجلد مختبر (مثل ~/lab/، وليس /Applications) وشغّل من هناك.

5.2 الطريقة ب — لقطات Chromium

إذا كان إصدار معيّن مفقودًا من Chrome for Testing، استخدم أرشيف لقطات Chromium (commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/ لمعمارية Intel، و .../Mac_Arm/ لمعمارية Apple Silicon)، المفهرس حسب موضع الالتزام (commit position) — اربط الإصدار المعرّض للخطر بموضع في الفرع عبر chromium-history، ثم اسحب أقرب لقطة. اللقطات أيضًا لا يتم تحديثها تلقائيًا.

5.3 منع التحديثات التلقائية (فقط إذا كنت تستخدم بناءً ذا علامة تجارية من مصدر آخر)

أوقف عملاء تحديث Keystone وامنع googleupdate.googleapis.com، وإلا فسيقوم إصدار الاختبار بتصحيح نفسه بصمت بين عشية وضحاها. غير مطلوب لإصدارات Chrome for Testing.

5.4 تحقق من أنك على خلفية Metal (حرج)

بدون Metal، يعرض Chrome WebGL برمجيًا (SwiftShader) ولا يتم لمس خلفية ANGLE Metal أبدًا. في وحدة تحكم صفحة PoC، شغّل:

root@kitploit:~
const c = document.createElement('canvas'), g = c.getContext('webgl2');
const x = g.getExtension('WEBGL_debug_renderer_info');
console.log(g.getParameter(x.UNMASKED_RENDERER_WEBGL));
// Good:  contains "ANGLE Metal Renderer"
// Bad:   contains "SwiftShader" -> the vulnerable path is NOT being exercised

يمكنك أيضًا التأكيد عبر chrome://gpu. عادةً ما تعمل أجهزة Parallels/VMware Fusion الافتراضية المزودة بمضاعفة GPU؛ أما إعدادات QEMU/UTM الأدنى فغالبًا ما تتراجع إلى SwiftShader.


6. خطوات إعادة الإنتاج

  1. اعزل الهدف. لقطة جهاز افتراضي أو حساب macOS مخصص. لا تسجّل الدخول أبدًا أو تفعّل المزامنة في الإصدار المعرّض للخطر؛ تعامل معه كمخترَق بالتصميم. (تأثير الثغرة هو تنفيذ تعليمات برمجية داخل صندوق الحماية بمجرد زيارة صفحة ويب [1].)
  2. ثبّت الإصدار المعرّض للخطر وفقًا لـ §5 وتحقق من نجاح §5.4.
  3. اخدم صفحة PoC (إما بفتح الملف مباشرة أو):
    root@kitploit:~
    cd <repo dir>
    python3 -m http.server 8000
    # then browse to http://localhost:8000/cve-2026-9999-poc.html
    
  4. تحقق من سطر التحديد (fingerprint) المطبوع عند التحميل. يجب أن يشير إلى أن البناء أقل من 148.0.7778.216 وبالتالي يحتمل أن يكون معرّضًا للخطر [1]. في الإصدارات المصحّحة، يحذّر الإطار حتى لا تهدر وقتك.
  5. انقر 1) Run curated triggers. ثمانية shaders تضغط على أنماط المترجم الموصوفة في §2 (فهرسة ثوابت خارج النطاق OOB، تحديد حجم مصفوفة بتجاوز عدد صحيح، فهرسة مصفوفات ديناميكية، ضغط فك الحلقات، مصفوفات من مصفوفات، discard/swizzle، حالات ما قبل المعالج، كتل UBO ضخمة). راقب نتائج [!!] وأحداث فقدان السياق.
  6. انقر 2) Fuzz. يتم تجميع shaders GLSL معدّلة وربطها ورسمها وقراءتها في حلقة. راقب السجل بحثًا عن CONTEXT LOST.
  7. عند حدوث انهيار، يُحفظ shader المخالف في localStorage. استرجعه:
    root@kitploit:~
    localStorage.getItem("cve20269999_poc_fs");      // crashing fragment shader
    localStorage.getItem("cve20269999_crashes");     // crash event log
    

لقطة مباشرة لتشغيل مشبوه يمكن رؤيتها أيضًا في chrome://gpu وفي وحدة تحكم macOS (تقارير انهيار عملية GPU).


7. تفسير النتائج / الإيجابيات الكاذبة المعروفة

  • WEBGL_context_lost ≠ ثغرة. مراقب GPU في Chrome يقتل shaders الطويلة (مُشغِّل loop-unroll-dos وتكرارات fuzz ذات أعداد حلقات ضخمة مصممة لتكون بطيئة). لتقليل الضوضاء: قلّل SH_ITER، أو تأكد من أن أي انهيار مرشّح يتكرر سريعًا (< 1 ثانية لكل تكرار).
  • الانهيار الحقيقي لسلامة الذاكرة يجب أن يتكرر بشكل حتمي من الـ shader المصغّر ويظهر بصمة انهيار مميزة في وحدة التحكم (مثل EXC_BAD_ACCESS) بدلًا من إنهاء المراقب.
  • فقط تقرير ASAN الذي يحدد خلفية ANGLE Metal هو دليل قوي على أنك وجدت هذه الثغرة وليس خللًا عشوائيًا في برنامج التشغيل.

8. تأكيد السبب الجذري: بناء ASAN (اختياري لكن مُوصى به بشدة)

ابنِ نسخة معرّضة للخطر من Chromium مع AddressSanitizer:

root@kitploit:~
fetch chromium
cd src
git checkout tags/148.0.7778.215          # last tag before the fix
gn gen out/asan --args='is_asan=true is_debug=false symbol_level=1 dcheck_always_on=true'
autoninja -C out/asan chrome

ثم شغّل الـ shader المصغّر المخالف مع تفعيل التحقق من واجهة Metal:

root@kitploit:~
MTL_DEBUG_LAYER=1 out/asan/Chromium.app/Contents/MacOS/Chromium poc.html

سيعرض تتبع ASAN اسم دالة ANGLE/Metal المحددة ويؤكد ما إذا كان الانهيار يطابق مكوّن الثغرة [1]. (بعد ذلك: بمجرد ظهور التزام الإصلاح لـ 148.0.7778.216، قارن third_party/angle/src/libANGLE/renderer/metal/ لتحديد السبب الجذري الحقيقي واستبدل نهج fuzzing بمُشغِّل حتمي.)


9. القيود

  • لا يوجد سبب جذري أو PoC عام. مشكلة Chromium مقيدة ("Permissions Required") [1]؛ هذا الإطار مبني على فرضيات.
  • لا يوجد استغلال معروف في البرية. إثراء SSVC من CISA (2026-05-29) يسجّل exploitation: none [1].
  • تأثير محصور داخل صندوق الحماية فقط [1] — هذا الـ PoC، حتى لو أنتج تنفيذ تعليمات برمجية، يعالج فقط مرحلة العملية المعزولة في سلسلة هجوم حقيقية.
  • هدف خاص بنظام macOS فقط [1]؛ لا تستخلص استنتاجات من التشغيل على منصات أخرى.

10. السلامة والقانون

اختبر فقط على أجهزة تملكها أو مصرّح لك باختبارها صراحةً. يقوم الإطار عمدًا بتجميع shaders عدائية لتعطيل عملية الرسوميات — توقع قتل عملية GPU. أبقِ إصدار المتصفح المعرّض للخطر بعيدًا عن شبكات الإنتاج.


11. المراجع

[1] NVD — CVE-2026-9999: https://nvd.nist.gov/vuln/detail/CVE-2026-9999 * إشعار البائع (مدونة إصدارات Chrome، تحديث القناة المستقرة): https://chromereleases.googleblog.com/2026/05/stable-channel-update-for-desktop_0877304591.html * مشكلة Chromium 513364480 (مقيدة الوصول): https://issues.chromium.org/issues/513364480

تنزيل الأداة
  • صغّر وأعد الاختبار للـ shader المخالف في عزلة (5+ عمليات تشغيل متتالية) لتأكيد الحتمية.
  • أكّد السبب الجذري ببناء ASAN قبل نسب أي شيء إلى CVE-2026-9999 — انظر §8.