data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2025-39862 in the interactive tracker

CVE-2025-39862

wifi: mt76: mt7915: fix list corruption after hardware restart

8.8 EPSS 0.2% AV:A

Published 2025-09-19 (13 months ago) by the Linux kernel CNA. Subsystem drivers/net. Debian urgency: unimportant.

What to do, per Debian release

Debian's own status for CVE-2025-39862 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixievulnerable6.12.113-1No fix published anywhere yet, neither in Debian nor upstream for the series trixie tracks. Watch the Debian tracker page for this CVE. Advisories for trixie have historically landed a median of 11 days after publication.
Debian 14forkyfixed6.16.6-1Update the kernel and reboot. Fixed in 6.16.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed6.16.6-1Update the kernel and reboot. Fixed in 6.16.6-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

Since stations are recreated from scratch, all lists that wcids are added to must be cleared before calling ieee80211_restart_hw. Set wcid->sta = 0 for each wcid entry in order to ensure that they are not added again before they are ready.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

drivers/net/wireless/mediatek/mt76/mac80211.c
drivers/net/wireless/mediatek/mt76/mt76.h
drivers/net/wireless/mediatek/mt76/mt7915/mac.c

What this is
MEDIATEK MT76 WIRELESS LAN DRIVERMAINTAINERS section matched on drivers/net/wireless/mediatek/mt76/ · linux-wireless@vger.kernel.org · Maintained
Kernel module
mt76

Check it on the machine

grep -wE 'CONFIG_MT76_CORE|CONFIG_WLAN|CONFIG_WLAN_VENDOR_MEDIATEK' /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w mt76

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed.

  • bookwormMnot built on amd64/cloud-amd64, arm64/cloud-arm64
  • trixie, forky, sidMnot built on amd64/cloud-amd64, arm64/cloud-arm64, s390x/s390x
M
a module where it is built at all; some flavours do not build it
Build switches
CONFIG_MT76_CORE, CONFIG_WLAN, CONFIG_WLAN_VENDOR_MEDIATEK
Reads as
all on means the file is compiled; any one off means it is not.

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2025-09-19 (13 months ago)source
CVSS
8.8 high
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
adjacent network (AV:A)source
EPSS
0.19%, higher than 8.5% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
unimportantsource
Subsystem
drivers/net

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
6.26.16.68fa8eb52bc2e
6.26.17065c79df595a
6.1.18800

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:AAttack vector, adjacent network
The mt7915 driver is an 802.11 device driver whose reset path is armed by firmware watchdog exceptions and MCU command timeouts driven by received wireless traffic, and the corrupted lists are then exercised by the RX/TX paths for frames from stations in radio range. Per kernel scoring guidance WiFi driver bugs reachable by frame injection are Adjacent.
AC:LAttack complexity, low
The attacker generates every required condition with their own traffic — flooding auth/assoc requests and malformed management frames to force the firmware exception or MCU timeout that queues the full reset, and associating/deauthing stations to control which wcids remain on the stale lists and which sta slabs are freed and reallocated. Nothing depends on state outside the attacker's influence.
PR:NPrivileges required, none
No credentials on the target are required; unassociated frame injection (probe/auth/assoc floods, deauth) is sufficient to both trigger the reset and populate the stale wcid entries, and an attacker on an open or guest WLAN holds no privilege on the AP.
UI:NUser interaction, none
The corruption happens autonomously inside the driver's reset work, mac80211 reconfig and tx worker in response to attacker-generated frames. No administrator or local user action is involved.
S:UScope, unchanged
The corrupted list heads, stale RCU pointers and resulting writes are all confined to kernel memory under the kernel's own security authority. No VM, IOMMU or sandbox boundary is crossed.
C:HConfidentiality impact, high
Dangling `dev->wcid[]` entries surviving the reset are dereferenced by the RX and TX-status fastpaths after mac80211 frees the backing `ieee80211_sta` objects, giving out-of-bounds and use-after-free reads of attacker-groomable slab memory, and the traversal of `dev->wcid_list`/`phy->tx_list` leaks kernel pointers. Per the use-after-free guidance this rates High.
I:HIntegrity impact, high
`list_add_tail()`/`list_del_init()` on the reinitialized-but-still-linked nodes write kernel pointers into freed and reallocated station objects (`prev->next`, `next->prev`), and the RX path writes through stale wcid pointers (`rx_key_pn` memcpy, RSSI/stat updates, poll-list insertion) — a controllable kernel write primitive suitable for control-flow hijacking.
A:HAvailability impact, high
List corruption plus dereference of dangling wcid pointers reliably oopses or panics the kernel; with CONFIG_DEBUG_LIST it is an immediate list-corruption BUG, and the cross-linked heads can spin `mt76_txq_schedule_pending()`'s `while (!list_empty(&tx_list))` forever with `phy->tx_lock` held and BHs disabled, hanging the AP.