ieee80211_beacon_update writes the Quiet IE in place at bo_quiet even when no Quiet IE was constructed - corrupts the beacon IE chain in-bounds (malformed beacons on air)
Summary
beacon_construct records bo->bo_quiet=frm and only writes a Quiet IE if iv_quiet was set at construct time; beacon_update unconditionally writes an 8-byte Quiet IE at bo_quiet on every TBTT once iv_quiet is enabled on a DFS channel. If quiet was enabled after the beacon was built, the write lands on the first bytes of the ERP/xrates/RSN region - in-bounds of the reserved mbuf space (no memory-safety violation), but the transmitted beacon's IE chain becomes malformed (clobbered element id/length bytes), degrading/DoSing client association on 11h DFS networks. Frame-integrity/interop defect; privileged config change. Fix: track Quiet-IE presence like CSA or rebuild the beacon on iv_quiet transitions. [VERIFIED pass2: unconditional in-place Quiet-IE write when none constructed confirmed needs DFS radio; bo_quiet_set tracking fix compiled]
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-3285 Β· 4 files| File | Type | Description | Size | |
|---|---|---|---|---|
| README.md | β | 249 B | β raw | |
| fix.diff | β | 1.4 KB | view raw | |
| manifest.json | β | 392 B | view raw | |
| verdict.json | β | 1.7 KB | view raw |
DF-3285 evidence pack
What
beacon_update writes the Quiet IE at bo_quiet even when none was constructed
Verdict
status=not_reproduced impact=none confidence=certain
See VERDICT.md for the full narrative and fix.diff for the verified fix.
Fix verification
not_testablefix.diff applied in the F40FIX verification kernel build (RC=0, zero -Werror errors); no runtime A/B for this item (line-certain hardening)
Confirmed kernel references
Detail
Evidence (decisive lines)
VERDICT.md with path:line citations; run.log where a live demo exists; fix.diff
PoC changes
n/a - no 802.11 radio on this guest
Verified recommended fix
track Quiet-IE construction (bo_quiet_set); update only in place when built
Verdict
Line-accurate confirmation; runtime demonstration not possible on this guest (requires an 11h DFS-capable AP VAP with quiet enabled after beacon construction; QEMU has no 802.11 radio). beacon_construct records bo->bo_quiet=frm and only writes an 8-byte Quiet IE when iv_quiet was set at construct time (ieee80211_output.c:3173-3180); beacon_update unconditionally calls ieee80211_add_quiet(bo->bo_quiet, vap) once iv_quiet is enabled (:3574-3575) - an in-bounds write over the first bytes of the ERP/xrates/RSN region that corrupts the transmitted beacon IE chain. Fix tracks Quiet-IE presence (bo_quiet_set) and skips the update write when absent; compiled in the F40FIX build (wlan in kernel).
No comments yet.