⬢ DragonFlyBSD Kernel Audit
DF-4734 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4734",
  "status": "untested",
  "reproduced": 0,
  "impact": "none demonstrated (hardware-gated: no Atheros NIC on guest; latent NULL-deref kernel panic if a DATA queue is reset before the first channel set)",
  "confidence": "certain",
  "verdict": "untested (runtime): ar5210ResetTxQueue caches AH_PRIVATE(ah)->ah_curchan (ar5210_xmit.c:157) and dereferences it unconditionally in IEEE80211_IS_CHAN_TURBO(chan) (:180; macro is a raw ->ic_flags deref, _ieee80211.h:268). ah_curchan is NULL from attach until the first ar5210Reset. Both sibling HALs guard exactly this with if (chan && ...) and the comment NB: chan can be NULL during attach (ar5211_xmit.c ar5211ResetTxQueue; ar5212_xmit.c ar5212ResetTxQueue - verified: chan appears only inside the guard in both); ar5210 missed it and its usage is broader (the whole turbo/normal IFS branch). In-tree call order protects (ath_attach resets before ath_txq_setup, if_ath.c:4125-4130) - latent. No Atheros NIC on the guest, runtime not observable. Fix build-validated: nativekernel BUILD_RC=0 -Werror (build.log:7129), kernel installed and booted clean.",
  "exploit_chain": [],
  "evidence": "findings/poc/DF-4734/VERDICT.md (divergence proof: sibling guards quoted); build.log (RC=0; ar5210_xmit.c -Werror at :7129); fix.diff (one-line NULL guard mirroring siblings); env.txt",
  "kernel_refs": [
    "sys/dev/netif/ath/ath_hal/ar5210/ar5210_xmit.c:157",
    "sys/dev/netif/ath/ath_hal/ar5210/ar5210_xmit.c:180",
    "sys/netproto/802_11/_ieee80211.h:268",
    "sys/dev/netif/ath/ath_hal/ar5211/ar5211_xmit.c:84",
    "sys/dev/netif/ath/ath_hal/ar5212/ar5212_xmit.c:91"
  ],
  "poc_changes": "n/a (no runtime PoC attempted; hardware-gated per DF-4519/DF-4712 protocol)",
  "attempts": 0,
  "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": 4300,
  "guest_dirty": 1,
  "build_cmd": "cd /usr/src && patch -p1 < /tmp/df4734.diff && make nativekernel KERNCONF=X86_64_GENERIC && make installkernel KERNCONF=X86_64_GENERIC",
  "run_cmd": "n/a (no Atheros NIC on guest; no reachable caller with NULL chan in-tree)",
  "code_hash": null,
  "notes": "Precisely-scoped cross-version divergence: both sibling HALs guard+annotate, ar5210 forgot; latent NULL-deref panic class, caller-order-protected in-tree (same class family as DF-4519/4712/4733). Patched kernel (#1 Sep 23 04:06) installed and booted clean.",
  "recommended_fix": "Guard the deref: if (chan != AH_NULL && IEEE80211_IS_CHAN_TURBO(chan)) - one line mirroring the ar5211/ar5212 NULL-chan guards.",
  "fix_status": "fixed",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "build-only validation (runtime hardware-gated): fix.diff applied; nativekernel BUILD_RC=0 -Werror (build.log:7129 ar5210_xmit.c); kernel installed and booted clean. NULL-chan path not exercisable on the guest (no ath hardware).",
  "fix_evidence": "findings/poc/DF-4734/build.log (RC=0; ar5210_xmit.c -Werror at :7129); fix.diff"
}