⬢ DragonFlyBSD Kernel Audit
DF-5753 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5753",
  "title": "hci_intr() scodone completion dispatch (membership walk + hci_sco_complete) runs unlocked and unreferenced against syscall-context SCO teardown (sco_disconnect NULLs hl_sco then frees the link): NULL-pointer kernel write at hl_sco->sp_pending in netisr context, UAF extension",
  "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.hcius_fire=1500",
    "expected": "Fatal trap 12 within the first rounds: fault virtual address 0x1c, supervisor WRITE data, current process Idle (netisr); Stopped at hci_sco_complete+0x7: subl $0x1,0x1c(%rax) with rax=NULL"
  },
  "kernel_refs": [
    "sys/netbt/hci_unit.c:387",
    "sys/netbt/hci_unit.c:390",
    "sys/netbt/hci_unit.c:395",
    "sys/netbt/hci_unit.c:396",
    "sys/netbt/hci_unit.c:397",
    "sys/netbt/hci_unit.c:402",
    "sys/netbt/hci_unit.c:538",
    "sys/netbt/hci_unit.c:542",
    "sys/netbt/hci_link.c:884",
    "sys/netbt/hci_link.c:889",
    "sys/netbt/hci_link.c:931",
    "sys/netbt/hci_link.c:1019",
    "sys/netbt/hci_link.c:1024",
    "sys/netbt/sco_upper.c:310",
    "sys/netbt/sco_upper.c:213",
    "sys/netbt/sco_upper.c:215",
    "sys/netbt/sco_socket.c:253"
  ],
  "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"
  ]
}