DF-5739 / manifest.json
{ "verdict": "reproduced", "impact": "panic", "finding": "DF-5739: softclock hci_acl_timeout() and netisr hci_link_free()/hci_acl_recv() race on refcnt-0 links with zero locking; hci_link_free()'s callout_active() deferral is dead code on DragonFly callouts -> double hci_link_free = double kfree (demonstrated: 'memchunk already freed') and uncounted-reference UAF writes in the rx path", "reproduce": { "build": "cd /root/hcih && sh build.sh && kldload ./hci_link_harness.ko", "run": "sysctl hw.hlh_setup=1; (sysctl hw.hlh_race_discon=100000 &); (sysctl hw.hlh_race_frag=50000 &); sleep 1; sysctl hw.hlh_race_arm=100000", "expected": "within minutes: panic 'memchunk 0x... is already freed!' from kfree() <- hci_link_free+0x2c6 (probabilistic race; first hit observed on first full pass); sanity arm=5 without the flood is clean" }, "kernel_refs": [ "sys/netbt/hci_link.c:199", "sys/netbt/hci_link.c:213", "sys/netbt/hci_link.c:191", "sys/netbt/hci_link.c:417", "sys/netbt/hci_link.c:451", "sys/netbt/hci_link.c:483", "sys/netbt/hci_link.c:930", "sys/netbt/hci_link.c:1005", "sys/netbt/hci_link.c:1024", "sys/netbt/hci_event.c:629", "sys/kern/kern_timeout.c:861" ], "artifacts": [ "harness.c", "hci_stub.c", "stub.h", "Makefile", "build.sh", "run.sh", "build.log", "run.log", "panic.txt", "fix_panic_patched.txt", "fix.diff", "fix_run.log", "env.txt", "verdict.json", "manifest.json" ] } |