
Senza dongle, senza root, strumento di valutazione della sicurezza Bluetooth per auricolari wireless affetti dalla catena di vulnerabilità dell'SDK Airoha (CVE-2025-20700/20701/20702)
Versione 1.0.0
Strumento di valutazione della sicurezza Bluetooth per auricolari wireless affetti dalla
catena di vulnerabilità dell'SDK Airoha (CVE-2025-20700 / CVE-2025-20701 /
CVE-2025-20702). Esegue la scansione dei dispositivi vicini, identifica i chipset
Airoha noti come vulnerabili e verifica l'accesso GATT non autenticato e la
raggiungibilità del protocollo RACE - interamente tramite lo stack Bluetooth del
sistema operativo (BlueZ) attraverso bleak. Non è richiesto alcun dongle Bluetooth
esterno né privilegi di root. I risultati vengono riportati in linguaggio semplice
insieme ai dettagli tecnici, in modo da poter agire senza conoscenze approfondite
del Bluetooth.
Questo strumento è destinato alla valutazione di dispositivi di tua proprietà o per i quali
hai esplicita autorizzazione. Le sonde GATT e RACE sono operazioni attive: si connettono
e inviano comandi al dispositivo target. Non eseguire --gatt, --race, --firmware,
--bd-address, --assess, --baseline, --check-drift o --memory-read
contro un dispositivo che non sia tuo o per il quale non hai ricevuto autorizzazione
per il test. --scan è passivo e si limita ad ascoltare gli annunci già
trasmessi pubblicamente, quindi è sicuro da eseguire su qualsiasi dispositivo nel raggio
d'azione.
--memory-read va oltre le altre sonde attive: recupera una pagina reale, di sola
lettura (256 byte) del contenuto flash effettivo del dispositivo, a un indirizzo fisso,
come conferma definitiva di CVE-2025-20702 quando la sonda --race (solo
raggiungibilità) non ottiene risposta. È di sola lettura (le letture flash non comportano
rischi di usura o danneggiamento, a differenza dei comandi di scrittura/cancellazione/FOTA,
che questo strumento non invia mai), è facoltativa e richiede una propria conferma
separata oltre al prompt standard di proprietà, che descrive esattamente cosa fa prima
di eseguire qualsiasi operazione.
Sondare un dispositivo arbitrario nelle vicinanze non è solo una questione di policy -
può avere effetti collaterali reali. --gatt tenta una lettura o una sottoscrizione di
notifica su ogni caratteristica che trova, e alcuni dispositivi consumer espongono servizi
di tipo provisioning (ad esempio il servizio Fast Pair di Google) che reagiscono avviando
una vera negoziazione di associazione sul dispositivo target, indipendentemente da ciò che
questo strumento richiede esplicitamente. Una caratteristica che richiede crittografia può
innescare la stessa cosa anche contro il tuo stesso dispositivo, poiché BlueZ può instradare
silenziosamente tale richiesta di autenticazione all'agente registrato dal tuo desktop
(ad esempio il prompt di associazione di KDE) - pertanto ogni comando attivo registra anche
un proprio agente BlueZ temporaneo che rifiuta automaticamente qualsiasi richiesta del genere
per la durata della sonda, in modo che non possa apparire alcun prompt di associazione. Ogni
comando attivo richiede comunque una conferma che l'indirizzo target sia tuo prima di fare
qualsiasi cosa via radio; passa --yes per saltare il prompt nell'uso scriptato, una volta
che hai già confermato che il dispositivo è tuo:
buds_audit.py --assess --target AA:BB:CC:DD:EE:FF --yes
--watch è passivo, come --scan - si limita ad ascoltare gli annunci già
trasmessi e non si connette mai a nulla, quindi non richiede conferma.
python3 -m venv venv
venv/bin/pip install -r requirements.txt
Richiede Python 3.10+ (sviluppato con 3.14) e un sistema Linux con BlueZ e un adattatore Bluetooth acceso.
Solo Linux, e non automaticamente tutti i sistemi Linux:
bleak ha un backend Windows, ma
questo strumento non si basa solo su bleak - la scoperta Bluetooth Classic
(core/scanner.py) e i controlli dello stato di associazione (core/gatt.py)
utilizzano direttamente bluetoothctl, un'interfaccia a riga di comando
specifica di BlueZ che non esiste su Windows. Quei percorsi di codice
fallirebbero semplicemente con "comando non trovato."bluetoothctl nel PATH, non solo un kernel Linux
qualsiasi. La maggior parte delle distribuzioni desktop lo include; un'immagine
server o minimale senza il pacchetto bluez installato non lo avrà
preinstallato. Verificato senza root su BlueZ 5.86 - altre versioni
dovrebbero funzionare allo stesso modo poiché bleak si rivolge all'API
D-Bus standard di BlueZ, ma non è stato verificato indipendentemente.usbipd-win, che inoltra solo adattatori
collegati via USB. La maggior parte dei Bluetooth integrati nei laptop è
collegata tramite bus non USB (SDIO/PCIe, insieme al Wi-Fi), che usbipd-win
generalmente non può inoltrare - quindi tutto dipende dall'hardware specifico.Non hai bisogno di una macchina Linux tua - ti serve solo Linux con accesso reale a un chip Bluetooth. Due modi pratici per ottenerlo:
In entrambi i casi, la regola è la stessa: lo strumento in sé è invariato - ha solo bisogno di Linux con un adattatore Bluetooth che BlueZ possa realmente raggiungere.
Molti auricolari TWS smettono di annunciarsi (e chiudono qualsiasi connessione attiva) dopo un periodo di inattività per risparmiare energia, e alcuni si spengono completamente da soli. Se una scansione non trova un dispositivo che aveva trovato un minuto prima, o una sonda fallisce a metà, di solito è perché gli auricolari sono andati in idle, non è un bug - tirali fuori dalla custodia o premi di nuovo il pulsante di associazione e riprova.