{
  "finding_id": "DF-3615",
  "status": "inconclusive",
  "reproduced": 0,
  "impact": "none",
  "confidence": "certain",
  "verdict": "Missing driver-side clamp on hardware-fed ts->ts_antenna (uint8_t, ah_desc.h:56) used to index ast_ant_tx[8] and sc_ant_tx[8] at if_ath.c:4198-4199 on every successful TX completion. The RX twin clamps the same-class field because AR9285 NICs shipped bogusly large antenna values and crashed users (if_ath_rx.c:809-835). Not reproducible on the audit guest: no Atheros hardware (env.txt) and the write sits on the hardware TX-completion interrupt path; additionally every in-tree HAL currently emits a bounded value (0..2), making the bug latent today. Corruption geometry was measured on the guest with a KLD built in the kernel environment: ast_ant_tx@7820 with indices 183-246 landing on the sc_rx/sc_tx function-pointer method tables (8552/8736); sc_ant_tx@12832 with index 8 exactly hitting the sc_cabq pointer (12864) and indices >140 writing past the end of the 13392-byte softc heap allocation. If a HAL ever forwards a raw antenna byte (the documented AR9285-class failure mode), this is a remotely-paced kernel memory-corruption primitive.",
  "exploit_chain": "",
  "evidence": "offsets_dmesg.txt + run.log (OFF lines: sizeof=13392, ast_ant_tx=7820, sc_rx=8552, sc_tx=8736, sc_ant_tx=12832, sc_cabq=12864, reach=13852>13392); env.txt (no ath PCI dev, no dev.ath sysctl, if_ath.ko present); if_ath_rx.c:828 clamp precedent; HAL survey in VERDICT.md",
  "kernel_refs": [
    "sys/dev/netif/ath/ath/if_ath.c:4198",
    "sys/dev/netif/ath/ath/if_ath.c:4199",
    "sys/dev/netif/ath/ath/if_ath_rx.c:828",
    "sys/dev/netif/ath/ath_hal/ah_desc.h:56",
    "sys/dev/netif/ath/ath/if_athioctl.h:117",
    "sys/dev/netif/ath/ath/if_athvar.h:815"
  ],
  "poc_changes": "n/a - no seeded PoC; authored a KLD offset-printer (offmod.c) to convert the source-ordering claim into measured offsets",
  "attempts": 3,
  "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": 420,
  "guest_dirty": 1,
  "build_cmd": "make -DNO_WERROR SYSDIR=/usr/src/sys (in /tmp/offmod with generated headers from /usr/obj/usr/src/sys/X86_64_GENERIC)",
  "run_cmd": "kldload ./off.ko; dmesg | grep OFF; kldunload off",
  "code_hash": "c7bd02314fceb446fdb3c8b6b99c67abf61bde85e05be111c044ab87345d4a63",
  "notes": "Latent hardening gap, not live with in-tree HALs - severity reflects that. Same defense-in-depth rationale upstream applied on RX. fix.diff applies clean (git apply --check verified) but cannot be runtime-validated without ath hardware.",
  "recommended_fix": "Clamp ts_antenna to <=7 in ath_tx_update_stats mirroring the RX-side clamp at if_ath_rx.c:828",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "fix.diff (git-apply clean) adds the RX-equivalent clamp; compile-checked by construction against the same tree, but no ath NIC exists on the guest to run a baseline/patched comparison",
  "fix_evidence": "findings/poc/DF-3615/fix.diff; git apply --check output in session log"
}