DF-2861 / verdict.json
{ "finding_id": "DF-2861", "status": "reproduced", "reproduced": 1, "impact": "none", "confidence": "certain", "verdict": "Mechanically confirmed via the harness on the stock guest: sglist_consume_uio over an unmapped user VA appended the segment {ss_paddr=0x0, len=16} and returned success - _sglist_append_buf never checks pmap_extract() failure (subr_sglist.c:125-156): an invalid user buffer becomes a physical-page-0 DMA segment instead of EFAULT; a consumer would transfer to/from physical page 0. Only reachable via append_user/append_uio/consume_uio which have zero in-tree callers (dead paths; FreeBSD HEAD likewise unchecked). On the fix kernel the same call returns EFAULT with nseg=0.", "exploit_chain": "unmapped user buffer -> pmap_extract returns 0 -> DMA segment pinned at physical page 0", "evidence": "harness.log T7: seg0.paddr=0x0 len=16 ret=0; fix kernel: ret=14 nseg=0", "kernel_refs": [ "sys/kern/subr_sglist.c:125", "sys/kern/subr_sglist.c:153" ], "poc_changes": "none", "attempts": 1, "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": 30, "guest_dirty": 0, "build_cmd": "cd /root/h41 && make", "run_cmd": "kldload ./h41.ko; sysctl -w debug.h41.cmd=7", "code_hash": "85d6e241caa2a7fb1fb44b80c7736a4e83c36d29314b0c96ce91769bc9bdf839", "notes": "Dead paths in-tree; latent for future consumers", "recommended_fix": "if (paddr == 0) { pmap_extract_done(handle); return (EFAULT); } at both extract sites", "fix_status": "fixed", "fix_baseline_reproduced": 1, "fix_patched_reproduced": 0, "fix_kernel_uname": "DragonFly dfbsd 6.5-DEVELOPMENT #1: Mon Oct 26 01:57:23 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64 (h41 fix kernel, all 41 hardening fixes applied)", "fix_verdict": "A/B: baseline paddr=0 segment appended; fix kernel EFAULT before any append (both extract sites)." } |