DF-3344 / manifest.json
{ "finding_id": "DF-3344", "manifest_version": 1, "title": "lagg port-detach handler registered on never-fired ifnet_departure_event: persistent kernel UAF after member interface destroy", "verdict": "reproduced", "impact": "panic", "reproduce": { "build": "cc -O -o /tmp/laggleak laggleak.c -I/usr/src/sys && cc -O -o /tmp/udptx udptx.c", "run": "./run.sh (root setup via vm.sh run_root; leak/tx via vm.sh run_user as uid=1001; panic via root 'ifconfig lagg0 laggproto lacp')", "expected": "post-destroy, unprivileged SIOCGLAGG still lists the destroyed member (name read from freed heap; mutates to 'tap2' after slab reuse); 'ifconfig lagg0 laggproto lacp' -> Fatal trap 12, Stopped at tapifioctl+0x158, guest down at DDB" }, "kernel_refs": [ "sys/net/lagg/if_lagg.c:218", "sys/net/lagg/if_lagg.c:223", "sys/net/lagg/if_lagg.c:924", "sys/net/lagg/if_lagg.c:2085", "sys/net/if.c:958", "sys/net/if_var.h:724", "sys/net/bridge/if_bridge.c:609", "sys/net/tap/if_tap.c:495", "sys/net/lagg/if_lagg.c:951", "sys/net/lagg/if_lagg.c:763" ], "artifacts": [ "README.md", "VERDICT.md", "laggleak.c", "udptx.c", "build.sh", "run.sh", "run.log", "panic.txt", "fix.diff", "fix_validation.log", "manifest.json", "verdict.json" ] } |