blog

Auditing Headphone Security Without Extra Hardware: Introducing buds-audit

buds-audit is an open source tool that checks wireless earbuds for the Airoha SDK Bluetooth vulnerability chain (CVE-2025-20700/20701/20702) using your computer's built-in Bluetooth adapter, no external dongle required.

Photo illustration of wireless earbuds and their case on a desk, with a holographic BUDS-AUDIT security assessment overlay reading Security Assessment: Scan Complete and Heuristic Analysis: Checking Vulnerability, projected from a smartphone, beside a Spiritual Machines desk nameplate.

When security researchers disclosed the Airoha SDK vulnerability chain — CVE-2025-20700, CVE-2025-20701, and CVE-2025-20702 — affecting a wide range of wireless earbuds, I was deeply concerned about whether my own daily-driver earbuds were exposed.

The original research published a method to check for these flaws, but it required specialized external Bluetooth dongles and hardware adapters. To make this kind of check accessible to anyone with an ordinary laptop, I built buds-audit.

Why buds-audit Was Built

  • No External Dongle Needed: buds-audit talks to your device's built-in Bluetooth adapter through the standard Linux Bluetooth stack (BlueZ), instead of requiring specialized RF hardware.
  • Targeted CVE Checks: It fingerprints known-affected Airoha chipsets from nearby advertisements, then runs a targeted probe for each CVE in the chain — unauthenticated GATT access (CVE-2025-20700), a firmware/pairing-bypass check (CVE-2025-20701), and RACE-channel reachability (CVE-2025-20702) — so you get a concrete answer per vulnerability instead of a vague risk score.
  • Accessible Risk Assessment: Results are reported in plain language alongside the technical detail, so you don't need deep Bluetooth expertise to act on them.

Basic Usage

  1. Clone the repository
    git clone https://github.com/SpiritualMachines/buds-audit.git
    cd buds-audit
  2. Install dependencies
    python3 -m venv venv
    venv/bin/pip install -r requirements.txt

    Requires Python 3.10+ and a Linux system running BlueZ with a powered-on Bluetooth adapter. Windows isn't supported directly — some checks shell out to bluetoothctl, a BlueZ-only tool — but a Fedora live USB or VM works fine; see the repo's README for the details.

  3. Run it
    venv/bin/python buds_audit.py

    With no flags, it opens a numbered menu — full analysis, check against a saved baseline, or scan for spoofed devices — so you don't need to already know a device address or which flag to pass.

  4. Read the results

    Every active check (anything beyond a passive scan) asks you to confirm the target is a device you own or have permission to test before it touches the radio at all.

Check Your Headphones

The project is open source and available on GitHub. Contributions, issues, and feature requests are welcome.