⬢ DragonFlyBSD Kernel Audit
DF-4972 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4972",
  "status": "untested",
  "attempts": 0,
  "reproduced": 0,
  "impact": "corruption",
  "confidence": "certain",
  "verdict": "Root-gated 1-bit UAF write (Low; no DRM device on guest): the magic id lives in the ALLOCATION-TIME masters idr, but drm_master_release removes it from the CLOSE-TIME master - a SETMASTER swap (DRM_ROOT_ONLY in this tree, unlike upstream) leaves the (id -> drm_file*) entry dangling in the old masters idr after the drm_file is kfreed, and any is_master holder of the old master calling AUTH_MAGIC writes authenticated=1 (a single bit at a fixed offset) through the freed pointer into groomable memory. DF-2017s disabled exclusivity keeps the old master alive and lookup-reachable. Remove-from-old-master-before-swap fix.",
  "exploit_chain": "fd2 GETMAGIC (id N in M1) -> fd2 SETMASTER (root: master->M2, magic not migrated) -> fd2 close (removes from M2 = no-op) -> fd1 AUTHMAGIC(N) -> 1-bit write into freed drm_file",
  "evidence": "findings/poc/DF-4972/ (this verdict; full chain in reviewer notes)",
  "kernel_refs": [
    "sys/dev/drm/drm_auth.c:65",
    "sys/dev/drm/drm_auth.c:87-90",
    "sys/dev/drm/drm_auth.c:148-149",
    "sys/dev/drm/drm_auth.c:285-286"
  ],
  "guest_uname": "",
  "code_hash": ""
}