Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
detect_CVE-2026-86950 — أداة بايثون لاكتشاف ملفات PDF التي تستغل CVE-2026-86950 | Kitploit
أدوات/GitHubGitHub/decalage2/detect_cve-2026-86950
التحليل الثابتماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةالاستغلالتحليل البرمجيات الخبيثةالأوراق والأبحاث
GitHubdecalage2/detect_cve-2026-86950

detect_CVE-2026-86950

أداة بايثون لاكتشاف ملفات PDF التي تستغل CVE-2026-86950

عرض المستودع
62منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

كاشف استغلال PDF لثغرة CVE-2026-86950

لمزيد من السياق حول هذا المشروع وثغرة CVE-2026-86950، راجع https://decalage.info/CVE-2026-86950/

إخلاء المسؤولية: كُتب معظم هذا الملف التعريفي وكود الكشف بمساعدة وكلاء برمجة بالذكاء الاصطناعي. وقد اختُبرت الأداة بنجاح على آلاف ملفات PDF الشرعية وعلى إثبات المفهوم المتاح المنشور هنا. ومع ذلك، فإن هذه الأداة جديدة وخوارزمية الكشف معقدة نوعًا ما لذا استخدمها بحذر.

يقوم detect_cve_2026_86950.py بفحص ملفات PDF فحصًا ساكنًا بحثًا عن خطوط مضمّنة مصممة لاستغلال CVE-2026-86950 ("The Great Glyph Grift")، وهو كتابة خارج الحدود في مُنقّط الحروف (glyph rasterizer) المضاد للتعرّج (anti-aliased) في Apple CoreGraphics (تم إصلاحه في iOS / macOS 26.7.1).

لا يقوم أبدًا بعرض الخط أو تنفيذ أي كود استغلال — بل يحلّل ملف PDF وبرنامج الخط المضمّن ويبحث عن البصمة البنيوية للهجوم.

الثغرة (لماذا ينجح الكشف)

يحوّل CoreGraphics إحداثيًا عشريًا للجهاز إلى عدد صحيح بنقطة ثابتة 16.12 بتقريبًا:

int32_t aa_double_to_fixed(double px) { return (int32_t)(0.5 + 4096.0 * px); }

عندما يتجاوز 4096 * px نطاق int32، يصبح التحويل سلوكًا غير معرّف، وتختلف موضعا الاستدعاء (aa_moveto مقابل aa_lineto) — أحدهما يُشبِع والآخر يقتطع. هذا الاختلاف يُفسد حساب الصندوق المحيط للـ glyph في aa_add_edges، لذا يُخصَّص مخزن التغطية في aa_cache_render أصغر من اللازم فيكتب المُنقّط خارج الحدود. تُضيف رقعة 26.7.1 تقييدًا صريحًا إلى ±0x3FFFF001.

يبني إثبات المفهوم العام خطًا TrueType خبيثًا يفرض إحداثيًا مفرط الحجم كهذا:

  • سلسلة عميقة من الـ glyphs المركّبة، كل منها يُقيس السابق بنحو 2× (مقياس F2Dot14 قريب من حدّه الأقصى ~1.99994)؛
  • glyph ورقي صغير بمحيط منحلّ من نقطتين عند إحداثي كبير؛
  • لذا يبلغ المحيط الحقيقي للـ glyph الأعلى نحو 16 مليون وحدة خط (~1000× مربع em) بينما يبقى الصندوق المحيط المخزَّن للـ glyph صغيرًا؛
  • عند حجم نص كبير (/Tf 1024)، يفيض 4096 × device_coord عن int32.

ما الذي يفحصه الكاشف

  1. يستخرج كل برنامج خط محيطي مضمَّن باستخدام pikepdf — TrueType (/FontFile2) وCFF / OpenType (/FontFile3).
  2. يُحلّل كل خط باستخدام fontTools ويقيس المدى الإحداثي الحقيقي لكل glyph:
    • TrueType: يحلّ المكوّنات المركّبة تعاوديًا (بحيث تُتبَّع سلسلة القياس المتداخلة إلى مداها الحقيقي)؛
    • CFF / Type2: يرسم كل charstring عبر قلم حدود تحكّم (بحيث تُقاس الإحداثيات المتراكمة عبر العديد من المعاملات النسبية).
  3. يُعلّم الخط عندما يتحقق أي مما يلي:
    • يمتد المحيط الحقيقي لـ glyph إلى ما يتجاوز مربع em بكثير (لا يفعل ذلك أي glyph مشروع — العتبة 10× em، وشبه مؤكد فوق 100× em)؛
    • يتجاوز المدى الحقيقي بكثير الصندوق المحيط المعلَن للـ glyph نفسه (كذبة الصندوق المحيط التي يعتمد عليها الاستغلال)؛
    • (TrueType فقط) تداخل مركّب عميق مقترن بمكوّنات تكبير (>1) — سلسلة تضخيم الإحداثيات التي يستخدمها إثبات المفهوم العام.
  4. يجمع الإحداثي في أسوأ الحالات مع أحجام النص المستخدمة في تدفقات محتوى الصفحة (/Tf، Tm) ويتحقق مما إذا كان 4096 × device_coord يتجاوز فعليًا INT32_MAX — أي ما إذا كان فيض النقطة الثابتة قابلًا للوصول.

الأحكام: exploit (الفيض قابل للوصول)، suspicious (هندسة مفرطة الحجم لكنها لا تفيض عند الحجم الملاحَظ)، clean.

التثبيت والتشغيل

# with uv (recommended)
uv venv
uv pip install -r requirements.txt

# or any environment with pikepdf + fonttools
python3 detect_cve_2026_86950.py suspicious.pdf
python3 detect_cve_2026_86950.py -v *.pdf      # per-font details
python3 detect_cve_2026_86950.py --json f.pdf  # machine-readable

رمز الخروج: 0 نظيف، 1 تم العثور على استغلال/سلوك مريب، 2 خطأ.

القيود

  • السبب الجذري للثغرة CVE هو تحويل النقطة الثابتة في مُنقّط المسارات المشترك aa_* الخاص بـ CoreGraphics، والذي يرسم كلاً من مخططات TrueType glyf و CFF/Type2. يُضخّم الـ PoC العام الإحداثيات باستخدام الحروف المركّبة من TrueType؛ بينما يمكن لخط CFF الوصول إلى إحداثيات مفرطة الحجم مباشرةً (على سبيل المثال عبر تجميع المعاملات النسبية)، لذا يتم تحليل كلٍّ من /FontFile2 و/FontFile3. إن الاستدلال الخاص بسلسلة الحروف المركّبة خاص بـ TrueType؛ أما بالنسبة لـ CFF فإن الإشارة هي فحص الإحداثيات مفرطة الحجم / الكذب على صندوق الإحاطة.
  • إن فحص حجم النص (/Tf، Tm) لتدفقات المحتوى هو فحص بأفضل جهد ممكن؛ فهو لا يقيّم حالة رسومات PDF / CTM بشكل كامل. عند عدم العثور على حجم، يُفترض قيمة افتراضية محافظة قدرها 1024 لفحص التجاوز. إشارات الهندسة مفرطة الحجم الملازمة للخط لا تعتمد على ذلك.
  • هذا كاشف بنيوي استدلالي، وليس مُصيّرًا معزولًا (sandboxed): الغرض منه التقاط نمط الاستغلال المعروف والخطوط المشوّهة بشكل واضح، وليس إثبات أن الملف آمن.
تنزيل الأداة