
CVE-2026-43499: Linux kernel futex PI use-after-free research package
remove_waiter() in kernel/locking/rtmutex.c viene usata dai percorsi slowlock ma anche per il rollback del proxy-lock in rt_mutex_start_proxy_lock() quando invocata da futex_requeue().
Nel caso del proxy-lock, waiter::task non è current, ma remove_waiter() opera erroneamente su current. Questo causa tre problemi:
waiter::task::pi_lock sia tenuto.pi_blocked_on del task waiter non viene azzerato, lasciando un puntatore pendente pronto per l'uso-dopo-free.rt_mutex_adjust_prio_chain() opera sul task sbagliato.CWE-416 (Use After Free). CVSS 3.1: 7.8 HIGH (Locale, complessità bassa, privilegi bassi richiesti).
Interessati: Linux 2.6.39 fino a 6.18.x; patch applicata in 6.1.175, 6.6.140, 6.12.86, 6.18.27, 7.0.4.
Harness di validazione senza escalation per il solo dispositivo di test autorizzato.
Pacchetto riproducibile: test_package/ (build, hash, passaggi ADB, divulgazione).
Prerequisiti: Android NDK r27+, adb. Su 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
Successo di --dry-run: EDEADLK=1 + DRY_RUN_STOP_BEFORE_CORRUPTION=1.
Pacchetto prova (cosa è / non è dimostrato su questo telefono): evidence/PROOF.md
Pacchetto vendor (trascrizioni dry-run + bundle di divulgazione): evidence/vendor_package_20260726/
Divulgazione al vendor: test_package/docs/VENDOR_DISCLOSURE.md.
Repo pubblici per altri dispositivi (solo riferimento, non applicabili ad amber): evidence/OTHER_DEVICE_REPOS.md
Nessuna fase relativa a credenziali / SELinux / CFI / root è implementata.
Segnalato da:
Patch scritta da: Keenan Dong
Patch committata da: Thomas Gleixner
Commit: 3bfdc63 — rtmutex: Use waiter::task instead of current in remove_waiter()