
Framework di exploit BLE per robot Unitree: l'iniezione di comandi tramite chiavi AES hardcoded consente l'acquisizione remota del controllo, l'iniezione di payload e la propagazione wormabile.

Autore: Bin4ry aka Andreas Makris [[email protected]]
Coautore: h0stile aka Kevin Finisterre
Contributore: legion1581 aka Konstantin Severov di theroboverse ha contribuito a correggere il payload per l'iniezione e lo ha dimostrato con un PoC completamente funzionante 🙂 grazie amico, è stato un contributo fondamentale, davvero molto apprezzato!
Data: 20 settembre 2025
CVE-2025-35027
CVE-2025-60017
CVE-2025-60250
CVE-2025-60251
La ricerca di questo repository è incorporata in un paper che presenta una valutazione sistematica della sicurezza dell'Unitree G1. L'impatto della ricerca non è però limitato al solo G1, bensì all'intera linea di prodotti Unitree a partire dalla serie Go2. Il codice dei robot Unitree più recenti sembra essere un fork del codebase Go2, il che rende specificamente non vulnerabili la linea Go1 e gli altri robot Unitree precedenti al Go2. Tutte le varianti moderne sono comunque attualmente interessate. Unitree non ha ancora rilasciato un advisory che chiarisca l'impatto esatto sull'intera linea di prodotti.
Link al Paper: https://arxiv.org/abs/2509.14139
Titolo: Cybersecurity AI: Humanoid Robots as Attack Vectors
Autori: Víctor Mayoral-Vilches, Andreas Makris, Kevin Finisterre```bibtex
@misc{mayoralvilches2025cybersecurityaihumanoidrobots,
title={Cybersecurity AI: Humanoid Robots as Attack Vectors},
author={Víctor Mayoral-Vilches and Andreas Makris and Kevin Finisterre},
year={2025},
eprint={2509.14139},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2509.14139},
}
Table of Contents
=================
* [Analisi dell'iniezione di comandi nel servizio BLE dei robot Unitree](#unitree-robot-ble-service-command-injection-analysis)
* [Panoramica](#overview)
* [Scoperta dei servizi BLE](#ble-service-discovery)
* [Reverse engineering del protocollo](#reverse-engineering-the-protocol)
* [Istruzione 1: L'handshake "sicuro"](#instruction-1-the-secure-handshake)
* [Istruzione 2: Ottieni il numero di serie](#instruction-2-get-serial-number)
* [Istruzione 3: Inizializza la modalità WiFi](#instruction-3-initialize-wifi-mode)
* [Istruzione 4: Imposta SSID](#instruction-4-set-ssid)
* [Istruzione 5: Imposta la password](#instruction-5-set-password)
* [Istruzione 6: Imposta il codice paese (Il fattore scatenante!)](#instruction-6-set-country-code-the-trigger)
* [Il thread di impostazione WiFi](#the-wifi-setting-thread)
* [La funzione vulnerabile: iniezione di comandi](#the-vulnerable-function-command-injection)
* [Riepilogo del flusso di attacco](#attack-flow-summary)
* [La minaccia wormabile](#the-wormable-threat)
* [Prova di concetto](#proof-of-concept)
* [Implementazione reale & impatto](#real-world-deployment--impact)
* [Implementazioni attuali](#current-deployments)
* [Valutazione dell'impatto](#impact-assessment)
* [Impatto su forze dell'ordine & militari](#law-enforcement--military-impact)
* [Ambienti aziendali](#corporate-environments)
* [Impatto sui consumatori](#consumer-impact)
* [Propagazione wormabile](#wormable-propagation)
* [Dettagli tecnici](#technical-details)
* [Architettura del servizio BLE](#ble-service-architecture)
* [Parametri crittografici](#cryptographic-parameters)
* [Struttura dei pacchetti](#packet-structure)
* [Lezioni apprese](#lessons-learned)
* [Cronologia della divulgazione](#disclosure-timeline)
* [Primo e ultimo tentativo di segnalare un altro problema di sicurezza nei vostri robot di punta G1, Go2 e altri bot](#first-and-last-attempt-to-report-another-security-issue-in-your-flagship-g1-and-go2-and-other-bots)
* [Avvertenza](#disclaimer)
* [Un modello ricorrente di problemi di sicurezza](#a-pattern-of-security-issues)
* [Conclusione](#conclusion)
* [Avviso legale](#legal-notice)
* [Contribuire](#contributing)
* [Licenza e accesso a questi file](#licensing-and-access-to-these-files)
---
## Panoramica
Durante la nostra ricerca sulla sicurezza delle piattaforme robotiche Unitree, abbiamo scoperto una vulnerabilità critica nell'interfaccia di configurazione Wi-Fi Bluetooth Low Energy (BLE). Questa vulnerabilità colpisce diversi modelli di robot Unitree, tra cui i robot delle serie Go2, G1, H1 e B2, fino al firmware più recente di oggi [20 settembre 2025].
**🎯 Questa rappresenta il primo exploit divulgato pubblicamente che prende di mira robot umanoidi!**
La vulnerabilità combina molteplici problemi di sicurezza: chiavi crittografiche hardcoded, bypass banale dell'autenticazione e iniezione di comandi non sanificata. Ciò che rende tutto particolarmente preoccupante è che è completamente **wormabile**: i robot infetti possono compromettere automaticamente altri robot nel raggio BLE. Questa vulnerabilità consente all'attaccante di assumere completamente il controllo del dispositivo.
Abbiamo pubblicato le chiavi crittografiche a luglio [Link al Tweet](https://x.com/Bin4ryDigit/status/1950566849072005304) ma a Unitree non è importato.
Analizziamo i dettagli tecnici di come abbiamo scoperto e sfruttato questa vulnerabilità.
## Scoperta dei servizi BLE
Il primo passo è stato identificare i servizi BLE esposti dai robot. Tutti i modelli Unitree interessati espongono un servizio BLE personalizzato per la configurazione Wi-Fi:```
Service UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
Write Characteristic: 0000ffe2-0000-1000-8000-00805f9b34fb
Notify Characteristic: 0000ffe1-0000-1000-8000-00805f9b34fb
Attraverso il reverse engineering, abbiamo scoperto che il robot implementa un receive manager che elabora i pacchetti BLE crittografati. Ecco cosa abbiamo trovato:

Il receive manager decripta prima i pacchetti in arrivo utilizzando parametri AES hardcoded:```python AES_KEY = "df98b715d5c6ed2b25817b6f2554124a" AES_IV = "2841ae97419c2973296a0d4bdfe19a4f" Mode: AES-CFB128

Dopo la decrittazione, i pacchetti vengono elaborati in base ai codici di istruzione in una struttura switch-case. Esaminiamo ogni istruzione:
## Istruzione 1: L'handshake "sicuro"

L'handshake di "autenticazione" è ridicolmente semplice:


In pratica, il robot controlla che il pacchetto decrittato includa la stringa `"unitree"` come segreto dell'handshake, quindi imposta il flag `valid_incoming_user` a 1. Questo è l'intero meccanismo di "autenticazione"!
## Istruzione 2: Ottieni il numero di serie
