DF-3749 / manifest.json
{ "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"] } |