โฌข DragonFlyBSD Kernel Audit
DF-5144 / verdict.json
โ† back to finding โ†“ download raw
{
  "finding_id": "DF-5144",
  "status": "untested",
  "reproduced": false,
  "impact": "none",
  "confidence": "certain",
  "verdict": "Info hardening finding from the pass-2 audit of dc_surface.c: dc_plane_get_status() (dc_surface.c:98-129) is dead code in this tree (declared dc.h:563, zero callers) but carries three latent defects โ€” unchecked core_dc->res_pool deref at dc_surface.c:118, lockless iteration over dc->current_state (swapped/freed at dc.c:1026-1030 with no internal lock) at :118-126, and an unchecked hwss.update_pending_status call at :125. No impact as shipped; next vendor sync that ports the upstream amdgpu_dm caller would make these reachable (UAF-read/NULL-deref class). Phase V skipped per contract (Info severity); no PoC built, no guest run.",
  "exploit_chain": "",
  "evidence": "findings/poc/DF-5144/README.md (analysis + static reproduce commands); findings/poc/DF-5144/VERDICT.md (full narrative incl. destruct()-pairing and refcount negative results and the recommended diff)",
  "kernel_refs": [
    "sys/dev/drm/amd/display/dc/core/dc_surface.c:105",
    "sys/dev/drm/amd/display/dc/core/dc_surface.c:115",
    "sys/dev/drm/amd/display/dc/core/dc_surface.c:118",
    "sys/dev/drm/amd/display/dc/core/dc_surface.c:125",
    "sys/dev/drm/amd/display/dc/core/dc.c:1026",
    "sys/dev/drm/amd/display/dc/dc.h:563"
  ],
  "poc_changes": "No PoC โ€” the function has no callers in this tree, so no trigger exists to build; Phase V skipped for Info severity per contract.",
  "attempts": 0,
  "guest_uname": "n/a (no guest run โ€” Info severity, Phase V skipped per contract)",
  "runtime_sec": 0,
  "guest_dirty": 0,
  "build_cmd": "n/a (no PoC built)",
  "run_cmd": "n/a (no PoC run)",
  "code_hash": "sha256:4b31ec02936aa8495470bc7e9cc38892334c89c821436d7f10f7883c26a9e8f6 (VERDICT.md)",
  "notes": "Also recorded as negative results: destruct() gamma/tf release-then-NULL pairing is correct in-tree (incl. amdgpu_dm.c:2454-2458 error path); dc_gamma_release(**) vs dc_transfer_func_release(*) API asymmetry is a trap but not a bug today; enable_surface_flip_reporting (:64-69) is dead with unchecked irq-source enum arithmetic; kref overflow not attacker-reachable (refcount_inc saturates only at <=0, needs 2^31 simultaneous retains).",
  "recommended_fix": "In dc_plane_get_status(): NULL-check core_dc->res_pool, take dc_retain_state()/dc_release_state() around the current_state iteration, and NULL-check hwss.update_pending_status (see VERDICT.md diff).",
  "fix_status": "not_applicable",
  "fix_baseline_reproduced": false,
  "fix_patched_reproduced": false,
  "fix_verdict": "Fix validation not performed: Info-severity hardening finding on dead code; Phase V skipped per contract.",
  "fix_evidence": "n/a"
}