DF-4213 / verdict.json
{ "finding_id": "DF-4213", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "mpt_raid_reply_frame_handler memcpys sizeof(union action_data)=16 (MPI_RAID_VOL_INDICATOR, 2xU64) from MSG_RAID_ACTION_REPLY.ActionData which is a single U32 (mpi_raid.h) \u2014 a 12-byte over-read past the reply message into stale 256-byte reply-frame residue. The indicator request supplies no SGE buffer (addr=0,len=0, mpt_raid.c:1327) so the stale bytes become sync_progress and are printed to console every resync tick. Low-value info leak + permanently-wrong feature.", "exploit_chain": "", "evidence": "findings/poc/DF-4213/VERDICT.md, findings/poc/DF-4213/env.txt (guest pciconf: no triggering hardware), findings/poc/DF-4213/fix.diff", "kernel_refs": [ "sys/dev/disk/mpt/mpt_raid.c:578", "sys/dev/disk/mpt/mpt_raid.c:1327", "sys/dev/disk/mpt/mpt_raid.c:1340", "sys/dev/disk/mpt/mpt_raid.c:1521", "sys/dev/disk/mpt/mpilib/mpi_raid.h:1", "sys/dev/disk/mpt/mpt.h:816" ], "poc_changes": "no runnable PoC: hardware-gated path absent from the audit guest (env.txt)", "attempts": 0, "guest_uname": "DragonFly dfbsd 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": 0, "guest_dirty": 0, "build_cmd": null, "run_cmd": null, "code_hash": null, "notes": "Leaked bytes are IOC-written reply residue (no kernel pointers) -> Low.", "recommended_fix": "bound the memcpy to sizeof(reply->ActionData); supply an SGE buffer for the indicator (as mps/mpr do)", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "diff authored and git-apply-verified against the read-only sys/ tree; runtime fix validation impossible without the triggering hardware on the QEMU guest", "fix_evidence": "findings/poc/DF-4213/fix.diff (git apply --check passed)" } |