CVE-2026-31771 Bluetooth: hci_event: move wake reason storage into validated event handlers

High 8.1 Published Updated

A missing bounds check in the Linux kernel Bluetooth HCI event handler allows attackers to trigger memory corruption via short event frames.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Local or same network only
Victim action needed
Not needed
Fix
Available

What is CVE-2026-31771?

CVE-2026-31771 is a high-severity memory corruption vulnerability in Linux kernel, published on 1 May 2026. It can only be exploited from the same machine or local network, with no action from the victim.

Official description

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

Bluetooth: hci_event: move wake reason storage into validated event handlers

hci_store_wake_reason() is called from hci_event_packet() immediately after stripping the HCI event header but before hci_event_func() enforces the per-event minimum payload length from hci_ev_table. This means a short HCI event frame can reach bacpy() before any bounds check runs.

Rather than duplicating skb parsing and per-event length checks inside hci_store_wake_reason(), move wake-address storage into the individual event handlers after their existing event-length validation has succeeded. Convert hci_store_wake_reason() into a small helper that only stores an already-validated bdaddr while the caller holds hci_dev_lock(). Use the same helper after hci_event_func() with a NULL address to preserve the existing unexpected-wake fallback semantics when no validated event handler records a wake address.

Annotate the helper with __must_hold(&hdev->lock) and add lockdep_assert_held(&hdev->lock) so future call paths keep the lock contract explicit.

Call the helper from hci_conn_request_evt(), hci_conn_complete_evt(), hci_sync_conn_complete_evt(), le_conn_complete_evt(), hci_le_adv_report_evt(), hci_le_ext_adv_report_evt(), hci_le_direct_adv_report_evt(), hci_le_pa_sync_established_evt(), and hci_le_past_received_evt().

Weakness: CWE-125

Which versions are affected by CVE-2026-31771?

It affects 1 product.

Products include Linux kernel.

How do I fix CVE-2026-31771?

Apply the vendor's patch.

Upgrade to the fixed version. Memory-safe languages, compiler hardening and fuzzing prevent most new cases. More about Memory corruption.

Is CVE-2026-31771 being exploited?

There is no known exploitation of CVE-2026-31771 in the wild and no public exploit code.

All Linux kernel vulnerabilities

Sources

Also known as AZL-85380, BELL-CVE-2026-31771, DEBIAN-CVE-2026-31771, GHSA-pqp4-p68v-9xfr, ROOT-OS-DEBIAN-11-CVE-2026-31771, ROOT-OS-DEBIAN-12-CVE-2026-31771 and 4 more.

Is CVE-2026-31771 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free