Bluetooth: MSFT: validate evt_prefix_len against the response length

Summary

CVECVE-2026-90251
StatePUBLISHED
AssignerLinux
Source PriorityCVE Program / NVD first with legacy fallback
Published2026-09-17 17:17:21 UTC
Updated2026-09-17 17:17:21 UTC
DescriptionIn the Linux kernel, the following vulnerability has been resolved: Bluetooth: MSFT: validate evt_prefix_len against the response length read_supported_features() only checks that the response covers the fixed part of struct msft_rp_read_supported_features, which is 11 bytes: if (skb->len < sizeof(*rp)) { bt_dev_err(hdev, "MSFT supported features length mismatch"); goto failed; } evt_prefix[] is a flexible array member and rp->evt_prefix_len is an unvalidated u8 taken straight out of that response, so msft->evt_prefix = kmemdup(rp->evt_prefix, rp->evt_prefix_len, GFP_KERNEL); copies up to 255 bytes from a reply that may have carried none of them. What is copied is data the controller never sent, and it is then used to match incoming vendor events in msft_vendor_evt(). This is not an out-of-bounds access. An skb data allocation always has at least SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) bytes past the payload, which is more than the 255 byte maximum, so the read stays inside the allocation and KASAN does not report it. It is still a read of bytes the host was never given, with the length fully controlled by the controller. Reject a response that is too short for the prefix it declares. Verified with an emulated controller over /dev/vhci on a KASAN kernel, with vhci made to advertise an MSFT opcode the way btintel, btqca, btmtk and btrtl do unconditionally. A reply of exactly 11 bytes declaring evt_prefix_len = 255 reaches kmemdup and copies 255 bytes ("skb->len=11 evt_prefix_len=255", with the copied buffer dumped); since the reply ends at the fixed part, all 255 come from past the end of the response. No KASAN report is produced, as expected from the allocation slack described above. With this patch the response is rejected with "MSFT event prefix length mismatch" and msft->evt_prefix is left unset.

Vendor Declared Affected Products

SourceVendorProductVersionPlatforms
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 dce783a10e70f013410f5b583a29fc3286899629 git Not specified
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 21f539c59ed330b671d75fd119c5f659ff92fbd1 git Not specified
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 52b1b3b4d403cbda1b70ce2385e1a71f166a87ba git Not specified
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 e804d54a5a99d99250490e68093eff7190472e6f git Not specified
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 620c2631cff490d14d0b9d56f185cc745806d6d7 git Not specified
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 7c2658023d839b651368a5b8b781bf9a817647cb git Not specified
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 63562cfaea8a650fdb31ee8de21c32e3600be642 git Not specified
CNA Linux Linux affected 145373cb1b1fcdba2059e945d0aa2613af2e84d1 0079e1a944634ab2dc1c7cdec1144486d096407e git Not specified
CNA Linux Linux affected 5.8 Not specified
CNA Linux Linux unaffected 5.8 semver Not specified
CNA Linux Linux unaffected 5.10.270 5.10.* semver Not specified
CNA Linux Linux unaffected 5.15.221 5.15.* semver Not specified
CNA Linux Linux unaffected 6.1.188 6.1.* semver Not specified
CNA Linux Linux unaffected 6.6.157 6.6.* semver Not specified
CNA Linux Linux unaffected 6.12.110 6.12.* semver Not specified
CNA Linux Linux unaffected 6.18.52 6.18.* semver Not specified
CNA Linux Linux unaffected 7.2.6 7.2.* semver Not specified
CNA Linux Linux unaffected 7.3-rc1 * original_commit_for_fix Not specified

References

ReferenceSourceLinkTags
git.kernel.org/stable/c/7c2658023d839b651368a5b8b781bf9a817647cb 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/620c2631cff490d14d0b9d56f185cc745806d6d7 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/0079e1a944634ab2dc1c7cdec1144486d096407e 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/e804d54a5a99d99250490e68093eff7190472e6f 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/63562cfaea8a650fdb31ee8de21c32e3600be642 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/dce783a10e70f013410f5b583a29fc3286899629 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/52b1b3b4d403cbda1b70ce2385e1a71f166a87ba 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/21f539c59ed330b671d75fd119c5f659ff92fbd1 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
CVE Program record CVE.ORG www.cve.org canonical
NVD vulnerability detail NVD nvd.nist.gov canonical, analysis

© CVE.report 2026

Use of this information constitutes acceptance for use in an AS IS condition. There are NO warranties, implied or otherwise, with regard to this information or its use. Any use of this information is at the user's risk. It is the responsibility of user to evaluate the accuracy, completeness or usefulness of any information, opinion, advice or other content. EACH USER WILL BE SOLELY RESPONSIBLE FOR ANY consequences of his or her direct or indirect use of this web site. ALL WARRANTIES OF ANY KIND ARE EXPRESSLY DISCLAIMED. This site will NOT BE LIABLE FOR ANY DIRECT, INDIRECT or any other kind of loss.

CVE, CWE, and OVAL are registred trademarks of The MITRE Corporation and the authoritative source of CVE content is MITRE's CVE web site. This site includes MITRE data granted under the following license.

Free CVE JSON API cve.report/api

CVE.report and Source URL Uptime Status status.cve.report