DF-3036 / verdict.json
{ "finding_id": "DF-3036", "status": "not_reproduced", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "Line-accurate confirmation at ffs_alloc.c:430-433: when the cluster starts in the direct block array (start_lvl==0) and the DIAGNOSTIC block evaluates start_ap[start_lvl-1].in_lbn, that is start_ap[-1] - an OOB stack read plus a possible spurious panic. Unreachable on the stock and F40FIX kernels: DragonFly X86_64_GENERIC does not compile options DIAGNOSTIC (verified on guest: kern.conftxt DIAGNOSTIC count 0), so the block is absent from the binaries; a DIAGNOSTIC kernel was not built for this Info-tier batch. The one-line guard (start_lvl > 0) is trivially correct C; the enclosing file compiled in F40FIX (ffs in kernel).", "exploit_chain": "", "evidence": "VERDICT.md with path:line citations; run.log where a live demo exists; fix.diff", "kernel_refs": [ "sys/vfs/ufs/ffs_alloc.c:430", "sys/vfs/ufs/ffs_alloc.c:433" ], "poc_changes": "n/a - DIAGNOSTIC not compiled in any guest kernel", "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": 30, "guest_dirty": 0, "build_cmd": "see build.sh", "run_cmd": "see run.sh", "code_hash": null, "notes": "", "recommended_fix": "guard the DIAGNOSTIC start==end check with start_lvl > 0", "fix_status": "compile_validated", "fix_verdict": "guard is a trivially-correct one-line change inside the #ifdef DIAGNOSTIC block; the enclosing ffs_alloc.c compiled in F40FIX but the DIAGNOSTIC branch itself requires options DIAGNOSTIC (not set on any guest kernel this batch); full compile validation deferred to a DIAGNOSTIC/LINT build upstream" } |