Sploitus

Exploit for CVE-2026-43499

kitploit Β· 2026-08-27

Exploit Code

MARKDOWN62 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DNLID-CVE-2026-43499
# CVE-2026-43499 β€” Use-After-Free Π² futex PI ядра Linux

## Ошибка

`remove_waiter()` Π² `kernel/locking/rtmutex.c` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ путями быстрого Π·Π°Ρ…Π²Π°Ρ‚Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (slowlock), Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΎΡ‚ΠΊΠ°Ρ‚Π° proxy-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² `rt_mutex_start_proxy_lock()` ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΈΠ· `futex_requeue()`.

Π’ случаС proxy-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ `waiter::task` Π½Π΅ являСтся `current`, ΠΎΠ΄Π½Π°ΠΊΠΎ `remove_waiter()` Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ `current`. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚Ρ€Ρ‘ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ:

  1. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· rbtree происходит Π±Π΅Π· удСрТания `waiter::task::pi_lock`.
  2. ПолС `pi_blocked_on` Π·Π°Π΄Π°Ρ‡ΠΈ-оТидатСля Π½Π΅ очищаСтся, оставляя висящий ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ использованию послС освобоТдСния (use-after-free).
  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.

## PoC для Xiaomi Mi 11T (amber / agate)

НС ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ стСнд Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстового устройства.  
**Воспроизводимый ΠΏΠ°ΠΊΠ΅Ρ‚:** `test_package/` (сборка, Ρ…Π΅ΡˆΠΈ, шаги ADB, раскрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ).

**ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования:** Android NDK r27+, `adb`. Π’ Windows: `.\build.ps1`.

root@kitploit:~
    
    
    .\build.ps1
    adb push build/ghostlock_validate /data/local/tmp/ghostlock_validate
    adb shell chmod 755 /data/local/tmp/ghostlock_validate
    
    # БСзопасный Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (рСкомСндуСтся)
    adb shell /data/local/tmp/ghostlock_validate --dry-run --retries 3
    
    # Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π½Ρ‹ΠΉ сбой (ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ°Π½ΠΈΠΊΡƒ) β€” Π½Π΅ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ
    # adb shell /data/local/tmp/ghostlock_validate --probe --retries 1
    

УспСх `--dry-run`: `EDEADLK=1` \+ `DRY_RUN_STOP_BEFORE_CORRUPTION=1`.

**ΠŸΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² (Ρ‡Ρ‚ΠΎ дСмонстрируСтся / Π½Π΅ дСмонстрируСтся Π½Π° этом Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅):** `evidence/PROOF.md`  
**ΠŸΠ°ΠΊΠ΅Ρ‚ для Π²Π΅Π½Π΄ΠΎΡ€Π° (транскрипты dry-run + ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ раскрытия):** `evidence/vendor_package_20260726/`  
РаскрытиС Π²Π΅Π½Π΄ΠΎΡ€Ρƒ: `test_package/docs/VENDOR_DISCLOSURE.md`.  
ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… устройств (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для справки, ΠΊ amber Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹): `evidence/OTHER_DEVICE_REPOS.md`  
НикакиС этапы с ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ / SELinux / CFI / root Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

## Благодарности

**Π‘ΠΎΠΎΠ±Ρ‰ΠΈΠ»ΠΈ ΠΎΠ± ошибкС:**

  * Yuan Tan
  * Yifan Wu
  * Juefei Pu
  * Xin Liu



**Автор исправлСния:** Keenan Dong  
**Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠ»:** Thomas Gleixner  
**ΠšΠΎΠΌΠΌΠΈΡ‚:** `3bfdc63` β€” rtmutex: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ waiter::task вмСсто current Π² remove_waiter()