CVE-2026-98107: Bluetooth: L2CAP: fix out-of-bounds write in l2cap_ecred_connect

Published Sep 25, 2026
·
Updated

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

Bluetooth: L2CAP: fix out-of-bounds write in l2capecredconnect

l2capchanconnect() tries to ensure there are no more than L2CAPECREDCONNSCIDMAX pending ECRED channels, so they fit in the same L2CAPECREDCONNREQ that l2capecredconnect() constructs.

However, the check only counts deferred channels. If 6 L2CAP sockets are connected at the same time in order DDDDND (D=deferred, N=non-deferred), the last can bump the total to max+1. It results to one le16 written out of bounds of the scid array, and an invalid ECREDCONNREQ being sent.

Fix by leaving room for the non-deferred pending ECRED channels in the counting in l2capchanconnect(), so the limit can't be exceeded.

Move counting under same critical section where the channel is added. Although race conditions involving this appear unreachable, it's easier to see.

Also add WARNONONCE check in l2capecreddeferconnect() to make this less brittle.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 25, 2026
CVE Published
via MITRE·10:35 AM
Data Sourced
via MITRE·10:35 AM
Description

Frequently Asked Questions

1

What conditions are needed to trigger the out-of-bounds write?

Six L2CAP sockets must be connected concurrently in the sequence deferred, deferred, deferred, deferred, non-deferred, deferred. This allows pending ECRED channels to exceed L2CAP_ECRED_CONN_SCID_MAX because the original check counted only deferred channels.

2

What is the observable effect when the limit is exceeded?

The kernel writes one __le16 value beyond the SCID array while constructing an ECRED connection request. It also sends an invalid ECRED_CONN_REQ.

3

What does the fix change?

The fix includes non-deferred pending ECRED channels when enforcing the connection limit, preventing the maximum from being exceeded. It also performs the counting in the same critical section that adds the channel and adds a WARN_ON_ONCE check in l2cap_ecred_defer_connect().

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