Someone left the front door of your headphones wide open, but an attacker still has to walk up to your desk to use it
CVE-2025-20701 is a missing-authentication flaw in the Airoha Bluetooth audio SDK's handling of BR/EDR (Bluetooth Classic) pairing. An attacker within ~10 meters can silently pair to a vulnerable device — no user consent prompt, no prior authentication. Once paired, the attacker can chain this with CVE-2025-20702 (the RACE protocol flaw) to read/write device RAM and flash, extract stored Bluetooth Link Keys for paired phones, and ultimately impersonate the headphones to the victim's smartphone. From there, the Hands-Free Profile (HFP) exposes contacts, call audio, and voice-assistant control. Affected devices include 30+ models from Sony (WF-1000XM, WH-1000XM series), Bose (QuietComfort), JBL, Marshall, Beyerdynamic, Jabra, and Beats. Airoha shipped patched SDK versions (beyond v5.5.0 / v3.3.1) to manufacturers in June 2025, but as of September 2026 most device vendors have not released firmware updates to end users.
The vendor CVSS 8.8 HIGH is technically accurate for the Bluetooth attack surface — no auth, no UI, full C/I/A against the device. But for an enterprise security team managing hosts and infrastructure, this score dramatically overstates actionable risk. You cannot push firmware to employee headphones through SCCM, Intune, or any MDM. The attack vector is Adjacent (Bluetooth range, ~10m), meaning an attacker needs physical proximity to a specific person wearing specific headphones. The blast radius is one individual's audio stream and phone — there is no lateral movement to your domain, no fleet compromise, no data-tier exposure. This is a targeted espionage tool, not a network worm. For enterprise prioritization, MEDIUM is the right bucket.
4 steps from start to impact.
Identify vulnerable device via BT scanning
hcitool, Ubertooth, or the publicly available RACE Toolkit) to enumerate nearby Bluetooth devices. Airoha-based devices expose identifiable service records and GATT profiles. The attacker identifies a target within ~10m running vulnerable firmware.- Physical proximity within Bluetooth range (~10m)
- Target is wearing/using an Airoha-based audio device
- Device has Bluetooth enabled and is discoverable or connectable
- Attacker must be physically near the specific target
- Must identify the device as Airoha-based among potentially many BT devices in range
- Office environments with many BT devices create noise
Silent pairing via BR/EDR without consent
- Step 1 completed — target device identified
- Device running unpatched Airoha firmware
- Bluetooth Classic range is typically limited to ~10m in practice
- Walls and RF interference reduce effective range significantly
- Target may notice unexpected audio artifacts or connection changes
Access RACE protocol to dump flash/RAM
0x0403, Read RAM 0x1680) to extract the device's stored memory. This includes paired-device Bluetooth addresses and Link Keys — the cryptographic secrets that authenticate the headphones to the victim's phone. The RACE Toolkit (publicly available on GitHub at auracast-research/race-toolkit) automates this entire process.- Active BT Classic connection from Step 2
- RACE protocol accessible (CVE-2025-20702)
- Extraction takes time during which the attacker must maintain proximity
- Victim might notice audio glitches or disconnection
Impersonate headphones to victim's phone
AT+CPBR), call history, initiate/intercept calls, activate voice assistants, and eavesdrop on call audio.- Extracted Link Key and device MAC from Step 3
- Victim's phone has BT enabled and the headphones are not currently connected
- Attacker within BT range of victim's phone
- Victim's headphones must be disconnected first (or attacker must wait)
- Modern phones may show a 'connected' notification the victim could notice
- iOS and Android HFP access varies — some commands may be restricted by OS
The supporting signals.
| In-the-Wild Exploitation | No confirmed in-the-wild exploitation campaigns. Attack requires physical proximity, making mass exploitation impractical. Primarily a targeted espionage vector. |
|---|---|
| Proof-of-Concept | Public. The RACE Toolkit by Dennis Heinze and Frieder Steinmetz (ERNW) provides semi-automated exploitation and vulnerability checking. Full technical writeup published at Insinuator.net. |
| EPSS | 0.07766 (≈7.8th percentile) — low predicted exploitation probability, consistent with the physical-proximity requirement. |
| KEV Status | Not listed. Unlikely to be added given the consumer-peripheral scope and Adjacent-only attack vector. |
| CVSS Vector | CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — Adjacent network (Bluetooth range), no privileges, no user interaction. The AV:A is the critical limiter vs. AV:N. |
| Affected Products | 30+ devices using Airoha BT SoCs: Sony WF-1000XM / WH-1000XM series, Bose QuietComfort, JBL, Marshall, Beyerdynamic, Jabra, Beats Studio Buds. Airoha SDK versions prior to v5.5.0 (AB156x series) and v3.3.1 (AB155x series). |
| Fixed Versions | Airoha SDK v5.5.0+ and v3.3.1+ shipped to manufacturers June 4, 2025. Most device vendors have not released firmware updates to end users as of September 2026. Apple/Beats is a notable exception with a shipped fix. |
| Scanning / Exposure | Not applicable to network scanners (Shodan/Censys/GreyNoise). Bluetooth device auditing requires physical RF scanning with tools like Ubertooth or nRF Sniffer. No enterprise-scale BT inventory solution exists for most organizations. |
| Disclosure Timeline | Discovered by Dennis Heinze and Frieder Steinmetz (ERNW, Germany). Coordinated disclosure began March 2025; advisory published June 26, 2025; full technical disclosure December 2025. |
| Related CVEs | Part of a trio: CVE-2025-20700 (BLE GATT auth bypass), CVE-2025-20701 (BR/EDR auth bypass), CVE-2025-20702 (RACE protocol arbitrary R/W). All three chain together for full device compromise. |
noisgate verdict.
The single most decisive factor is the Adjacent-only attack vector (AV:A) targeting consumer audio peripherals that are outside enterprise patch-management scope. The blast radius is limited to one individual's audio stream and phone — there is no path to domain, fleet, or infrastructure compromise.
Why this verdict
- Adjacent-only attack vector: CVSS AV:A means Bluetooth range (~10m physical proximity). This is not remotely exploitable over the network. An attacker must be co-located with the target, which eliminates opportunistic and automated exploitation at scale.
- Consumer peripheral, not enterprise infrastructure: Airoha BT SoCs are in headphones, earbuds, and speakers. These devices are not managed endpoints, not domain-joined, and not in the enterprise patch pipeline. Enterprise security teams have zero mechanism to deploy firmware updates to these devices.
- Role multiplier: no high-value enterprise role exists. Walking the role catalog — these are consumer audio peripherals. They are not identity providers, domain controllers, hypervisors, backup servers, CI/CD nodes, database engines, network edge appliances, or kernel-mode agents. The worst-case outcome is targeted eavesdropping on one individual's calls/audio. Blast radius: individual → phone → that person's call audio. No lateral movement to host, domain, or fleet. The high-value role floor does NOT apply.
- Public PoC increases urgency slightly: The RACE Toolkit on GitHub lowers the skill bar, but the physical proximity requirement remains an irreducible friction point that caps real-world exploitation volume.
- EPSS confirms low exploitation probability: At 0.078, the model agrees this is unlikely to see widespread exploitation — consistent with the Adjacent vector constraint.
Why not higher?
A HIGH rating would require either a network-reachable attack vector or a blast radius that threatens enterprise infrastructure. This CVE has neither. The attack is Bluetooth-range-only, targets consumer peripherals outside IT management scope, and the worst outcome is espionage on a single individual — not domain compromise, not fleet-wide impact. The public PoC raises awareness but doesn't change the physics of Bluetooth range.
Why not lower?
A LOW or IGNORE rating would understate the risk to high-value individuals (executives, board members, legal counsel) who may use affected Sony/Bose/JBL headphones for sensitive calls. The public PoC toolkit makes exploitation accessible to moderately skilled attackers. For organizations with espionage-relevant threat models (defense, finance, government), this deserves active attention even if not infrastructure-patchable.
What to do — in priority order.
- Issue a BYOD/peripheral advisory identifying affected headphone models — Publish an internal security bulletin listing the 30+ affected models (Sony WF/WH-1000XM series, Bose QC, JBL, Marshall, Beyerdynamic, Jabra, Beats). Direct employees to check for firmware updates from their device manufacturer. This is your primary action since you cannot push patches centrally. No mitigation SLA applies at MEDIUM — go straight to the 365-day remediation window.
- Recommend wired headphones for sensitive meetings — For executive leadership, legal, board members, and anyone in an espionage-relevant role, recommend wired headphones or speakerphone for sensitive/classified calls. This eliminates the Bluetooth attack surface entirely.
- Disable Bluetooth on corporate-managed phones in high-security zones — If your MDM supports it (Intune, Jamf, Workspace ONE), enforce a Bluetooth-off policy in SCIFs, boardrooms, or other sensitive areas. This prevents the impersonation step of the attack chain.
- Add Airoha-based devices to your BT peripheral risk register — If you maintain an approved-peripherals list, flag affected models as 'pending vendor patch.' Review quarterly until manufacturers ship firmware updates.
- Network segmentation / firewall rules — This is a Bluetooth RF attack, not a network attack. VLANs, ACLs, and firewalls have zero effect on Bluetooth Classic pairing.
- EDR/XDR on endpoints — No endpoint agent monitors for rogue Bluetooth Classic pairing on connected peripherals. The attack occurs entirely on the headphone's SoC, outside the OS security boundary.
- NAC (Network Access Control) — NAC governs network port access, not Bluetooth RF. A rogue BT device within range bypasses NAC entirely.
- Patching via WSUS/SCCM/Intune — These tools manage OS and application patches, not Bluetooth peripheral firmware. You cannot push Airoha SDK updates through enterprise patch management.
Crowdsourced verification payload.
Run this on any workstation with Python 3 and bleak installed (pip install bleak). It scans for nearby BLE devices and flags known-vulnerable Airoha-based models by checking for the RACE GATT service UUID. Requires no special privileges on macOS/Linux; on Windows, requires BLE-capable adapter. Usage: python3 airoha_check.py
#!/usr/bin/env python3
"""CVE-2025-20701 / Airoha RACE Vulnerability Scanner
Scans for nearby BLE devices exposing the Airoha RACE GATT service.
Requires: pip install bleak
Output: VULNERABLE / PATCHED / UNKNOWN per device found.
"""
import asyncio
import sys
try:
from bleak import BleakScanner, BleakClient
except ImportError:
print("ERROR: Install bleak first: pip install bleak")
sys.exit(2)
# Known Airoha RACE GATT service UUIDs (primary identifiers)
RACE_SERVICE_UUIDS = [
"2a680001-3782-49e8-ab22-1a7e4e860001", # RACE primary
]
# Known vulnerable device name patterns (partial list)
VULNERABLE_PATTERNS = [
"WF-1000XM", "WH-1000XM", "QuietComfort", "QC ",
"Marshall ", "JBL ", "Jabra ", "Beyerdynamic",
"Beats Studio Buds", "AIROHA",
]
async def scan():
print("[*] Scanning for BLE devices (10 seconds)...")
devices = await BleakScanner.discover(timeout=10.0, return_adv=True)
if not devices:
print("UNKNOWN - No BLE devices found in range.")
return 3
found_vulnerable = False
for addr, (device, adv_data) in devices.items():
name = device.name or "Unknown"
service_uuids = [str(u).lower() for u in (adv_data.service_uuids or [])]
# Check for RACE service UUID
race_exposed = any(ruuid in service_uuids for ruuid in RACE_SERVICE_UUIDS)
# Check for known vulnerable device name patterns
name_match = any(p.lower() in name.lower() for p in VULNERABLE_PATTERNS)
if race_exposed:
print(f"VULNERABLE - {name} ({addr}) exposes RACE GATT service. Likely unpatched Airoha device.")
found_vulnerable = True
elif name_match:
print(f"UNKNOWN - {name} ({addr}) matches known affected model but RACE service not confirmed via BLE advertisement. Check firmware version manually.")
if not found_vulnerable:
print("PATCHED - No devices exposing RACE GATT service found in range.")
return 0
return 1
if __name__ == "__main__":
rc = asyncio.run(scan())
sys.exit(rc)If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.