CVE-2019-8922
High · 8.8CVSS
8.8
EPSS
1.5%
Published
Nov 29, 2021
CISA due date
—
Cloudanix analysis
A nearby attacker can take control of devices running vulnerable Bluetooth software without any user action.
- Exploitation
- Adjacent Network
- Attacker needs
- None
- Complexity
- Low
- Impact
- Full Compromise
- Component
- Application
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Heap-based buffer overflow in service_attr_req called by process_request due to unconditional appending of attribute values into a preallocated response buffer with no size validation.
Why it matters to the business
Remote code execution or service crash on Bluetooth-enabled systems; high operational risk for any device using the affected Bluetooth stack given public exploit availability and 1773 days since disclosure.
How an attack unfolds
An attacker on the local Bluetooth network sends a crafted SDP service attribute request; the daemon allocates a response buffer then appends all returned attribute data without bounds checks, overflowing the heap and enabling code execution or denial of service.
How to fix it
Upgrade grpc/grpc-swift to commit 858f977f2a51fca2292f384cf7a108dc2e73a3bd; apply equivalent patches or updates for any BlueZ installations still at or below version 5.48.
How to confirm the fix worked
Confirm the commit or package version matches the fixed revision; recompile and test SDP attribute requests to verify buffer-size checks are present and no overflow occurs.
Typical attack path
- Establish SDP connection to target Bluetooth daemon
- Send malicious service_attr_req with oversized attribute data
- Trigger uncontrolled append into undersized response buffer
- Achieve heap corruption leading to RCE or crash
How to detect it
Review Bluetooth daemon logs and system crash reports for heap corruption indicators around SDP request handling; look for repeated large attribute responses or sudden bluetoothd restarts.
What your security team should do
- Prioritize patching all instances of the affected Bluetooth stack or grpc-swift dependency within 48 hours
- Disable SDP service if not required
- Monitor for anomalous Bluetooth traffic and heap-related crashes
- Review downstream dependents for similar exposure given ecosystem prevalence
The record
A heap-based buffer overflow was discovered in bluetoothd in BlueZ through 5.48. There isn't any check on whether there is enough space in the destination buffer. The function simply appends all data passed to it. The values of all attributes that are requested are appended to the output buffer. There are no size checks whatsoever, resulting in a simple heap overflow if one can craft a request where the response is large enough to overflow the preallocated buffer. This issue exists in service_attr_req gets called by process_request (in sdpd-request.c), which also allocates the response buffer.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:10 | bluez | 0 | 5.50-1.2~deb10u3 |
| Debian:11 | bluez | 0 | 5.54-1 |
| Debian:12 | bluez | 0 | 5.54-1 |
| Debian:13 | bluez | 0 | 5.54-1 |
| Debian:9 | bluez | 0 | 5.43-2+deb9u5 |
| SUSE:Enterprise Storage 6 | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Enterprise Storage 6 | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Enterprise Storage 7 | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Enterprise Storage 7 | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-ESPOS | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-ESPOS | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | bluez | 0 | 5.13-5.26.1 |
| SUSE:Linux Enterprise Server 12 SP3-BCL | bluez | 0 | 5.13-5.26.1 |
| SUSE:Linux Enterprise Server 12 SP4-LTSS | bluez | 0 | 5.13-5.26.1 |
| SUSE:Linux Enterprise Server 12 SP5 | bluez | 0 | 5.13-5.26.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise Server 15 SP2-BCL | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Linux Enterprise Server 15 SP2-BCL | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Linux Enterprise Server 15-LTSS | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise Server 15-LTSS | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | bluez | 0 | 5.13-5.26.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | bluez | 0 | 5.13-5.26.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | bluez | 0 | 5.48-150000.5.34.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | bluez | 0 | 5.48-150000.5.41.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | bluez | 0 | 5.13-5.26.1 |
| SUSE:Linux Enterprise Workstation Extension 12 SP5 | bluez | 0 | 5.13-5.26.1 |
| SUSE:Manager Proxy 4.1 | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Manager Proxy 4.1 | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Manager Retail Branch Server 4.1 | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Manager Retail Branch Server 4.1 | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:Manager Server 4.1 | bluez | 0 | 5.48-150200.13.8.1 |
| SUSE:Manager Server 4.1 | bluez | 0 | 5.48-150200.13.17.1 |
| SUSE:OpenStack Cloud 9 | bluez | 0 | 5.13-5.26.1 |
| SUSE:OpenStack Cloud Crowbar 9 | bluez | 0 | 5.13-5.26.1 |
| Ubuntu:18.04:LTS | bluez | 0 | 5.48-0ubuntu3.7 |
| Ubuntu:20.04:LTS | bluez | 0 | 5.53-0ubuntu3 |
| Ubuntu:Pro:16.04:LTS | bluez | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | bluez | 0 | 5.37-0ubuntu5.3+esm5 |
Related vulnerabilities
- CVE-2023-27349 BlueZ Audio Profile AVRCP Improper Validation of Array Index Remote Code Execution… Also affects bluez
- CVE-2023-45866 Bluetooth HID Hosts in BlueZ may permit an unauthenticated Peripheral role HID Device to… Also affects bluez
- CVE-2022-39176 BlueZ before 5.59 allows physically proximate attackers to obtain sensitive information… Also affects bluez
- CVE-2022-39177 BlueZ before 5.59 allows physically proximate attackers to cause a denial of service… Also affects bluez
- CVE-2022-0204 A heap overflow vulnerability was found in bluez in versions prior to 5.63. Also affects bluez
- CVE-2023-51594 BlueZ OBEX Library Out-Of-Bounds Read Information Disclosure Vulnerability. Also affects bluez
- CVE-2023-51596 BlueZ Phone Book Access Profile Heap-based Buffer Overflow Remote Code Execution… Also affects bluez
- CVE-2023-51589 BlueZ Audio Profile AVRCP parse_media_element Out-Of-Bounds Read Information Disclosure… Also affects bluez