{"id":"CVE-2026-43113","state":"PUBLISHED","title":"wifi: wl1251: validate packet IDs before indexing tx_frames","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: wl1251: validate packet IDs before indexing tx_frames\n\nwl1251_tx_packet_cb() uses the firmware completion ID directly to index\nthe fixed 16-entry wl->tx_frames[] array. The ID is a raw u8 from the\ncompletion block, and the callback does not currently verify that it\nfits the array before dereferencing it.\n\nReject completion IDs that fall outside wl->tx_frames[] and keep the\nexisting NULL check in the same guard. This keeps the fix local to the\ntrust boundary and avoids touching the rest of the completion flow.","publishedAt":"2026-05-06T07:40:39.234Z","updatedAt":"2026-08-05T12:26:00.700Z","severity":{"score":8.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"6509dbece7339dbc8980c706b9d623119a6de105","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"a8a11a876f0a97061ee5d9e61d0f5a0df7e241c7","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"e0dc1ad870d6788b049bfe1511ac75b2333a7550","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"b6ba1eacf276063ebeefbbae8056043c24f2efaf","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"df15adc692a802636dd3f258fc7cca8bf7a0ed9a","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"8d7465be5163a923ee5d7459719ef5a021c1584a","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"26ee518695c484f75e3606d631278e84bd24ae02","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"0fd56fad9c56356e7fa7a7c52e7ecbf807a44eb0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/ti/wl1251/tx.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.31","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.31","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.136","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.83","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.24","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.14","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/ti/wl1251/tx.c"]}],"references":["https://git.kernel.org/stable/c/6509dbece7339dbc8980c706b9d623119a6de105","https://git.kernel.org/stable/c/a8a11a876f0a97061ee5d9e61d0f5a0df7e241c7","https://git.kernel.org/stable/c/e0dc1ad870d6788b049bfe1511ac75b2333a7550","https://git.kernel.org/stable/c/b6ba1eacf276063ebeefbbae8056043c24f2efaf","https://git.kernel.org/stable/c/df15adc692a802636dd3f258fc7cca8bf7a0ed9a","https://git.kernel.org/stable/c/8d7465be5163a923ee5d7459719ef5a021c1584a","https://git.kernel.org/stable/c/26ee518695c484f75e3606d631278e84bd24ae02","https://git.kernel.org/stable/c/0fd56fad9c56356e7fa7a7c52e7ecbf807a44eb0"],"weaknesses":[],"ingestedAt":"2026-10-29T20:11:57.932Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/43xxx/CVE-2026-43113.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-43113","state":"PUBLISHED","datePublished":"2026-05-06T07:40:39.234Z","dateUpdated":"2026-08-05T12:26:00.700Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-05-01T14:12:55.986Z"},"containers":{"cna":{"title":"wifi: wl1251: validate packet IDs before indexing tx_frames","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: wl1251: validate packet IDs before indexing tx_frames\n\nwl1251_tx_packet_cb() uses the firmware completion ID directly to index\nthe fixed 16-entry wl->tx_frames[] array. The ID is a raw u8 from the\ncompletion block, and the callback does not currently verify that it\nfits the array before dereferencing it.\n\nReject completion IDs that fall outside wl->tx_frames[] and keep the\nexisting NULL check in the same guard. This keeps the fix local to the\ntrust boundary and avoids touching the rest of the completion flow."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"6509dbece7339dbc8980c706b9d623119a6de105","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"a8a11a876f0a97061ee5d9e61d0f5a0df7e241c7","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"e0dc1ad870d6788b049bfe1511ac75b2333a7550","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"b6ba1eacf276063ebeefbbae8056043c24f2efaf","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"df15adc692a802636dd3f258fc7cca8bf7a0ed9a","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"8d7465be5163a923ee5d7459719ef5a021c1584a","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"26ee518695c484f75e3606d631278e84bd24ae02","versionType":"git"},{"version":"2f01a1f58889fbfeb68b1bc1b52e4197f3333490","status":"affected","lessThan":"0fd56fad9c56356e7fa7a7c52e7ecbf807a44eb0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/ti/wl1251/tx.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.31","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.31","versionType":"semver"},{"version":"5.10.258","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.209","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.136","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.83","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.24","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.14","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/wireless/ti/wl1251/tx.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/6509dbece7339dbc8980c706b9d623119a6de105"},{"url":"https://git.kernel.org/stable/c/a8a11a876f0a97061ee5d9e61d0f5a0df7e241c7"},{"url":"https://git.kernel.org/stable/c/e0dc1ad870d6788b049bfe1511ac75b2333a7550"},{"url":"https://git.kernel.org/stable/c/b6ba1eacf276063ebeefbbae8056043c24f2efaf"},{"url":"https://git.kernel.org/stable/c/df15adc692a802636dd3f258fc7cca8bf7a0ed9a"},{"url":"https://git.kernel.org/stable/c/8d7465be5163a923ee5d7459719ef5a021c1584a"},{"url":"https://git.kernel.org/stable/c/26ee518695c484f75e3606d631278e84bd24ae02"},{"url":"https://git.kernel.org/stable/c/0fd56fad9c56356e7fa7a7c52e7ecbf807a44eb0"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:A - The vulnerable completion path belongs to a Wi-Fi driver and is reached through wl1251 transmit-completion processing after wireless activity. The highest defensible scenario is a radio-adjacent attacker influencing firmware TX results on the local Wi-Fi medium.\nAC:L - There is no race or hard timing requirement in the vulnerable callback. Once the TX-result path is reached, one completion record with an out-of-range u8 packet ID is enough to trigger the out-of-bounds access.\nPR:N - The TX completion interrupt path performs no attacker credential or authorization check before trusting the firmware completion ring. A radio-adjacent attacker does not need an account or local privileges on the victim.\nUI:N - Completion records are processed automatically by the driver when the device raises a TX-result interrupt. Exploitation does not require the victim to open a file, mount anything, or perform a deliberate action.\nS:U - The vulnerable component is a kernel Wi-Fi driver and the impacts are to the same kernel security authority. This is not a VM escape, IOMMU bypass, or cross-authority boundary crossing.\nC:H - The unchecked u8 index can read a pointer outside the fixed 16-entry tx_frames array and then treat that memory as an skb. As kernel memory corruption, this is defensibly scoreable as high confidentiality impact.\nI:H - The old code can write NULL back through wl->tx_frames[result->id] out of bounds and can also mutate fields through a bogus skb pointer. That is kernel memory corruption with potential control-flow or data-integrity impact.\nA:H - An out-of-bounds pointer dereference or write in this kernel path can readily cause an oops, panic, or device/driver failure. Availability impact is therefore high."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:26:00.700Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"5.10.258"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"5.15.209"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"6.6.136"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"6.12.83"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"6.18.24"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"6.19.14"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.31","versionEndExcluding":"7.0"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}