{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2025-37973", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2025-04-16T04:51:23.975Z", "datePublished": "2025-05-20T16:47:19.074Z", "dateUpdated": "2026-08-05T11:58:42.573Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:58:42.573Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: cfg80211: fix out-of-bounds access during multi-link element defragmentation\n\nCurrently during the multi-link element defragmentation process, the\nmulti-link element length added to the total IEs length when calculating\nthe length of remaining IEs after the multi-link element in\ncfg80211_defrag_mle(). This could lead to out-of-bounds access if the\nmulti-link element or its corresponding fragment elements are the last\nelements in the IEs buffer.\n\nTo address this issue, correctly calculate the remaining IEs length by\ndeducting the multi-link element end offset from total IEs end offset." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H", "baseScore": 8.1, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:A - The vulnerable parser consumes IEs straight out of a received 802.11 probe response frame (`cfg80211_inform_bss_frame_data()` → `cfg80211_defrag_mle()`), so the attacker only needs to inject a crafted management frame within radio range of the victim STA. This is the standard WiFi frame-injection adjacency requirement, not a routable network path.\nAC:L - The attacker fully controls the frame contents and can deterministically place a valid Basic Multi-Link element as the final IE, which makes the fragment-scan loop dereference memory exactly at `ie + ielen` on its first iteration — no race, no memory-layout luck required for the overread itself. Probe responses are accepted whenever the STA scans (foreground or PNO/sched scan), and MAC randomization or simply answering an observed probe request satisfies the DA check in `ieee80211_scan_accept_presp()`.\nPR:N - Scan-result parsing happens before any authentication or association, so an unauthenticated attacker with no credentials, no key material, and no prior relationship to the victim can reach the code. The attacker needs no account on the target and no privileges of any kind.\nUI:N - Linux/Android stations run periodic background scans and scheduled scans (PNO) automatically via wpa_supplicant/NetworkManager without any user action, and every such scan feeds received probe responses into the vulnerable path. No victim click, mount, or connection attempt is needed.\nS:U - The out-of-bounds read and any resulting fault occur entirely within the kernel's own security authority on the affected host; no VM, IOMMU, container, or sandbox boundary is crossed.\nC:H - The loop reads up to `p + 2*mle->datalen` bytes (potentially ~2.5 KB for a maximum-length probe response with the MLE placed last) beyond the end of the receive buffer into adjacent kernel heap memory — far more than a strictly bounded few-byte overread. The out-of-bounds bytes are actively interpreted as element headers and steer loop continuation and the computed allocation size, so attacker-observable behaviour depends on kernel memory the attacker must not be able to read.\nI:N - The defect is confined to the length computation of a read-only scanning loop; the erroneous bound can only over-estimate `buf_len`, and the subsequent `cfg80211_defragment_element()` call still uses the correct `ielen` and rejects overflow with `-ENOSPC`, so no out-of-bounds write or corruption of kernel state occurs.\nA:H - The walk can run kilobytes past the receive buffer into unmapped or guarded memory — KFENCE (default-enabled on Android GKI and several distro kernels), KASAN, and DEBUG_PAGEALLOC turn this into an unhandled kernel page fault/oops. The attacker can retransmit the crafted probe response indefinitely with no authentication, so repeated triggering makes a kernel panic a practical denial of service." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "net/wireless/scan.c" ], "versions": [ { "version": "2481b5da9c6b2ee1fde55a1c29eb2ca377145a10", "lessThan": "73dde269a1a43e6b1aa92eba13ad2df58bfdd38e", "status": "affected", "versionType": "git" }, { "version": "2481b5da9c6b2ee1fde55a1c29eb2ca377145a10", "lessThan": "9423f6da825172b8dc60d4688ed3d147291c3be9", "status": "affected", "versionType": "git" }, { "version": "2481b5da9c6b2ee1fde55a1c29eb2ca377145a10", "lessThan": "e1c6d0c6199bd5f4cfc7a66ae7032b6e805f904d", "status": "affected", "versionType": "git" }, { "version": "2481b5da9c6b2ee1fde55a1c29eb2ca377145a10", "lessThan": "023c1f2f0609218103cbcb48e0104b144d4a16dc", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "net/wireless/scan.c" ], "versions": [ { "version": "6.5", "status": "affected" }, { "version": "0", "lessThan": "6.5", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.91", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.29", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.14.7", "lessThanOrEqual": "6.14.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.15", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.5", "versionEndExcluding": "6.6.91" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.5", "versionEndExcluding": "6.12.29" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.5", "versionEndExcluding": "6.14.7" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.5", "versionEndExcluding": "6.15" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/73dde269a1a43e6b1aa92eba13ad2df58bfdd38e" }, { "url": "https://git.kernel.org/stable/c/9423f6da825172b8dc60d4688ed3d147291c3be9" }, { "url": "https://git.kernel.org/stable/c/e1c6d0c6199bd5f4cfc7a66ae7032b6e805f904d" }, { "url": "https://git.kernel.org/stable/c/023c1f2f0609218103cbcb48e0104b144d4a16dc" } ], "title": "wifi: cfg80211: fix out-of-bounds access during multi-link element defragmentation", "x_generator": { "engine": "bippy-1.2.0" } } } }