CVE-2026-90251: Bluetooth: MSFT: validate evt_prefix_len against the response length

Published Sep 17, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

Bluetooth: MSFT: validate evtprefixlen against the response length

readsupportedfeatures() only checks that the response covers the fixed part of struct msftrpreadsupportedfeatures, which is 11 bytes:

if (skb->len < sizeof(rp)) { btdeverr(hdev, "MSFT supported features length mismatch"); goto failed; }

evtprefix[] is a flexible array member and rp->evtprefixlen is an unvalidated u8 taken straight out of that response, so

msft->evtprefix = kmemdup(rp->evtprefix, rp->evtprefixlen, GFPKERNEL);

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 msftvendorevt().

This is not an out-of-bounds access. An skb data allocation always has at least SKBDATAALIGN(sizeof(struct skbsharedinfo)) 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 evtprefixlen = 255 reaches kmemdup and copies 255 bytes ("skb->len=11 evtprefixlen=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->evtprefix is left unset.

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Apply the Linux kernel fix that adds validation in the MSFT supported features event handling: validate evt_prefix_len against the response length and reject responses that are too short for the prefix it declares (i.e., ensure msft->evt_prefix/evt_prefix_len are only copied/used when skb->len is sufficient for rp->evt_prefix_len).

    Linux kernel Bluetooth (MSFT) Reject response when evt_prefix_len is inconsistent with actual response length = implemented per patch

Event History

Sep 17, 2026
CVE Published
via MITRE·04:07 PM
Data Sourced
via MITRE·04:07 PM
Description

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203