⬢ DragonFlyBSD Kernel Audit
DF-4498 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4498",
  "status": "inconclusive",
  "reproduced": 0,
  "impact": "none",
  "confidence": "certain",
  "verdict": "Logic defect confirmed at source level: a frame with 0 < m_pkthdr.len < 5 makes encap_frame() repack it forever (repack() preserves the sub-5 length at if_sbsh.c:721, the m_len<5 test at :667 re-fires after every goto look_for_nonzero), an unbounded alloc/copy/free spin holding ifp->if_serializer. Runtime execution impossible on the audit guest: the Granch SBNI12/16 PCI device is absent, sbsh0 never exists; trigger compiled and failed only at BIOCSETIF.",
  "exploit_chain": "runt frame into if_snd (bpf write as root, or unprivileged LAN peer via a bridge member) -> one CPU spins forever in kernel holding the interface serializer -> permanent local/remote DoS",
  "evidence": "VERDICT.md (line-by-line loop proof); run.log (BIOCSETIF: Device not configured); env.txt (pciconf absence); fix.diff (repack refuses <5 byte frames + drop-path m_freem fixing the packet leak)",
  "kernel_refs": [
    "sys/dev/netif/sbsh/if_sbsh.c:636-643",
    "sys/dev/netif/sbsh/if_sbsh.c:660-672",
    "sys/dev/netif/sbsh/if_sbsh.c:698-724",
    "sys/dev/netif/sbsh/if_sbsh.c:313-321"
  ],
  "poc_changes": "authored trigger from scratch (2-byte BPF runt injection); include set for DF: sys/socket.h + net/if.h + net/bpf.h",
  "attempts": 1,
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul  2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64",
  "runtime_sec": 40,
  "guest_dirty": 0,
  "build_cmd": "cc -O2 -o /tmp/df4498_trigger /tmp/df4498_trigger.c",
  "run_cmd": "/tmp/df4498_trigger sbsh0",
  "code_hash": "d59e35fb4e74b894a790a4ebb389462d243f310378a7e73c563d47fac8de72c3",
  "notes": "severity Low: unprivileged reachability requires sbsh0 to be a bridge member (runt from LAN peer); direct bpf vector is root-gated. Includes adjacent fix for the repack-failure mbuf leak at :668-671.",
  "recommended_fix": "repack(): return NULL for m_pkthdr.len < 5; encap_frame(): m_freem(m_head) on repack failure",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "fix.diff authored post-verification against read-only sys/; no runtime baseline possible on this guest (device absent)",
  "fix_evidence": "fix.diff"
}