
BLE-Exploit-Framework für Unitree-Roboter: Command Injection über hartcodierte AES-Schlüssel ermöglicht Remote-Übernahme, Payload-Injektion und wurmartige Verbreitung.

Autor: Bin4ry aka Andreas Makris [[email protected]]
Co-Autor: h0stile aka Kevin Finisterre
Mitwirkender: legion1581 aka Konstantin Severov von theroboverse trug dazu bei, den Payload für die Injection zu korrigieren, und bewies ihn mit einem voll funktionsfähigen PoC 🙂 Danke Kumpel, das war ein entscheidender Beitrag, sehr geschätzt!
Datum: 20. September 2025
CVE-2025-35027
CVE-2025-60017
CVE-2025-60250
CVE-2025-60251
Die Forschung aus diesem Repo ist in ein Paper eingearbeitet, das eine systematische Sicherheitsbewertung des Unitree G1 präsentiert. Die Auswirkung der Forschung ist jedoch NICHT auf den G1 beschränkt, sondern erstreckt sich auf die gesamte Unitree-Produktlinie, beginnend mit der Go2-Serie. Der Code neuerer Unitree-Roboter scheint ein Fork der Go2-Codebasis zu sein, was insbesondere die Go1-Linie und andere Unitree-Roboter vor der Go2 nicht verwundbar macht. Alle modernen Varianten sind jedoch derzeit betroffen. Unitree hat noch kein Advisory veröffentlicht, das die genaue Auswirkung auf die gesamte Produktlinie klärt.
Link zum Paper: https://arxiv.org/abs/2509.14139
Titel: Cybersecurity AI: Humanoid Robots as Attack Vectors
Autoren: 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},
}
Inhaltsverzeichnis
=================
* [Unitree Robot BLE Service Command Injection Analysis](#unitree-robot-ble-service-command-injection-analysis)
* [Übersicht](#overview)
* [Erkennung des BLE-Dienstes](#ble-service-discovery)
* [Reverse Engineering des Protokolls](#reverse-engineering-the-protocol)
* [Instruktion 1: Der „sichere“ Handshake](#instruction-1-the-secure-handshake)
* [Instruktion 2: Seriennummer abrufen](#instruction-2-get-serial-number)
* [Instruktion 3: WLAN-Modus initialisieren](#instruction-3-initialize-wifi-mode)
* [Instruktion 4: SSID festlegen](#instruction-4-set-ssid)
* [Instruktion 5: Passwort festlegen](#instruction-5-set-password)
* [Instruktion 6: Ländercode festlegen (Der Auslöser!)](#instruction-6-set-country-code-the-trigger)
* [Der WLAN-Konfigurations-Thread](#the-wifi-setting-thread)
* [Die verwundbare Funktion: Befehlsinjektion](#the-vulnerable-function-command-injection)
* [Zusammenfassung des Angriffsablaufs](#attack-flow-summary)
* [Die Wurm-Bedrohung](#the-wormable-threat)
* [Proof of Concept](#proof-of-concept)
* [Einsatz & Auswirkungen in der Praxis](#real-world-deployment--impact)
* [Aktuelle Einsätze](#current-deployments)
* [Auswirkungsanalyse](#impact-assessment)
* [Auswirkungen auf Polizei & Militär](#law-enforcement--military-impact)
* [Unternehmensumgebungen](#corporate-environments)
* [Auswirkungen auf Verbraucher](#consumer-impact)
* [Wurmartige Verbreitung](#wormable-propagation)
* [Technische Details](#technical-details)
* [Architektur des BLE-Dienstes](#ble-service-architecture)
* [Kryptografische Parameter](#cryptographic-parameters)
* [Paketstruktur](#packet-structure)
* [Erkenntnisse](#lessons-learned)
* [Offenlegungszeitplan](#disclosure-timeline)
* [Erster und letzter Versuch, ein weiteres Sicherheitsproblem in Ihren Flaggschiffen G1 und Go2 sowie anderen Bots zu melden](#first-and-last-attempt-to-report-another-security-issue-in-your-flagship-g1-and-go2-and-other-bots)
* [Haftungsausschluss](#disclaimer)
* [Ein Muster von Sicherheitsproblemen](#a-pattern-of-security-issues)
* [Fazit](#conclusion)
* [Rechtlicher Hinweis](#legal-notice)
* [Mitwirken](#contributing)
* [Lizenzierung und Zugriff auf diese Dateien](#licensing-and-access-to-these-files)
---
## Übersicht
Während unserer Sicherheitsforschung an Unitree-Roboterplattformen haben wir eine kritische Schwachstelle in der Bluetooth-Low-Energy-(BLE)-WLAN-Konfigurationsschnittstelle entdeckt. Diese Schwachstelle betrifft mehrere Unitree-Robotermodelle, darunter die Baureihen Go2, G1, H1 und B2, bis zur neuesten Firmware von heute [20. September 2025].
**🎯 Dies ist der erste öffentlich offengelegte Exploit, der humanoide Roboter angreift!**
Die Schwachstelle kombiniert mehrere Sicherheitsprobleme: hartkodierte kryptografische Schlüssel, trivialer Authentifizierungs-Bypass und unsanitisierte Befehlsinjektion. Besonders besorgniserregend ist, dass sie vollständig **wurmartig** ist - infizierte Roboter können automatisch andere Roboter in BLE-Reichweite kompromittieren. Diese Schwachstelle ermöglicht es dem Angreifer, die Kontrolle über das Gerät vollständig zu übernehmen.
Wir haben die kryptografischen Schlüssel im Juli veröffentlicht [Link zum Tweet](https://x.com/Bin4ryDigit/status/1950566849072005304), aber Unitree hat das ignoriert.
Tauchen wir ein in die technischen Details, wie wir diese Schwachstelle entdeckt und ausgenutzt haben.
## Erkennung des BLE-Dienstes
Der erste Schritt bestand darin, die von den Robotern bereitgestellten BLE-Dienste zu identifizieren. Alle betroffenen Unitree-Modelle stellen einen eigenen BLE-Dienst für die WLAN-Konfiguration bereit:```
Service UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
Write Characteristic: 0000ffe2-0000-1000-8000-00805f9b34fb
Notify Characteristic: 0000ffe1-0000-1000-8000-00805f9b34fb
Durch Reverse Engineering haben wir herausgefunden, dass der Roboter einen Empfangsmanager implementiert, der verschlüsselte BLE-Pakete verarbeitet. Hier ist, was wir gefunden haben:

Der Empfangsmanager entschlüsselt eingehende Pakete zunächst mithilfe fest codierter AES-Parameter:```python AES_KEY = "df98b715d5c6ed2b25817b6f2554124a" AES_IV = "2841ae97419c2973296a0d4bdfe19a4f" Mode: AES-CFB128

Nach der Entschlüsselung werden die Pakete anhand der Anweisungscodes in einer Switch-Case-Struktur verarbeitet. Schauen wir uns jede Anweisung an:
## Anweisung 1: Der „sichere“ Handshake

Die „Authentifizierung“ des Handshakes ist lachhaft einfach:


Im Grunde prüft der Roboter, ob das entschlüsselte Paket die Zeichenkette `"unitree"` als Handshake-Geheimnis enthält, und setzt dann das Flag `valid_incoming_user` auf 1. Das ist der gesamte „Authentifizierungsmechanismus“!
## Anweisung 2: Seriennummer abrufen
