DF-3435 / manifest.json
{ "finding_id": "DF-3435", "title": "ipfw3 check_keep_state() dereferences unchecked kmalloc(M_NULLOK) result - NULL-page write panic when the M_IPFW3_STATE type limit is reached", "verdict": "not_reproduced", "impact": "none", "reproduce": { "build": "cc -O2 -o /tmp/state_null_tap /tmp/state_null_tap.c", "run": "root: raise net.inet.ip.fw3_basic.state_max_udp_{in,out}=10000000, udp_timeout=7200, keep the keep-state rule; run /tmp/state_null_tap 30000000", "expected": "Fatal trap 12 page fault on WRITE to vaddr 0x18 in check_keep_state once ~390MB (kmem_lim_size()/10) of live states accumulate; NOT reached this session (state-creation throttled to ~2-7k pps by the netisr drain; ~30-50 min of sustained saturation required)" }, "kernel_refs": [ "sys/net/ipfw3_basic/ip_fw3_state.c:317", "sys/net/ipfw3_basic/ip_fw3_state.c:319", "sys/net/ipfw3_basic/ip_fw3_state.c:321", "sys/kern/kern_slaballoc.c:694", "sys/kern/kern_slaballoc.c:704", "sys/kern/kern_slaballoc.c:365" ], "artifacts": [ "state_null.c", "state_null_tap.c", "README.md", "VERDICT.md", "fix.diff", "manifest.json", "verdict.json" ] } |