
CVE-2026-43499 PoC
remove_waiter() в kernel/locking/rtmutex.c используется путями медленной блокировки, а также для отката прокси-блокировки в 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 HIGH (Локально, низкая сложность, низкие привилегии).
Затрагивает: 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
Сообщили:
Исправление подготовлено: Кинань Дун
Исправление внесено: Томас Гляйкснер
Коммит: 3bfdc63 — rtmutex: Использовать waiter::task вместо current в remove_waiter()