DF-3309 / verdict.json
{ "finding_id": "DF-3309", "status": "reproduced", "reproduced": 1, "impact": "none", "confidence": "certain", "verdict": "Reproduced on the stock INVARIANTS guest: after sysctl -w net.inet6.ip6.defmcasthlim=5, getsockopt(IPV6_MULTICAST_LOOP) on a fresh socket (no multicast options attached) returns 5; with the default sysctl it returns 1. The GET branch copies ip6_defmcasthlim instead of IPV6_DEFAULT_MULTICAST_LOOP (ip6_output.c:2511-2515) - copy-paste from the HOPS branch two cases above. API correctness only. Post-fix A/B on the F40FIX kernel: with defmcasthlim=5 the same getsockopt returns 1.", "exploit_chain": "", "evidence": "VERDICT.md with path:line citations; run.log where a live demo exists; fix.diff", "kernel_refs": [ "sys/netinet6/ip6_output.c:2511", "sys/netinet6/ip6_output.c:2515" ], "poc_changes": "n/a - first probe already correct", "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": 15, "guest_dirty": 0, "build_cmd": "see build.sh", "run_cmd": "see run.sh", "code_hash": "2850c0e1a8128c31b93a904f256291002fe2eee88095e5a5af092565bde7f860", "notes": "", "recommended_fix": "return IPV6_DEFAULT_MULTICAST_LOOP instead of ip6_defmcasthlim", "fix_status": "fixed", "fix_verdict": "A/B complete: with defmcasthlim=5 the fixed kernel returns IPV6_MULTICAST_LOOP=1 (stock returned 5)." } |