⬢ DragonFlyBSD Kernel Audit
DF-5752 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5752",
  "title": "netbt frees rx mbufs whose embedded netmsgs are still queued on the netisr port (netisr_queue ownership violation): the lwkt port queue is operated through freed memory and corrupts (deterministic panic)",
  "verdict": "reproduced",
  "impact": "panic",
  "reproduce": {
    "build": "cd /root/hciuu && sh build.sh",
    "run": "kldload ./hci_unit_harness.ko; sysctl hw.hciu_setup=1; sysctl hw.hciu_fire=2; sysctl hw.hciu_fire=1",
    "expected": "fire=2: survives with 21 dangling-netmsg PROOF lines (freed mbufs with MSGF_QUEUED netmsgs). fire=1: panic 'link elm 0x... next->prev != elm' in lwkt_spin_getport <- netmsg_service_loop; guest down at db> prompt"
  },
  "kernel_refs": [
    "sys/netbt/hci_unit.c:436",
    "sys/netbt/hci_unit.c:437",
    "sys/netbt/hci_unit.c:458",
    "sys/netbt/hci_unit.c:459",
    "sys/netbt/hci_unit.c:480",
    "sys/netbt/hci_unit.c:481",
    "sys/netbt/hci_unit.c:542",
    "sys/netbt/hci_unit.c:543",
    "sys/netbt/hci_unit.c:252",
    "sys/netbt/hci_unit.c:262",
    "sys/netbt/bt_input.c:32",
    "sys/netbt/hci_event.c:229",
    "sys/net/netisr.c:424",
    "sys/net/netisr.c:431",
    "sys/kern/lwkt_msgport.c:655"
  ],
  "artifacts": [
    "harness.c", "hci_stub.c", "Makefile", "build.sh", "run.sh", "xfer.sh",
    "build.log", "setup.log", "run.log", "fix_run.log", "panic.txt",
    "fix.diff", "README.md", "VERDICT.md", "manifest.json", "verdict.json",
    "env.txt"
  ]
}