
CVE-2026-43499 PoC
remove_waiter() in kernel/locking/rtmutex.c wird von den Slowlock-Pfaden verwendet, aber auch für den Proxy-Lock-Rollback in rt_mutex_start_proxy_lock(), wenn es von futex_requeue() aufgerufen wird.
Im Proxy-Lock-Fall ist waiter::task nicht current, aber remove_waiter() arbeitet fälschlicherweise mit current. Dies verursacht drei Probleme:
waiter::task::pi_lock gehalten wird.pi_blocked_on des Waiter-Tasks wird nicht gelöscht, was einen hängenden Zeiger hinterlässt, der für Use-After-Free bereit ist.rt_mutex_adjust_prio_chain() arbeitet auf dem falschen Task.CWE-416 (Use After Free). CVSS 3.1: 7.8 HOCH (Lokal, geringe Komplexität, geringe Rechte erforderlich).
Betroffen: Linux 2.6.39 bis 6.18.x; gepatcht in 6.1.175, 6.6.140, 6.12.86, 6.18.27, 7.0.4.
Voraussetzungen: 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
Erwartete Ausgabe auf einem anfälligen Gerät endet mit einer Kernel-Panic:
Unable to handle kernel write to read-only memory
Gemeldet von:
Fehlerbehebung von: Keenan Dong
Fehlerbehebung committet von: Thomas Gleixner
Commit: 3bfdc63 — rtmutex: Verwende waiter::task statt current in remove_waiter()