---
id: "CVE-2026-98457"
kind: "vulnerability"
aliases: ["CVE-2026-98457"]
title: "Linux kernel: short Bluetooth L2CAP frames cause out-of-bounds memory reads"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["bluetooth", "desktops", "kernel", "linux", "runtime", "servers"]
not_affected_if: ["bluetooth-disabled"]
published_at: "2026-10-18T16:16:56+00:00"
first_seen_at: "2026-10-23T21:57:15+00:00"
updated_at: "2026-10-25T05:27:19+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98457", "first_seen_at": "2026-10-23T21:57:15+00:00"}]
---

# Linux kernel: short Bluetooth L2CAP frames cause out-of-bounds memory reads

A short ERTM or streaming-mode L2CAP frame over Bluetooth makes the Linux kernel read its control field and FCS past the end of the buffer. The sources do not say whether this leads to code execution or only to information leaks or crashes.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- `uname -r` and compare against the fixed kernel builds listed in the NVD entry
- `lsmod | grep bluetooth` to see whether the Bluetooth stack is loaded
- unknown whether a specific config option controls exposure

## Fix

- Update the Linux kernel to a release that includes the upstream commit validating L2CAP frame length; exact fixed versions: unknown
- Unload the Bluetooth stack (`modprobe -r bluetooth`) on hosts that do not need it, as a stopgap: unknown from sources

## Timeline

- 2026-10-23T21:57:15+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98457

## From the sources

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

Bluetooth: L2CAP: validate frame length before control and FCS access

l2cap_data_rcv() unpacks either a two-byte or four-byte control field
without first ensuring that it is present. A short ERTM or streaming-mode
frame can therefore cause an out-of-bounds read.

There is a second short-frame case when CRC16 is enabled. After the
control field is pulled, l2cap_check_fcs() subtracts two from skb->len
without checking it. If fewer than two bytes remain, the subtraction
wraps; skb_trim() leaves the buffer unchanged and the subsequent FCS
load reads past the logical end of the frame.

Validate that the frame contains both its control field and, when
enabled, its FCS before either field is accessed.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
