⬢ DragonFlyBSD Kernel Audit
DF-4021 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4021",
  "status": "untested",
  "attempts": 0,
  "reproduced": 0,
  "confidence": "certain",
  "impact": "mpr_user_btdh off-by-one: target > max_devices (mpr_user.c:2240) lets TargetID==max_devices read mapping_table[max_devices] one 24-byte element past the heap allocation (mpr_mapping.c:2140-2141 allocates exactly max_devices entries), disclosing a garbage u16 dev_handle (byte offset 18 of the element) to the operator-group caller (mpr_user.c:2245-2247, node mpr_user.c:205). Twin of DF-4016 (mps).",
  "verdict": "source-verified; HW-gated (needs attached mpr(4) HBA; PoC skipped per contract for Low)",
  "exploit_chain": [],
  "evidence": "source-only; path:line citations in README.md; mps twin evidence at findings/poc/DF-4016/",
  "kernel_refs": [
    "sys/dev/raid/mpr/mpr_user.c:2240",
    "sys/dev/raid/mpr/mpr_user.c:2245",
    "sys/dev/raid/mpr/mpr_mapping.c:2140",
    "sys/dev/raid/mpr/mprvar.h:113"
  ],
  "guest_uname": "",
  "code_hash": "",
  "artifact_dir": "findings/poc/DF-4021/",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "change the check at mpr_user.c:2240 from target > sc->max_devices to target >= sc->max_devices (and the mps twin at mps_user.c:2021)",
  "fix_evidence": "source-only"
}