## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MOBIUSM-CVE-2026-43499
# CVE-2026-43499 — Использование после освобождения в Futex PI ядра Linux
## Ошибка
`remove_waiter()` в `kernel/locking/rtmutex.c` используется путями медленной блокировки, а также для отката прокси-блокировки в `rt_mutex_start_proxy_lock()`, вызываемой из `futex_requeue()`.
В случае прокси-блокировки `waiter::task` не является `current`, но `remove_waiter()` некорректно работает с `current`. Это вызывает три проблемы:
1. Удаление из красно-чёрного дерева происходит без удержания `waiter::task::pi_lock`.
2. Поле `pi_blocked_on` задачи-ожидателя не очищается, оставляя висячий указатель, готовый к использованию после освобождения.
3. `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`.
root@kitploit:~
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
Ожидаемый вывод на уязвимом устройстве заканчивается паникой ядра:
root@kitploit:~
Unable to handle kernel write to read-only memory
## Благодарности
**Сообщили:**
* Юань Тань
* Ифань У
* Цзюэфэй Пу
* Синь Лю
**Исправление подготовлено:** Кинань Дун
**Исправление внесено:** Томас Гляйкснер
**Коммит:** `3bfdc63` — rtmutex: Использовать waiter::task вместо current в remove_waiter()