Linux Kernel up to 7.3-rc3 mac80211 cfg.c ieee80211_set_bitrate_mask race condition

CVSS Meta Temp Score
CVSS is a standardized scoring system to determine possibilities of attacks. The Temp Score considers temporal factors like disclosure, exploit and countermeasures. The unique Meta Score calculates the average score of different sources to provide a normalized scoring system.
Current Exploit Price (≈)
Our analysts are monitoring exploit markets and are in contact with vulnerability brokers. The range indicates the observed or calculated exploit price to be seen on exploit markets. A good indicator to understand the monetary effort required for and the popularity of an attack.
CTI Interest Score
Our Cyber Threat Intelligence team is monitoring different web sites, mailing lists, exploit markets and social media networks. The CTI Interest Score identifies the interest of attackers and the security community for this specific vulnerability in real-time. A high score indicates an elevated risk to be targeted for this vulnerability.
4.0$0-$5k0.71+

Summaryinfo

A vulnerability classified as problematic has been found in Linux Kernel up to 7.3-rc3. This vulnerability affects the function ieee80211_set_bitrate_mask of the file cfg.c of the component mac80211. The manipulation leads to race condition. This vulnerability is listed as CVE-2026-98406. The attack must be carried out locally. There is no available exploit. It is recommended to upgrade the affected component.

Detailsinfo

A vulnerability was found in Linux Kernel up to 7.3-rc3 and classified as problematic. This issue affects the function ieee80211_set_bitrate_mask of the file cfg.c of the component mac80211. The manipulation with an unknown input leads to a race condition vulnerability. Using CWE to declare the problem leads to CWE-362. The product contains a code sequence that can run concurrently with other code, and the code sequence requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence that is operating concurrently. Impacted is availability. The summary by CVE is:

In the Linux kernel, the following vulnerability has been resolved: wifi: mac80211: avoid WARN in set_bitrate_mask when sdata not in driver ieee80211_set_bitrate_mask() checks if the interface is running via ieee80211_sdata_running(), but it does not check if the interface is still present in the driver. When sdata is running but IEEE80211_SDATA_IN_DRIVER is not set, the call reaches drv_set_bitrate_mask() in driver-ops.h which hits wlan1: Failed check-sdata-in-driver check, flags: 0x0 WARNING: net/mac80211/driver-ops.h:884 at drv_set_bitrate_mask Syzkaller triggers this via wext SIOCSIWRATE ioctl. The Call Trace shows wext_ioctl_dispatch() in wext-core.c dispatching the ioctl, calling ioctl_standard_call() for SIOCSIWRATE, which calls cfg80211_wext_siwrate() in wext-compat.c. That builds a bitrate mask and calls rdev_set_bitrate_mask() which ends up in ieee80211_set_bitrate_mask() in cfg.c. The interface is marked running via SDATA_STATE_RUNNING but flags is 0, so check_sdata_in_driver() fails. When the interface is being torn down, or when wext ioctl is issued during interface bringup before drv_add_interface() sets IN_DRIVER, the running check passes while IN_DRIVER is clear. Check IEEE80211_SDATA_IN_DRIVER in ieee80211_set_bitrate_mask() before calling the driver, returning -ENETDOWN. This avoids the WARN_ONCE in driver-ops.h and matches other cfg.c operations that bail early when not in driver. This change should be safe because wiphy mutex is held in cfg80211_wext_siwrate() via guard(wiphy), and IN_DRIVER is set/cleared under RTNL and wiphy paths in drv_add_interface() and drv_remove_interface() in driver-ops.c, so the check is race-free against driver add/remove. Returning -ENETDOWN is the same error other not-running paths use and does not introduce new locking. [also add second syzbot report]

The advisory is shared at git.kernel.org. The identification of this vulnerability is CVE-2026-98406 since 09/25/2026. The exploitation is known to be easy. An attack has to be approached locally. Additional levels of successful authentication are necessary for exploitation. It demands that the victim is doing some kind of user interaction. Technical details are known, but no exploit is available.

Upgrading to version 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112, 6.18.54, 7.2.8 or 7.3-rc4 eliminates this vulnerability. Applying the patch 4ba86c44b2fcb1c3175caa2456b6d58f483446ab/4095b66acae9893dd13deb39a4331651cb2f822b/c2cd9c44777cf97be3e35c10b7c2d8f59ebb9306/0d1700394e9f5d0bd9bebad8d5a50edf983f52fd/7978dda63d2b109ea9c3f7a096cd1aac6542cd54/432c8532d5ccc2af77da43ed6ef1c80495a4efe8/c4ee5685af444024e6222ce29f6ed36adc44ffc3/da2ca406f45a6e21760243152ed8d2e8e72915c2 is able to eliminate this problem. The best possible mitigation is suggested to be upgrading to the latest version.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Productinfo

Type

Vendor

Name

Version

License

Website

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB Vector: 🔒
VulDB Reliability: 🔍

CVSSv3info

VulDB Meta Base Score: 4.2
VulDB Meta Temp Score: 4.0

VulDB Base Score: 4.2
VulDB Temp Score: 4.0
VulDB Vector: 🔒
VulDB Reliability: 🔍

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VectorComplexityAuthenticationConfidentialityIntegrityAvailability
UnlockUnlockUnlockUnlockUnlockUnlock
UnlockUnlockUnlockUnlockUnlockUnlock
UnlockUnlockUnlockUnlockUnlockUnlock

VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Reliability: 🔍

Exploitinginfo

Class: Race condition
CWE: CWE-362
CAPEC: 🔒
ATT&CK: 🔒

Physical: Partially
Local: Yes
Remote: Partially

Availability: 🔒
Status: Not defined
Price Prediction: 🔍
Current Price Estimation: 🔒

0-DayUnlockUnlockUnlockUnlock
TodayUnlockUnlockUnlockUnlock

Threat Intelligenceinfo

Interest: 🔍
Active Actors: 🔍
Active APT Groups: 🔍

Countermeasuresinfo

Recommended: Upgrade
Status: 🔍

0-Day Time: 🔒

Upgrade: Kernel 5.10.271/5.15.222/6.1.189/6.6.158/6.12.112/6.18.54/7.2.8/7.3-rc4
Patch: 4ba86c44b2fcb1c3175caa2456b6d58f483446ab/4095b66acae9893dd13deb39a4331651cb2f822b/c2cd9c44777cf97be3e35c10b7c2d8f59ebb9306/0d1700394e9f5d0bd9bebad8d5a50edf983f52fd/7978dda63d2b109ea9c3f7a096cd1aac6542cd54/432c8532d5ccc2af77da43ed6ef1c80495a4efe8/c4ee5685af444024e6222ce29f6ed36adc44ffc3/da2ca406f45a6e21760243152ed8d2e8e72915c2

Timelineinfo

09/25/2026 CVE reserved
10/14/2026 +19 days Advisory disclosed
10/14/2026 +0 days VulDB entry created
10/14/2026 +0 days VulDB entry last update

Sourcesinfo

Vendor: kernel.org

Advisory: git.kernel.org
Status: Confirmed

CVE: CVE-2026-98406 (🔒)
GCVE (CVE): GCVE-0-2026-98406
GCVE (VulDB): GCVE-100-419873

Entryinfo

Created: 10/14/2026 16:10
Changes: 10/14/2026 16:10 (60)
Complete: 🔍
Cache ID: 216::103

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Discussion

No comments yet. Languages: en.

Please log in to comment.

Want to know what is going to be exploited?

We predict KEV entries!