
Unitreeロボット向けBLEエクスプロイトフレームワーク:ハードコードされたAESキーを介したコマンドインジェクションにより、リモート乗っ取り、ペイロード注入、ワーム型拡散が可能になります。

著者: Bin4ry aka Andreas Makris [[email protected]]
共著者: h0stile aka Kevin Finisterre
寄稿者: legion1581 aka Konstantin Severov(theroboverse より)は、インジェクション用のペイロードの修正を手伝い、完全に動作するPoCでそれを証明してくれました 🙂 ありがとう、これは極めて重要な貢献でした。本当に感謝しています!
日付: 2025年9月20日
CVE-2025-35027
CVE-2025-60017
CVE-2025-60250
CVE-2025-60251
このリポジトリの研究は、Unitree G1 の体系的なセキュリティ評価を示す論文に組み込まれています。しかし、研究の影響は G1 だけに限定されるものではなく、Go2 シリーズ以降の Unitree 製品ライン全体に及びます。新しい Unitree ボットのコードは Go2 コードベースのフォークであるように見え、具体的には Go1 系とその他の Go2 以前の Unitree ボットは脆弱ではありません。しかし、現在のすべての最新型は影響を受けています。Unitree は、製品ライン全体にわたる 正確な 影響を明確にするアドバイザリをまだ公開していません。
論文へのリンク: https://arxiv.org/abs/2509.14139
タイトル: Cybersecurity AI: Humanoid Robots as Attack Vectors
著者: 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},
}
目次
=================
* [Unitree Robot BLE サービスコマンドインジェクション分析](#unitree-robot-ble-service-command-injection-analysis)
* [概要](#overview)
* [BLE サービス探索](#ble-service-discovery)
* [プロトコルのリバースエンジニアリング](#reverse-engineering-the-protocol)
* [命令 1:「安全な」ハンドシェイク](#instruction-1-the-secure-handshake)
* [命令 2:シリアル番号の取得](#instruction-2-get-serial-number)
* [命令 3:WiFi モードの初期化](#instruction-3-initialize-wifi-mode)
* [命令 4:SSID の設定](#instruction-4-set-ssid)
* [命令 5:パスワードの設定](#instruction-5-set-password)
* [命令 6:国コードの設定(トリガー!)](#instruction-6-set-country-code-the-trigger)
* [WiFi 設定スレッド](#the-wifi-setting-thread)
* [脆弱な関数:コマンドインジェクション](#the-vulnerable-function-command-injection)
* [攻撃フローのまとめ](#attack-flow-summary)
* [ワーム化可能な脅威](#the-wormable-threat)
* [概念実証](#proof-of-concept)
* [実世界での展開 & 影響](#real-world-deployment--impact)
* [現在の展開](#current-deployments)
* [影響評価](#impact-assessment)
* [法執行機関 & 軍事的影響](#law-enforcement--military-impact)
* [企業環境](#corporate-environments)
* [消費者への影響](#consumer-impact)
* [ワーム化可能な伝播](#wormable-propagation)
* [技術的詳細](#technical-details)
* [BLE サービスアーキテクチャ](#ble-service-architecture)
* [暗号パラメータ](#cryptographic-parameters)
* [パケット構造](#packet-structure)
* [学んだ教訓](#lessons-learned)
* [開示のタイムライン](#disclosure-timeline)
* [主力の G1、Go2、その他のボットにおける別のセキュリティ問題を報告する最初で最後の試み](#first-and-last-attempt-to-report-another-security-issue-in-your-flagship-g1-and-go2-and-other-bots)
* [免責事項](#disclaimer)
* [セキュリティ問題の傾向](#a-pattern-of-security-issues)
* [結論](#conclusion)
* [法的通知](#legal-notice)
* [貢献](#contributing)
* [ライセンスとこれらのファイルへのアクセス](#licensing-and-access-to-these-files)
---
## 概要
Unitree ロボットプラットフォームに関するセキュリティ調査中に、Bluetooth Low Energy(BLE)Wi-Fi 設定インターフェースに重大な脆弱性を発見しました。この脆弱性は、Go2、G1、H1、B2 シリーズのロボットなど、本日 [2025年9月20日] 時点の最新ファームウェアまでの複数の Unitree ロボットモデルに影響します。
**🎯 これは、人型ロボットを標的とした初の公開エクスプロイトです!**
この脆弱性は、ハードコードされた暗号鍵、簡単な認証バイパス、サニタイズされていないコマンドインジェクションという複数のセキュリティ問題を組み合わせたものです。特に懸念されるのは、完全に **ワーム化可能** であることです。感染したロボットは、BLE 圏内の他のロボットを自動的に侵害できます。この脆弱性により、攻撃者はデバイスを完全に乗っ取ることができます。
私たちは 7 月に暗号鍵を公開しました [ツイートへのリンク](https://x.com/Bin4ryDigit/status/1950566849072005304) が、Unitree は気にしませんでした。
この脆弱性をどのように発見し、悪用したのか、技術的な詳細を見ていきましょう。
## BLE サービス探索
最初のステップは、ロボットが公開している BLE サービスを特定することでした。影響を受けるすべての Unitree モデルは、Wi-Fi 設定用のカスタム BLE サービスを公開しています:```
Service UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
Write Characteristic: 0000ffe2-0000-1000-8000-00805f9b34fb
Notify Characteristic: 0000ffe1-0000-1000-8000-00805f9b34fb
リバースエンジニアリングを通じて、ロボットが暗号化されたBLEパケットを処理する受信マネージャを実装していることを発見しました。以下はその内容です:

受信マネージャはまず、ハードコードされたAESパラメータを使用して受信パケットを復号します:```python AES_KEY = "df98b715d5c6ed2b25817b6f2554124a" AES_IV = "2841ae97419c2973296a0d4bdfe19a4f" Mode: AES-CFB128

復号後、パケットはswitch-case構造内の命令コードに基づいて処理されます。各命令を見ていきましょう。
## 命令1:「セキュアな」ハンドシェイク

ハンドシェイクの「認証」は笑ってしまうほど単純です:


基本的に、ロボットは復号されたパケットにハンドシェイクのシークレットとして文字列 `"unitree"` が含まれているかどうかを確認し、`valid_incoming_user` フラグを1に設定します。これが「認証」メカニズムのすべてです!
## 命令2: シリアル番号を取得

この命令は、ユーザーが「認証」されているか(つまり、フラグが設定されているか)を確認し、シリアル番号ファイルを読み取って返します。これにより、システムにアクセスできることが確認できます。
## 命令3: WiFiモードを初期化
この命令はWiFi設定を初期化します。ユーザーはAPモード(サブコマンド = 1)またはSTAモード(サブコマンド = 2)を選択できます:

## 命令4: SSIDを設定
この命令はWiFi SSIDを保存します。ここが最初のインジェクションポイントです:

## 命令5: パスワードを設定
SSIDコマンドと同様に、これはWiFiパスワードを保存します。もう1つのインジェクションポイントです:

## 命令6: カントリーコードを設定(トリガー!)
この命令はWiFiカントリーコードを設定し、重要なことに、`WifiSettingThreadFunction` をトリガーします:

命令6が実行されると、WiFi設定スレッドが開始され、脆弱な関数へとたどり着きます。
## WiFi設定スレッド
WiFi設定スレッドは、モードに応じて `restart_wifi_ap` または `restart_wifi_sta` を呼び出します:

## 脆弱な関数: コマンドインジェクション
`restart_wifi_ap`(`hostapd_restart.sh`)と`restart_wifi_sta`(`wpa_supplicant_restart.sh`)の両方の関数は、同じ脆弱なパターンに従います。
決定的な証拠はこちらです(`restart_wifi_ap` 関数を例として):

この関数は次のコマンドを構築します:```bash
sudo sh /unitree/module/network_manager/upper_bluetooth/hostapd_restart.sh "wifi_ssid wifi_pass"
このコマンドは、入力検証やサニタイズを一切行わずに、直接 system() に渡されます!
wifi_ssid または wifi_pass のどちらかを制御できるなら、独自のコマンドを注入できます。次のような単純なペイロード:```bash
";$(reboot -f);#
ロボットを再起動するには十分でしょう。しかし、私たちはもっと多くのことができるのです...
## 攻撃フローの概要
実行する必要がある完全な攻撃シーケンスは次のとおりです:
1. 命令1のデータとして、AES暗号化されたペイロード "unitree" を送信する
2. get_sn コマンドを送信し、レスポンスを復号してアクセスを検証する
3. init_wifi をサブコマンド1(AP)または2(STA)で送信する
4. wifi_ssid を `";$(reboot -f);#` のようなインジェクションペイロードに設定する
5. wifi_pass を任意の値に設定する
6. wifi のカントリーコードを設定して脆弱なスレッドをトリガーする
すべてがうまくいけば、ロボットは注入したコマンドを root 権限で実行するはずです。
## ワーム化可能な脅威