The Android Bluetooth stack is a critical component allowing devices to talk to each other wirelessly. However, when things go wrong, your phone can become vulnerable—even with no action on your part. Recently, security researchers uncovered a logic error in the Android Bluetooth GATT server code (gatt_sr.cc). This mistake can let nearby attackers remotely crash or freeze your Bluetooth features with no need for the user to take any action. Here's what CVE-2024-43763 is all about, why it matters, and how it works.

What is CVE-2024-43763?

CVE-2024-43763 is a vulnerability found in the build_read_multi_rsp function of gatt_sr.cc—part of the Bluetooth stack in Android. If someone sends specially-crafted messages over Bluetooth near your device, they can trigger this bug, causing your device’s Bluetooth service to become unresponsive or crash. All this can happen:

Diving into The Code

The error lives in the function responsible for handling “read multiple” requests to Bluetooth characteristics. A characteristic is like a single piece of data or sensor on a Bluetooth device. In Bluetooth Low Energy (BLE), a client can ask for multiple pieces of data at once, and the server (in this case, your phone) builds a response with all the requested values.

But the vulnerable function fails to handle certain edge cases, leading to potential DoS if someone sends bad requests.

Simplified C++ code snippet

void build_read_multi_rsp(uint8_t* p_rsp, const std::vector<GATT_Handle>& handles) {
    for (const auto& handle : handles) {
        // [BUG] Fails to check if handle is valid or response buffer has enough space
        memcpy(p_rsp, get_value(handle), get_length(handle));
        p_rsp += get_length(handle);
    }
    // Function might write past end of response buffer, causing memory corruption and crash
}

It does not check if copying the value will overrun the response buffer.

- If an attacker sends many invalid handles in the request, or requests huge values, it can cause corruption, crash, or freezing of the Bluetooth process.

Nearby Attacker: Someone with a laptop, phone or custom Bluetooth device gets near you.

2. Sends Malicious Read Multiple Request: They craft a bad “read multiple” request—asking for multiple invalid or large characteristic handles.
3. Target Device Receives Request: The vulnerable function processes the request without proper checking.
4. Crash or Freeze Ensues: The Bluetooth service crashes or becomes unresponsive—breaking any Bluetooth connections. This can keep happening as long as the attacker stays nearby and keeps sending the request.

Exploit Example

Here's a Python snippet using Bleak showing how such an attack could be initiated (for research purposes only):

from bleak import BleakClient

# Replace with target device address
ADDRESS = "XX:XX:XX:XX:XX:XX"
# List of invalid/large handles
HANDLE_LIST = [xFFFF, xFFFE, xF001, xF002]

async def exploit():
    async with BleakClient(ADDRESS) as client:
        # You'd need to use a lower-level library to craft read multiple responses,
        # as Bleak doesn't provide raw message injection!
        # This is for illustration only
        await client.read_gatt_char(HANDLE_LIST)

# Real exploits use custom crafted packets—see links below for tools and PoC code

Continuous attacks can keep device disrupted

- Not limited to Android phones—could affect head units, tablets, or wearables using the same code

Mitigation and Patching

If you’re a user:
- Update Android as soon as security updates become available (patch includes a fix for this logic error)

Turn off Bluetooth in crowded or unfamiliar areas if worried

If you’re an Android developer:

Validate every handle before reading data

Patch details:
See Android Security Bulletin—June 2024 for patch specifics.

References and Further Reading

- Official Android Security Bulletin — June 2024
- Bluetooth SIG GATT documentation
- AOSP gatt_sr.cc Source
- How Bluetooth “Read Multiple” Works (Adafruit Blog)

Summary Table

| | Description |
|-----------------|------------------------------------------------------|
| CVE | CVE-2024-43763 |
| Component | Bluetooth / gatt_sr.cc (Android) |
| Impact | Remote (proximity) Denial of Service (Bluetooth down)|
| Privileges | None (No user interaction required) |
| Remediation | Security update (see June 2024 Android Bulletin) |

Conclusion

CVE-2024-43763 is a textbook example of how a single logic error in a complex software stack can have real-world disruptive consequences—even without any user help. If you use Bluetooth, keep your device updated. If you work with low-level networking code, always validate your inputs and check buffer boundaries!

Have more questions? Feel free to ask in the comments below.

*(This writeup is exclusive to you. Please use responsibly.)*

Timeline

Published on: 01/21/2025 23:15:13 UTC
Last modified on: 03/17/2025 17:15:29 UTC