
Эксплойт-фреймворк BLE для роботов Unitree: инъекция команд через жёстко прописанные AES-ключи обеспечивает удалённый захват управления, внедрение пейлоада и червеобразное распространение.

Автор: Bin4ry aka Andreas Makris [[email protected]]
Соавтор: h0stile aka Kevin Finisterre
Участник: legion1581 aka Konstantin Severov из theroboverse помог исправить полезную нагрузку для инъекции и доказал это полностью рабочим PoC 🙂 спасибо, чувак, это был критически важный вклад, очень ценим!
Дата: 20 сентября 2025 года
CVE-2025-35027
CVE-2025-60017
CVE-2025-60250
CVE-2025-60251
Исследование из этого репозитория включено в статью, в которой представлена систематическая оценка безопасности Unitree G1. Однако влияние исследования НЕ ограничивается только G1, а распространяется на всю линейку продуктов Unitree, начиная с серии Go2. Код на более новых роботах Unitree, по-видимому, является форком кодовой базы Go2, что делает линейку Go1 и другие роботы Unitree до Go2 не уязвимыми. Однако на данный момент затронуты все современные варианты. 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},
}
Оглавление
=================
* [Анализ инъекции команд в BLE-сервисе роботов Unitree](#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: Инициализация режима Wi-Fi](#instruction-3-initialize-wifi-mode)
* [Инструкция 4: Установка SSID](#instruction-4-set-ssid)
* [Инструкция 5: Установка пароля](#instruction-5-set-password)
* [Инструкция 6: Установка кода страны (триггер!)](#instruction-6-set-country-code-the-trigger)
* [Поток настройки Wi-Fi](#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 мы обнаружили критическую уязвимость в интерфейсе настройки Wi-Fi через Bluetooth Low Energy (BLE). Эта уязвимость затрагивает несколько моделей роботов Unitree, включая роботов серий Go2, G1, H1 и B2, вплоть до последней прошивки на сегодняшний день [20 сентября 2025].
**🎯 Это первый публично раскрытый эксплойт, нацеленный на гуманоидных роботов!**
Уязвимость сочетает в себе несколько проблем безопасности: жёстко зашитые криптографические ключи, тривиальный обход аутентификации и несанитизированную инъекцию команд. Что делает эту ситуацию особенно тревожной, так это то, что она полностью **самораспространяющаяся** — заражённые роботы могут автоматически компрометировать других роботов в пределах радиуса действия BLE. Эта уязвимость позволяет атакующему полностью захватить контроль над устройством.
Мы опубликовали криптографические ключи в июле [Ссылка на твит](https://x.com/Bin4ryDigit/status/1950566849072005304), но Unitree не обратила на это внимания.
Давайте углубимся в технические детали того, как мы обнаружили и использовали эту уязвимость.
## Обнаружение BLE-сервисов
Первым шагом было определение BLE-сервисов, доступных на роботах. Все затронутые модели Unitree предоставляют пользовательский BLE-сервис для настройки Wi-Fi:```
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