
CVE-2026-43499 PoC
remove_waiter() का उपयोग kernel/locking/rtmutex.c में slowlock paths द्वारा किया जाता है, लेकिन proxy-lock rollback के लिए भी rt_mutex_start_proxy_lock() में जब futex_requeue() से आह्वान किया जाता है।
प्रॉक्सी-लॉक मामले में waiter::task current नहीं है, लेकिन remove_waiter() गलत तरीके से current पर कार्य करता है। इससे तीन समस्याएं उत्पन्न होती हैं:
waiter::task::pi_lock को धारण किए बिना होता है।pi_blocked_on साफ़ नहीं किया जाता, जिससे उपयोग-के-बाद-मुक्त (use-after-free) के लिए तैयार एक डैंगलिंग पॉइंटर रह जाता है।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: remove_waiter() में current के बजाय waiter::task का उपयोग करें