
CVE-2026-43499: Linux kernel futex PI use-after-free research package
kernel/locking/rtmutex.c में स्थित remove_waiter() का उपयोग slowlock पथों द्वारा किया जाता है, साथ ही futex_requeue() से आह्वान किए जाने पर rt_mutex_start_proxy_lock() में प्रॉक्सी-लॉक रोलबैक के लिए भी किया जाता है।
प्रॉक्सी-लॉक मामले में waiter::task, current नहीं होता, लेकिन remove_waiter() गलत तरीके से current पर कार्य करता है। इससे तीन समस्याएँ उत्पन्न होती हैं:
waiter::task::pi_lock को धारण किए बिना होता है।pi_blocked_on साफ़ नहीं किया जाता, जिससे एक डैंगलिंग पॉइंटर बचा रहता है जो use-after-free के लिए तैयार रहता है।rt_mutex_adjust_prio_chain() गलत कार्य (task) पर कार्य करता है।CWE-416 (Use After Free)। CVSS 3.1: 7.8 HIGH (स्थानीय, निम्न जटिलता, निम्न विशेषाधिकार आवश्यक)।
प्रभावित संस्करण: 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: Use waiter::task instead of current in remove_waiter()