DF-3817 / verdict.json
{ "finding_id": "DF-3817", "status": "inconclusive", "reproduced": 0, "impact": "none", "confidence": "likely", "verdict": "Source-certain: mpr.c:2065 passes the raw device-supplied U16 EventDataLength (dwords per MPI2, never validated) to hexdump() as a byte count against a ~96-128-byte reply-frame allocation \u2014 oversized values dump up to 64 KiB of adjacent kernel heap to the console. Gated behind MPR_EVENT debug (root) plus device cooperation. Runtime inconclusive: no SAS3 controller on the guest, events cannot be delivered (probe.log).", "exploit_chain": "", "evidence": "VERDICT.md; fix.diff (words->bytes + clamp to replyframesz).", "kernel_refs": [ "sys/dev/raid/mpr/mpr.c:2065" ], "poc_changes": "No runnable PoC without hardware.", "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": 5, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "notes": "Same family of debug-print OOB exists in mpr_table.c MPR_DPRINT_PAGE/EVENT helpers (that files own audit).", "recommended_fix": "Convert EventDataLength words to bytes and clamp to the remaining reply-frame bytes before hexdump().", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "No controller on guest; event path cannot be exercised.", "fix_evidence": "fix.diff; probe.log." } |