⬢ DragonFlyBSD Kernel Audit
DF-3804 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3804",
  "status": "not_reproduced",
  "reproduced": 0,
  "impact": "none",
  "confidence": "certain",
  "verdict": "mprsas_check_eedps read-capacity allocation-failure path (mpr_sas.c:3684-3692) calls xpt_free_path(ccb->ccb_h.path) where ccb->ccb_h.path is NULL (xpt_alloc_ccb zeroes the ccb and no path was assigned yet); xpt_free_path(NULL) -> xpt_release_path(NULL) derefs path->device (sys/bus/cam/cam_xpt.c:4047) -> deterministic kernel panic under memory pressure during EEDP probing, plus local_path (created at mpr_sas.c:3643) leaks. Not reproduced on guest: no SAS3 HBA, function unreachable at runtime; provable from source.",
  "exploit_chain": "",
  "evidence": "VERDICT.md, env.txt, fix.diff",
  "kernel_refs": [
    "sys/dev/raid/mpr/mpr_sas.c:3689",
    "sys/dev/raid/mpr/mpr_sas.c:3643",
    "sys/bus/cam/cam_xpt.c:4047"
  ],
  "poc_changes": "n/a \u2014 hardware-gated",
  "attempts": 1,
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64",
  "runtime_sec": 15,
  "guest_dirty": 0,
  "build_cmd": "n/a",
  "run_cmd": "sh findings/poc/DF-3804/run.sh",
  "code_hash": "",
  "notes": "Same defect exists in upstream FreeBSD mpr(4).",
  "recommended_fix": "Free local_path instead of the NULL ccb->ccb_h.path in the rcap_buf allocation-failure branch.",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "fix.diff corrects the freed pointer; not exercisable on this guest.",
  "fix_evidence": "findings/poc/DF-3804/fix.diff"
}