---
id: "CVE-2026-98703"
kind: "vulnerability"
aliases: ["CVE-2026-98703"]
title: "Linux kernel: wifi rate control debugfs write corrupts out-of-bounds memory"
severity: "low"
cvss: null
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["linux-kernel", "mac80211", "runtime", "self-hosted", "wifi"]
not_affected_if: ["debugfs-not-mounted", "default-config", "no-wifi-hardware"]
published_at: "2026-10-18T16:17:23+00:00"
first_seen_at: "2026-10-23T21:57:16+00:00"
updated_at: "2026-10-25T05:18:52+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98703", "first_seen_at": "2026-10-23T21:57:16+00:00"}]
---

# Linux kernel: wifi rate control debugfs write corrupts out-of-bounds memory

Writing an arbitrary value to the mac80211 minstrel_ht fixed_rate_idx debugfs file indexes arrays out of bounds, corrupting adjacent kernel memory. The file is only reachable through a root-only debugfs mount, so the impact is limited to a local user with root.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `uname -r` and compare against the fixed kernel version in the sources (unknown)
- Check whether a wifi driver using mac80211 is loaded with `lsmod | grep mac80211`
- Check whether debugfs is mounted with `mount | grep debugfs`

## Fix

- Update the Linux kernel to a release that includes the upstream commit validating the fixed rate index (version unknown from sources)

## Timeline

- 2026-10-23T21:57:16+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98703

## From the sources

In the Linux kernel, the following vulnerability has been resolved:

wifi: mac80211: minstrel_ht: validate fixed rate index

The fixed_rate_idx debugfs file is a plain u32 attribute, so any value
can be written to it.  minstrel_ht_update_stats() then copies the value
into mi->max_tp_rate[] and mi->max_prob_rate, and
minstrel_ht_set_rate() uses MI_RATE_GROUP()/MI_RATE_IDX() to index
minstrel_mcs_groups[] (42 entries) and mi->groups[].rates[] (10 entries)
with it.

Writing e.g. 65535 selects group 4095 and rate index 15, far outside
both arrays.  The out-of-bounds entries are dereferenced and updated as
struct minstrel_rate_stats (retry counts, etc.), so the invalid index
corrupts adjacent kernel memory.  With CONFIG_UBSAN_BOUNDS the access is
reported as an array-index-out-of-bounds in minstrel_ht_set_rate().

Only a valid group/rate pair, or U32_MAX to disable fixed rate
processing, can be used safely, so reject any other value when the
debugfs file is written.

The file is only reachable through a root-only debugfs mount, so this is
not a privilege boundary.  The out-of-bounds access is still a bug that
must not be reachable through a writable debugfs attribute.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
