KernelScan.io

HIGH Introduced in 2.6.12

bluetooth OCF Filter Bypass

CVE-2026-98460

CVSS 7.8 / 10.0 KernelScan AI

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

01

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_sock: reject out-of-range OCF values The raw HCI socket security filter has 128 OCF bits per supported OGF, but masks the 10-bit OCF with 127 before looking up the command. An unprivileged socket can therefore submit a reserved OCF that aliases an allowlisted command modulo 128. A conforming controller should reject reserved opcodes. Nevertheless, the security decision must apply to the opcode that will actually be sent, especially since controller-specific behavior is outside the host stack's control. Reject OCF values that cannot be represented by the security filter instead of aliasing them onto an unrelated command.

02

Engine v0.9.0

Risk summary

A local unprivileged user with access to a raw HCI socket can bypass the kernel's Bluetooth command filter by sending HCI commands with reserved OCF values (128-1023) that alias to allowlisted commands modulo 128. This allows unauthorized HCI commands to reach the Bluetooth controller, potentially enabling device pairing, key extraction, controller reconfiguration, or denial of service.

Affectednet/bluetooth/hci_sock.c (bluetooth subsystem)

Vulnerability analysis

The Bluetooth raw socket security filter uses a 128-bit bitmap per command group to track permitted command codes, but the validation logic masked the 10-bit command code with 127 before checking the bitmap. This caused command codes 128–1023 to wrap around and match bits for codes 0–127, allowing an attacker to send reserved commands that the filter incorrectly treated as allowed. The fix adds an explicit range check rejecting any command code greater than 127 before the bitmap lookup, ensuring the security decision applies to the actual command sent to the controller. The vulnerability can be triggered by any local process that can open a raw HCI socket — typically requiring the CAP_NET_RAW capability in the initial namespace, but also reachable from a user namespace where that capability is granted, since the filter's capability check tests the initial namespace.

03

BranchIntroducedFixed inPatch commit
5.102.6.125.10.27170b0a27bdde0
5.152.6.125.15.222598686f5d65b
6.12.6.126.1.189c1fd465ea1c5
6.122.6.126.12.112320dedad15e8
6.182.6.126.18.55173457fa3e99
6.62.6.126.6.15868f0bcc4e16e
7.22.6.127.2.947d67ec424e6
mainline2.6.127.3e93fad891c72
cip/5.102.6.125.10.271-cip7870b0a27bdde0
cip/6.12.6.126.1.189-cip61c1fd465ea1c5
cip/6.1-rt2.6.126.1.189-cip61-rt32c1fd465ea1c5
cip/6.122.6.126.12.112-cip33320dedad15e8

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.112-cip33
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)