⬢ DragonFlyBSD Kernel Audit
DF-3753 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3753",
  "status": "not_reproduced",
  "reproduced": 0,
  "impact": "none",
  "confidence": "certain",
  "verdict": "Two unvalidated uses of ieee80211_legacy_rate_lookup (sentinel return 0xff for unknown rates, ieee80211_phy.h:172-177): rt2860_tx (rt2860.c:1576-1579, rt2860_rates[255] ~4.3KB past the 12-entry table at rt2860reg.h:975, garbage mcs/ack-durations over the air) and rt2860_set_basicrates (rt2860.c:2362-2363, 1 << 255 UB -- rateset is peer-supplied via assoc/beacon IEs, affecting only the BASIC_RATE MMIO value). The same file checks the sentinel at rt2860_tx_raw (rt2860.c:1834), so the omission is clearly a gap. No kernel memory corruption on either path; classified Info hardening. Not reproduced: guest has no Ralink NIC (env.txt); reachability of path 1 additionally requires a mis-set fixed rate (net80211 validates its rate knobs today).",
  "exploit_chain": "",
  "evidence": "README.md (both sites + the contrasting checked site), fix.diff (guards both, git apply --check passes)",
  "kernel_refs": [
    "sys/dev/netif/ral/rt2860.c:1576",
    "sys/dev/netif/ral/rt2860.c:1579",
    "sys/dev/netif/ral/rt2860.c:2362",
    "sys/dev/netif/ral/rt2860.c:1834",
    "sys/dev/netif/ral/rt2860reg.h:975",
    "sys/netproto/802_11/ieee80211_phy.h:172"
  ],
  "poc_changes": "Analysis-only.",
  "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": 6,
  "guest_dirty": 0,
  "build_cmd": "",
  "run_cmd": "dfbsd-qemu/vm.sh run_root pciconf -lv | grep ralink",
  "code_hash": "",
  "notes": "Filed for completeness/hardening; the OOB table read is bounded to .rodata/.data and the UB shift only corrupts an MMIO value.",
  "recommended_fix": "Add the same ridx == (uint8_t)-1 guard rt2860_tx_raw already has to rt2860_tx and rt2860_set_basicrates.",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "Mirrors the drivers own existing guard; compile-consistent.",
  "fix_evidence": "fix.diff (git apply --check passes against pristine sys/)"
}