⬢ DragonFlyBSD Kernel Audit
DF-3749 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3749",
  "title": "rt2860: wcid2ni[] never cleared on node free -> TX-status drain use-after-free (hostap remote)",
  "verdict": "not_reproduced (guest lacks Ralink hardware; dangling pointer source-certain, deref window timing-dependent)",
  "impact_class": "kernel use-after-free read+write, remote (associated station) trigger",
  "reproduce": {
    "precondition": "ral(4) hostap + attacker station",
    "steps": [
      "attacker associates; wcid2ni[w]=ni stored (borrowed)",
      "generate downlink traffic so TX stats latch",
      "deauth; node freed, wcid2ni[w] left dangling",
      "any subsequent TX intr drains stats FIFO -> freed ni dereferenced (ratectl write)"
    ],
    "expected": "panic/UAF after repeated deauth-under-load cycles on hardware"
  },
  "kernel_refs": [
    "sys/dev/netif/ral/rt2860.c:887",
    "sys/dev/netif/ral/rt2860.c:897",
    "sys/dev/netif/ral/rt2860.c:1137",
    "sys/dev/netif/ral/rt2860.c:1174",
    "sys/netproto/802_11/wlan/ieee80211_amrr.c:363"
  ],
  "artifacts": ["README.md", "VERDICT.md", "fix.diff", "verdict.json", "env.txt", "manifest.json"]
}