DF-4562 / verdict.json
{ "finding_id": "DF-4562", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "speculative", "verdict": "SPECULATIVE, untested (needs a real mps HBA to produce the event interleaving; the QEMU guest has none, and unlike DF-4559/DF-4560 there is no deterministic arithmetic to replicate \u2014 the claim is about event TIMING). mpssas_add_device (mps_sas_lsi.c:653-670) and mpssas_volume_add (:847-853) overwrite/TAILQ_INIT a target slot without checking MPSSAS_TARGET_INREMOVAL, outstanding commands, or targ->tm, while mpssas_prepare_removes removal is asynchronous (TM TARGET_RESET completes later, mps_sas.c:449-466). A re-add event processed inside the removal window would clear INREMOVAL under an outstanding TM and re-init possibly-still-linked lists; completion-path TAILQ_REMOVE would then write through stale tqe_prev pointers into the re-initialized head. Adjacent to (not covered by) DF-3895/DF-3898. If real: list corruption / lost commands \u2014 availability-grade.", "exploit_chain": "", "evidence": "VERDICT.md and README.md contain the full path:line trace of the interleaving hypothesis; no runtime artifacts (no hardware).", "kernel_refs": [ "sys/dev/raid/mps/mps_sas_lsi.c:653", "sys/dev/raid/mps/mps_sas_lsi.c:667", "sys/dev/raid/mps/mps_sas_lsi.c:847", "sys/dev/raid/mps/mps_sas_lsi.c:212", "sys/dev/raid/mps/mps_sas.c:429", "sys/dev/raid/mps/mps_sas.c:449" ], "poc_changes": "No PoC possible on the available guest; filed as a labeled speculative pass-2 lifetime finding.", "attempts": 0, "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": 0, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "code_hash": "", "notes": "Labeled speculative per audit discipline. Recommended hardening: in mpssas_add_device/mpssas_volume_add bail with EBUSY when targ->handle != 0 && (flags & MPSSAS_TARGET_INREMOVAL || !TAILQ_EMPTY(&targ->commands) || !TAILQ_EMPTY(&targ->timedout_commands) || targ->tm != NULL).", "recommended_fix": "Guard target-slot re-initialization in mpssas_add_device/mpssas_volume_add against in-flight removal (INREMOVAL flag, non-empty command lists, outstanding tm).", "fix_status": "not_applicable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "not_applicable (speculative finding, no reproducer)", "fix_evidence": "README.md hardening sketch." } |