DF-3675 / verdict.json
{ "finding_id": "DF-3675", "status": "inconclusive", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "Source-certain unsigned underflow: mpt_cam.c:3132-3133 computes ccb->csio.resid = dxfer_len - le32toh(TransferCount) with the IOC-supplied U32 unclamped; an over-reporting IOC yields resid near 2^32 which propagates to CAM and pass(4) userland and breaks the resid<=dxfer_len invariant relied on by cd/da residual and dump bookkeeping. Only TransferCount==0 under RESIDUAL_MISMATCH is special-cased (3163-3176). Hardware-trust threat class, no memory-safety consequence in the driver; ceiling is wrong data-accounting / wedged retry-dump paths. Not executable on this guest (no MPT HBA). Shared with upstream FreeBSD.", "exploit_chain": "", "evidence": "VERDICT.md (arithmetic proof + consumer analysis); fix.diff (clamp); env.txt (no hardware)", "kernel_refs": ["sys/dev/disk/mpt/mpt_cam.c:3131-3133", "sys/dev/disk/mpt/mpt_cam.c:3163-3176", "sys/dev/disk/mpt/mpt_cam.c:3198-3200"], "poc_changes": "n/a", "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": 4, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "code_hash": "", "notes": "IOC-gated; no userland trigger.", "recommended_fix": "Clamp: resid = (xferred > dxfer_len) ? 0 : dxfer_len - xferred", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "Clamp diff authored (fix.diff); not exercisable without hardware.", "fix_evidence": "fix.diff; env.txt" } |