CVE-2026-74554 (GCVE-0-2026-74554)
Vulnerability from cvelistv5
Published
2026-08-15 12:28
Modified
2026-08-17 05:48
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
wifi: ath12k: fix out-of-bounds clear_bit in ath12k_mac_dp_peer_cleanup()
ath12k_mac_dp_peer_cleanup() clears the ML peer ID slot on the
free_ml_peer_id_map bitmap by indexing it with dp_peer->peer_id. That is
wrong: dp_peer->peer_id for an MLO peer always carries the
ATH12K_PEER_ML_ID_VALID bit (BIT(13)), so clear_bit() is invoked with
index >= 0x2000, which is far outside the bitmap of ATH12K_MAX_MLO_PEERS
(256) bits and corrupts memory adjacent to ah->free_ml_peer_id_map. The
intended bitmap entry also never gets cleared, so subsequent
ath12k_peer_ml_alloc() calls eventually run out of IDs.
The ID without the VALID bit is what ath12k_peer_ml_alloc() returned and
is stored in ahsta->ml_peer_id. Use that instead.
While there, also reset ahsta->ml_peer_id to ATH12K_MLO_PEER_ID_INVALID so
the bitmap and ahsta->ml_peer_id stay in sync.
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3
References
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/net/wireless/ath/ath12k/mac.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "234b5cb81e6fcc1e3b31b13deff66130be55f36e",
"status": "affected",
"version": "ee16dcf573d5e3283fda601dd4bca6bc52251017",
"versionType": "git"
},
{
"lessThan": "47abd2ca281531deee38a3b3770d885e270e9fc9",
"status": "affected",
"version": "ee16dcf573d5e3283fda601dd4bca6bc52251017",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/net/wireless/ath/ath12k/mac.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "7.0"
},
{
"lessThan": "7.0",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.8",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.8",
"versionStartIncluding": "7.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "7.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: ath12k: fix out-of-bounds clear_bit in ath12k_mac_dp_peer_cleanup()\n\nath12k_mac_dp_peer_cleanup() clears the ML peer ID slot on the\nfree_ml_peer_id_map bitmap by indexing it with dp_peer-\u003epeer_id. That is\nwrong: dp_peer-\u003epeer_id for an MLO peer always carries the\nATH12K_PEER_ML_ID_VALID bit (BIT(13)), so clear_bit() is invoked with\nindex \u003e= 0x2000, which is far outside the bitmap of ATH12K_MAX_MLO_PEERS\n(256) bits and corrupts memory adjacent to ah-\u003efree_ml_peer_id_map. The\nintended bitmap entry also never gets cleared, so subsequent\nath12k_peer_ml_alloc() calls eventually run out of IDs.\n\nThe ID without the VALID bit is what ath12k_peer_ml_alloc() returned and\nis stored in ahsta-\u003eml_peer_id. Use that instead.\n\nWhile there, also reset ahsta-\u003eml_peer_id to ATH12K_MLO_PEER_ID_INVALID so\nthe bitmap and ahsta-\u003eml_peer_id stay in sync.\n\nTested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3"
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 8.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:A - The bug is in ath12k WiFi 7 MLO peer cleanup during firmware crash recovery; an adjacent attacker associates as an MLO client (or runs a malicious MLO AP) over 802.11, creating dp_peers whose peer_id includes BIT(13), then firmware recovery invokes ath12k_mac_dp_peer_cleanup().\nAC:L - Once an MLO peer exists, recovery deterministically calls clear_bit() with index \u003e=0x2000 on every cleanup; the attacker controls association and can repeatedly induce or wait for firmware crash/recovery (MHI RDDM) without depending on uncontrollable timing or layout.\nPR:N - Exploitation requires only wireless association and firmware recovery on a host running ath12k; the remote attacker needs no local account, shell access, or Linux capabilities on the victim system.\nUI:N - On an ath12k AP the vulnerable recovery path runs without any action by the device operator beyond normal AP operation; the attacker triggers the condition solely by wireless association and crash/recovery events.\nS:U - The out-of-bounds clear_bit corrupts kernel memory in ath12k_hw/dp_hw adjacent to free_ml_peer_id_map; impact stays within kernel/driver context and does not by itself cross VM, container, or IOMMU security boundaries.\nC:H - clear_bit() with peer_id\u003e=0x2000 writes outside the 256-bit free_ml_peer_id_map into the adjacent dp_peers[] RCU pointer table, corrupting kernel pointers that can be dereferenced later for arbitrary kernel memory read primitives.\nI:H - The out-of-bounds atomic bit-clear is a kernel memory write that corrupts dp_peers[] entries used on datapath RX/TX, enabling control of freed/corrupted objects and potential arbitrary code execution, not merely a benign crash.\nA:H - Corrupted dp_peers pointers during recovery can cause kernel oops/panic on subsequent datapath use, and the bitmap slot is never freed so ath12k_peer_ml_alloc() exhausts MLO peer IDs, denying further MLO associations (DoS)."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-17T05:48:37.563Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/234b5cb81e6fcc1e3b31b13deff66130be55f36e"
},
{
"url": "https://git.kernel.org/stable/c/47abd2ca281531deee38a3b3770d885e270e9fc9"
}
],
"title": "wifi: ath12k: fix out-of-bounds clear_bit in ath12k_mac_dp_peer_cleanup()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-74554",
"datePublished": "2026-08-15T12:28:00.097Z",
"dateReserved": "2026-08-15T05:44:03.916Z",
"dateUpdated": "2026-08-17T05:48:37.563Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…