DF-3632 / verdict.json
{ "finding_id": "DF-3632", "status": "inconclusive", "reproduced": 0, "poc_path": "findings/poc/DF-3632", "artifact_dir": "findings/poc/DF-3632", "build_cmd": "n/a (no iwm hardware on guest)", "run_cmd": "n/a (no iwm hardware on guest)", "code_hash": "8ba23b144426b8b4358b04385caf76a90cab1aac516d7aa4540d24b4dee92347", "build_log": null, "run_log": null, "impact": "none", "confidence": "certain", "verdict": "NVM sections are kmallocd at the exact firmware-returned length (if_iwm.c:2367-2375) but iwm_parse_nvm_data() and helpers read fixed word offsets without ever consulting nvm_sections[].length: e.g. regulatory[0x507] LAR read needs >=2576 bytes (:2251-2255), 7000 channel flags read SW bytes [64,142) (:2266-2269), 8000 flags read REGULATORY bytes [0,102) (:2270-2273), SKU/radio/n_hw_addr/MAC reads at fixed indices (:2072,:2125-2158,:2194). A short section yields heap OOB reads past small exact-size allocations; parsed data feeds the channel map and a console-printed MAC (:6386-6389). Same trust boundary as DF-1898 (Low). No iwm device on guest -> not exercisable (env.txt); source-level certainty.", "exploit_chain": "", "evidence": "VERDICT.md; README.md (per-offset byte requirements); env.txt; fix.diff (minimum section-length validation, applies clean)", "kernel_refs": [ "sys/dev/netif/iwm/if_iwm.c:2251", "sys/dev/netif/iwm/if_iwm.c:2266", "sys/dev/netif/iwm/if_iwm.c:2270", "sys/dev/netif/iwm/if_iwm.c:2125", "sys/dev/netif/iwm/if_iwm.c:2194", "sys/dev/netif/iwm/if_iwm.c:2367", "sys/dev/netif/iwm/if_iwm.c:2290" ], "poc_changes": "n/a - source-level verification", "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": 60, "guest_dirty": 0, "notes": "iwm module loads on guest (kldload if_iwm) but attaches to no device: pciconf shows no Intel Wireless NIC, no wlan interface appears. Verification is source-level (plus the DF-3631 logic-level harness).", "recommended_fix": "fix.diff validates family-aware minimum section lengths in iwm_parse_nvm_sections()", "fix_status": "not_testable", "fix_baseline_reproduced": false, "fix_patched_reproduced": false, "fix_verdict": "fix.diff validates family-aware minimum section lengths in iwm_parse_nvm_sections(); applies cleanly; no device to validate in-kernel", "fix_evidence": "fix.diff verified with patch --dry-run against sys/dev/netif/iwm/if_iwm.c; no kernel-level validation possible (no iwm device)" } |