
تحليل السبب الجذري وإثبات المفهوم (PoC) للوصول إلى CVE-2026-64747، وهو تجاوز سعة المخزن المؤقت في امتداد نواة AppleAVE2. يتضمن بروتوكول IOKit السلكي المعكوس، وحسابات التجاوز، وإثبات مفهوم في مساحة المستخدم يقود مسار التكوين.
تحليل السبب الجذري وإثبات مفهوم الوصول لنظام macOS لثغرة
CVE-2026-64747، وهي تجاوز سعة مخزن مؤقت في امتداد نواة مشفر الفيديو AppleAVE2
(com.apple.driver.AppleAVE2) تم إصلاحها في macOS 26.6 (kext 905.40.1).
AppleAVE2 — التأثير: قد يتمكن تطبيق من تنفيذ كود تعسفي بامتيازات النواة. تمت معالجة تجاوز سعة المخزن المؤقت في حساب حجم مخزن العمل الخاص بالمشفر من خلال تحسين فحوصات الحدود.
يوثق هذا المستودع بروتوكول الأسلاك IOKit المعكوس بالكامل لـ
AppleAVE2UserClient (إنشاء جلسة ← تكوين ← معالجة لكل إطار)، وموقع
التجاوز الدقيق (حاسبة حجم مخزن عمل LRB ذات 32 بت في مسار HEVC متعدد
التمريرات بعمق 10 بت)، وإثبات مفهوم في مساحة المستخدم يفتح عميل المستخدم،
ويقود مسار التكوين عبر مكدس التحقق من النواة، ويوضح الفرق بين
البنيات الضعيفة (905.36.1) والمصلحة (905.40.1).
المستوى (بصراحة): الوصول + هندسة عكسية كاملة للبروتوكول + رياضيات تجاوز مثبتة تحليليًا. ليست RCE، ولا يوجد تجاوز حي موضح — يستضيف جهاز المختبر kext المصلح، وبوابة قدرة الأجهزة (الموجودة في كلا البنيتين) ترفض الأبعاد المتجاوزة قبل تشغيل الحاسبة الضعيفة. يتطلب إطلاق التجاوز هدفًا يقبل جدول قدراته الأبعاد المطلوبة (انظر FIRE_READY.md §5-6).
| ملف | الوصف |
|---|
poc_ave2_reach.c | إثبات مفهوم IOKit في مساحة المستخدم: يفتح AppleAVE2UserClient، وينشئ جلسة، ويقود التكوين بالبنى المعكوسة. لا حاجة لامتيازات. |
ave2_wire.h | تنسيق الأسلاك المعكوس: أرقام المحددات، أحجام البنى، وكل إزاحة حقل مهمة (العرض/الارتفاع، encType، المشاهدات/الطبقات، chroma، عمق البت) |
WIRE_FORMAT.md | مرجع تنسيق الأسلاك: تخطيط جدول الإرسال، خصوصية PAC، عقود كل محدد |
FIRE_READY.md | رياضيات التجاوز (حاسبة LRB بالوضع 5)، المدخلات الدقيقة لإطلاقه، أدلة تشغيل المضيف المصلح، والمجهولات المتبقية |
evidence/ | التقاط ioreg + سجلات النواة من تشغيلات المضيف المصلح (تقدم مكدس التحقق) |
clang -O0 -g -arch arm64 -framework IOKit -framework CoreFoundation \
-o poc_ave2_reach poc_ave2_reach.c
./poc_ave2_reach # لا يتطلب صلاحيات الجذر؛ الخدمة تُفتح من سياق المستخدم
يحسب مشفر AppleAVE2 حجم مخزن عمل LRB (مخزن مرجعي جانبي)
بحساب 32 بت وبدون فحص تجاوز. في مسار HEVC متعدد التمريرات بعمق 10 بت
(تُستدعى الحاسبة مع param_2 = 5)، أبعاد مثل
64656×8080 (التي تجتاز مشبك w*h ≤ 0x1FFE0000 الخاص بالسائق) تجعل
مجموع المكونات 0x80000000 — بت الإشارة مضبوط. تُرجع الحاسبة الضعيفة
مجموع 32 بت الخام؛ يُعامل الحجم كقيمة سالبة في المراحل اللاحقة،
ويُخصص مخزن DART/IOMMU أصغر من الحجم المطلوب، وتكتب DMA الخاصة بالمشفر
خارجه ← تلف كومة النواة/DART ← تنفيذ كود النواة. تضيف الحاسبة المصلحة
فحوصات إشارة لكل مكون وفحص مجموع 64 بت وتسجل
LRB size overflow.
__const الخاص بـ metaclass (صفوف
بخطوة 0x18 = {func, inSize<<32, outSize<<32}، مع خصوصية مؤشر PAC).IOServiceOpen النوع=1 (النوع=0 ← رفض الإنشاء).IOConnectCallAsyncStructMethod (يُرفض المسار المتزامن عند
بوابة IO_Config:337 قبل التحقق).لأغراض البحث التعليمي والدفاعي. الثغرة مصلحة في إصدارات macOS الحالية؛ اختبر فقط على أجهزة تملكها.