
CVE-2026-64747 مسبار إطلاق تجاوز الحدود (OOB) لقناع البتات المعدود (count-bitmask) في AGXG14P (A15/iOS 26.5.2)
الهدف: iPhone 13 (A15) على iOS 26.5.2. يضغط هذا التطبيق على مسارات قائمة أوامر GPU الخاصة بـ AGXG14P والتي يُحتمل أن تغذّي قناع بتات العدّاد لكل قائمة (count >= 0x400 → كتابة خارج النطاق في خانة بحجم 0x40 بايت → تلف في كومة النواة).
0xfffffff008003a8c (إصدار 26.5.2): x1 = قناع العد 32-بت.
لكل بت مضبوط n تنسخ قالبًا ثابتًا بحجم 0x40 بايت
(00 00 00 00 + FF×60) إلى obj+0x1040+n*0x40 وobj+0x1540+n*0x40.
الإصلاح في 26.6: رفض count >= 0x400 (أي أي بت ≥ 10). الخانات القانونية 0..9.[cmd+0x14] لكل أمر (الدالة المغلفة 0xfffffff00800c9d0). مصفوفات خانات الدفعة (10 خانات × 0x40) موجودة عند إزاحتي الكائن 0x1040 / 0x1540.count غير قابل للوصول عبر أي استدعاء/قيمة ثابتة — الدالة تُستدعى من خلال جدول توزيع مبني في زمن التشغيل (استدعاء PAC غير مباشر).[cmd+0x14] (أو القناع). هذا بالضبط ما يحاول هذا المسبار اكتشافه تجريبيًا.دفعة مقدمّة حيث يضبط حقل 0x14 لأحد الأوامر (أو عملية OR عبر الدفعة) بتًا ≥ 10. لذلك يغمر هذا المسبار كل سطح وصول محتمل بـقيم عالية البتات: قيم إشارات الأحداث المشتركة 1<<k (k=0..31)، أقنعة كثيفة (0x3FF|0x400..0xFFFFFFFF)، دفعات مفردة من 256 مخزنًا، حواجز (fences)، عرض + حوسبة + نسخ (blit)، 32 قائمة أوامر.
إذا تسبب المسبار في تفعيل الخلل، فالأعراض المتوقعة، بترتيب تصاعدي للخطورة:
يتم بناء ipa جاهز تلقائيًا بواسطة GitHub Actions عند كل push ويوضع في مصنوعات البناء (build artifacts) لآخر تشغيل (AGXProbe.ipa). إنه غير موقّع، لذا ثبّته مع أي أداة تثبيت جانبي بمعرّف Apple مجاني:
ملف ipa الحالي: bundle id com.agxprobe.test، arm64، MinOS 17.0.
إذا رفضت أداة التثبيت الجانبي معرف الحزمة، أعد التوقيع بمعرّف فريد.
AGXProbe.xcodeproj في Xcode (16.x).PRODUCT_BUNDLE_IDENTIFIER (مثل com.you.agxprobe1) إلى
أي قيمة فريدة حتى ينجح التوقيع.eventStorm → inFlight → fenceStorm → multiQueue → computeHeavy → chainedEvents → mixed → (repeat).agxprobe.log في Documents الخاصة بالتطبيق، ويمكن الوصول إليه عبر تطبيق Files لأن UIFileSharingEnabled مفعّل) وأرسِله إلينا.إذا حدث انهيار:
الإعدادات ← الخصوصية والأمان ← التحليلات والتحسينات ←
بيانات التحليلات ← ابحث عن أحدث panic-full-<date> (أو JetsamEvent /
ipa-log-<timestamp> لتطبيق تم قتله) ← شارك / AirDrop / انسخ الجزء الأخير.
الأسطر الأولى بعد "panic(cpu ...)" تُظهر دالة النواة التي انهارت —
أرسِل هذه الأسطر إلينا.