
CVE-2026-43499: Linux kernel futex PI use-after-free research package
الدالة remove_waiter() في kernel/locking/rtmutex.c تُستخدم في مسارات القفل البطيء (slowlock)، وأيضًا من أجل التراجع عن قفل الوكيل (proxy-lock) في rt_mutex_start_proxy_lock() عندما يتم استدعاؤها من futex_requeue().
في حالة قفل الوكيل، لا يكون 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.
أداة تحقق لا ترفع الامتيازات، مخصصة لجهاز الاختبار المصرح به فقط.
الحزمة القابلة لإعادة الإنتاج: test_package/ (البناء، التجزئات، خطوات ADB، الإفصاح).
المتطلبات: Android NDK r27+ وadb. على Windows: .\build.ps1.
.\build.ps1
adb push build/ghostlock_validate /data/local/tmp/ghostlock_validate
adb shell chmod 755 /data/local/tmp/ghostlock_validate
# Safe default (recommended)
adb shell /data/local/tmp/ghostlock_validate --dry-run --retries 3
# Optional crash probe (may panic) — not for privilege escalation
# adb shell /data/local/tmp/ghostlock_validate --probe --retries 1
نجاح --dry-run عند EDEADLK=1 + DRY_RUN_STOP_BEFORE_CORRUPTION=1.
حزمة الإثبات (ما تم / لم يتم توضيحه على هذا الهاتف): evidence/PROOF.md
حزمة البائع (سجلات التشغيل التجريبي + حزمة الإفصاح): evidence/vendor_package_20260726/
إفصاح البائع: test_package/docs/VENDOR_DISCLOSURE.md.
مستودعات عامة لأجهزة أخرى (للمرجعية فقط، لا تنطبق على amber): evidence/OTHER_DEVICE_REPOS.md
لا يتم تنفيذ أي مراحل لبيانات الاعتماد / SELinux / CFI / الجذر (root).
أبلغ عنها:
مؤلف الإصلاح: Keenan Dong
نفّذ الالتزام بالإصلاح: Thomas Gleixner
الالتزام: 3bfdc63 — rtmutex: استخدم waiter::task بدلاً من current في remove_waiter()