# Unitree Robots Under Fire 🔥

**URL:** <https://community.penthertz.com/t/unitree-robots-under-fire/23>\
**Category:** Research & Techniques\
**Tags:** ble, unitree, robot, rce, hack\
**Created:** [February 27, 2026, 6:07pm UTC](https://community.penthertz.com/t/unitree-robots-under-fire/23 "2026-02-27T18:07:44Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![FlUxIuS](https://community.penthertz.com/user_avatar/community.penthertz.com/fluxius/32/7_2.png) [@FlUxIuS](https://community.penthertz.com/u/FlUxIuS)\
**Post date:** [February 27, 2026, 6:07pm UTC](https://community.penthertz.com/t/unitree-robots-under-fire/23/1 "2026-02-27T18:07:44Z")

</div>

Just before sun come out, I wanted to share some research on Unitree which were funny to read.

 ![Robot ‘goes berserk](https://community.penthertz.com/uploads/default/original/1X/2d46802f230b0e7582e4c5b90003b468905ffc35.jpeg)  
(This animation was chosen for the fun…)

In just a few months, multiple independent research teams have published critical vulnerabilities covering the entire attack surface: from **BLE** to **firmware updates** to **DDS inter-process communication**.

## UniPwn: wormable BLE command injection (Sept 2025)

The researchers found a chain of vulnerabilities in the BLE Wi-Fi configuration service exposed by all affected models:

- **Hardcoded AES-CFB128 keys** : same key and IV across every single device,
- **Trivial authentication** : the “handshake” is just sending the string `"unitree"` encrypted with the known key,
- **Command injection via `system()`**: the Wi-Fi SSID/password fields are passed unsanitized into shell commands with root privileges.

The vulnerability is **wormable**. An infected robot can scan for other Unitree robots in BLE range and compromise them autonomously, creating a self-propagating robot botnet with zero user interaction.

Here you can find the repo: [GitHub - Bin4ry/UniPwn](https://github.com/Bin4ry/UniPwn)

## UniTEABag: firmware encryption broken (Feb 2026)

Following UniPwn, Bin4ry went after the firmware update mechanism. Unitree uses a custom firmware format called **UPK** , encrypted with **TEA** (Tiny Encryption Algorithm): a symmetric cipher from the best years → 1990s “Hack the Planet!”

The problems:

- **Hardcoded key constants** in the OTA binary on the robot itself,
- **Seed stored inside the UPK package** : combined with the constants, anyone can derive the full TEA key,
- **No signature verification** : the robot has no way to distinguish genuine Unitree firmware from a crafted package.

UniTEABag can both decrypt existing firmware (enabling analysis) and encrypt custom firmware that the robot will accept as genuine. Two key generation versions are supported, covering different robot generations.

Repo: [GitHub - Bin4ry/UniTEABag](https://github.com/Bin4ry/UniTEABag)

## DDS-Based RCE: from network packets to RCE (Feb 2026)

 ![olivier_boschko images](https://community.penthertz.com/uploads/default/original/1X/e5720c60a465db43ce395752860473ec54aadcf8.jpeg)

This research targets a completely different attack surface: **DDS** (Data Distribution Service), the publish-subscribe middleware the Go2 uses for internal inter-process communication via Eclipse CycloneDDS.

- **CVE-2026-27509** : On firmware V1.1.7, the `rt/api/programming_actuator/*` DDS topic accepts arbitrary Python code for execution. Since DDS has no authentication in the default configuration, any device on the same network can join domain 0 and publish messages to this topic, achieving **unauthenticated RCE as root**.

- **CVE-2026-27510** : On V1.1.11, the exposed DDS topics were suppressed as a fix. But the researchers found an alternative path: by tampering with the **Blockly** preprogrammed action blocks stored in the Android companion app’s local SQLite database, they could inject code that gets executed when a controller keybinding is pressed — making the RCE persistent.

Link: [Unitree Go2 Robot RCE (CVE-2026-27509 & CVE-2026-27510)](https://boschko.ca/unitree-go2-rce/)
