DF-5069 / verdict.json
{ "finding_id": "DF-5069", "status": "untested", "verdict": "psm_fini_power_state_table() (sys/dev/drm/amd/powerplay/hwmgr/pp_psm.c:94-109) frees hwmgr->ps at :104 and NULLs request_ps/ps/current_ps (:105-107) but leaves hwmgr->boot_ps and hwmgr->uvd_ps - assigned as interior pointers of that array at pp_psm.c:79/:87, declared at inc/hwmgr.h:754-755 - dangling into freed memory. Grep across sys/dev/drm/amd shows no in-tree reader of hwmgr->boot_ps/hwmgr->uvd_ps (the si/ci/kv/amdgpu_pm boot_ps uses are the separate adev->pm.dpm.boot_ps field), so this is latent incomplete cleanup (CWE-459 shape), not a live UAF. Hardware-gated path (amdgpu attach) absent from the audit guest (QEMU std VGA, /dev/dri absent - env.txt), so no runtime verification is possible. Upstream-Linux cross-reference was attempted but web retrieval was unavailable during this run (firecrawl backend refused; kernel.org/elixir anti-bot gate; raw.github 429); finding argued on in-tree evidence only.", "reproduced": false, "impact": "none", "confidence": "certain", "exploit_chain": "", "evidence": "VERDICT.md (assignments :79/:87 vs fini :102-107, reader-grep proving latency); env.txt (hardware-absence documentation); fix.diff (NULL both pointers in fini).", "kernel_refs": ["sys/dev/drm/amd/powerplay/hwmgr/pp_psm.c:79", "sys/dev/drm/amd/powerplay/hwmgr/pp_psm.c:87", "sys/dev/drm/amd/powerplay/hwmgr/pp_psm.c:102", "sys/dev/drm/amd/powerplay/hwmgr/pp_psm.c:104", "sys/dev/drm/amd/powerplay/inc/hwmgr.h:754"], "poc_changes": "No PoC exists (latent hardening finding on a hardware-gated path). Evidence pack is analysis-only with hardware-absence documentation.", "attempts": 1, "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026\troot@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64", "runtime_sec": 60, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "code_hash": "dc30427e7f533edaced3576034e6d90a437036ebe66798ddc1c0f545c474807e", "notes": "code_hash is sha256 of fix.diff (no runnable PoC). Pure defense-in-depth: first future consumer of the published hwmgr->boot_ps/hwmgr->uvd_ps fields after a fini would UAF-read. Guest left clean and up.", "recommended_fix": "NULL hwmgr->boot_ps and hwmgr->uvd_ps in psm_fini_power_state_table() alongside request_ps/ps/current_ps (pp_psm.c:105).", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "Two-line NULLing fix, trivially correct by inspection; cannot be boot-validated on the audit guest (path requires an AMD GPU - env.txt).", "fix_evidence": "findings/poc/DF-5069/fix.diff; VERDICT.md fix section." } |