⬢ DragonFlyBSD Kernel Audit
DF-3604 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3604",
  "title": "bce_rx_intr trusts NIC-DMA'd l2_fhdr_pkt_len without MCLBYTES bound: heap OOB read (up to ~63.5KB) and unsigned underflow (~4GB m_len) from faulty/malicious BCM5706-5716",
  "verdict": "inconclusive",
  "reproduced": 0,
  "impact_ceiling": "kernel heap info leak + local DoS (panic); no write primitive",
  "reproduce": {
    "build": "./build.sh   (cc -o trigger trigger.c)",
    "run": "./run.sh     (guest environment proof; real trigger needs bce hardware)",
    "expected": "On this guest: pci/if_bce registered in kernel, NO_BROADCOM_DEVICE, NO_BCE_PCIID, ifconfig='vtnet0 lo0', no hw.bce.* sysctls — attack surface unreachable. On hardware with a lying NIC: handed-up mbuf m_len up to 65531 on a 2048-byte cluster (leak via bpf/raw socket) or ~4GB (panic)."
  },
  "kernel_refs": [
    "sys/dev/netif/bce/if_bce.c:4396",
    "sys/dev/netif/bce/if_bce.c:4399",
    "sys/dev/netif/bce/if_bce.c:4437",
    "sys/dev/netif/bce/if_bce.c:4439",
    "sys/dev/netif/bce/if_bce.c:3851",
    "sys/dev/netif/bce/if_bce.c:2298",
    "sys/dev/netif/bce/if_bcereg.h:815"
  ],
  "artifacts": [
    "README.md",
    "VERDICT.md",
    "trigger.c",
    "build.sh",
    "run.sh",
    "build.log",
    "run.log",
    "env.txt",
    "fix.diff",
    "verdict.json",
    "manifest.json"
  ]
}