
CVE-2026-43499 PoC
تُستخدم الدالة remove_waiter() في kernel/locking/rtmutex.c بواسطة مسارات slowlock، وكذلك للتراجع عن proxy-lock في الدالة rt_mutex_start_proxy_lock() عند استدعائها من futex_requeue().
في حالة proxy-lock، لا يكون waiter::task هو current، لكن remove_waiter() تعمل بشكل غير صحيح على current. يسبب ذلك ثلاث مشاكل:
waiter::task::pi_lock.pi_blocked_on الخاص بمهمة المنتظر، مما يترك مؤشرًا معلقًا جاهزًا لاستغلال استخدام بعد التحرير.rt_mutex_adjust_prio_chain() على المهمة الخاطئة.CWE-416 (استخدام بعد التحرير). CVSS 3.1: 7.8 عالية (محلي، تعقيد منخفض، صلاحيات مطلوبة منخفضة).
الإصدارات المتأثرة: Linux 2.6.39 حتى 6.18.x؛ تم تصحيحها في 6.1.175، 6.6.140، 6.12.86، 6.18.27، 7.0.4.
المتطلبات الأساسية: Android NDK 27، CMake ≥ 3.22، adb.
cmake -B build -G Ninja
cmake --build build
adb push build/trigger /data/local/tmp/trigger
adb shell chmod +x /data/local/tmp/trigger
adb shell /data/local/tmp/trigger
المخرجات المتوقعة على جهاز متأثر تنتهي بذعر النواة:
Unable to handle kernel write to read-only memory
المبلِّغون:
مؤلف الإصلاح: Keenan Dong
قام بالالتزام: Thomas Gleixner
الالتزام: 3bfdc63 — rtmutex: Use waiter::task instead of current in remove_waiter()