
CVE-2026-43499: Linux kernel futex PI use-after-free research package
remove_waiter()는 kernel/locking/rtmutex.c에서 slowlock 경로에 사용되며, futex_requeue()에서 호출될 때 rt_mutex_start_proxy_lock()의 프록시 잠금 롤백에도 사용됩니다.
프록시 잠금의 경우 waiter::task는 current가 아니지만, remove_waiter()는 잘못되게 current에 대해 동작합니다. 이로 인해 세 가지 문제가 발생합니다:
waiter::task::pi_lock을 보유하지 않은 채 수행됩니다.pi_blocked_on이 해제되지 않아, use-after-free(사용 후 해제)를 유발할 준비가 된 댕글링 포인터가 남습니다.rt_mutex_adjust_prio_chain()이 잘못된 태스크에 대해 동작합니다.CWE-416 (Use After Free). 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에서 패치됨.
승인된 테스트 장치 전용의 권한 상승 없는 검증 하네스입니다.
재현 가능 패키지: test_package/ (빌드, 해시, ADB 절차, 공개).
사전 요구 사항: Android NDK r27+, adb. 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
--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 단계는 구현되지 않았습니다.
보고자:
수정 작성자: Keenan Dong
수정 커밋자: Thomas Gleixner
커밋: 3bfdc63 — rtmutex: Use waiter::task instead of current in remove_waiter()