跳到主要内容

十米内不配对直接拿下root:宇树G1人形机器人UniBLEed五连漏洞链全复盘——无需配对的蓝牙、云端解密预言机、让机器人自己走进攻击者热点的蠕虫式攻击,人形机器人安全的第一课

Public
十米内不配对直接拿下root:宇树G1人形机器人UniBLEed五连漏洞链全复盘——无需配对的蓝牙、云端解密预言机、让机器人自己走进攻击者热点的蠕虫式攻击,人形机器人安全的第一课

2026年8月27日,安全研究者Olivier Laflamme(Boschko)公开了针对宇树(Unitree)G1 EDU人形机器人的完整漏洞研究,代号UniBLEed。两个CVE——CVE-2026-76639与CVE-2026-76640——共同指向同一个结论:站在机器人十来米范围内、手里拿着一台笔记本或手机的陌生人,可以不配对、不认证、不接触设备本体,直接在机器人负责运动控制的Linux计算机上拿到root权限的代码执行。控制了这台被称为Locomotion PC的计算机,就意味着控制了机器人的行走、摄像头、麦克风、扬声器和几乎所有外设。

更值得警惕的是研究者对这条攻击链的定性:蠕虫式传播(wormable)。一台被攻陷的G1可以携带同样的攻击载荷去感染蓝牙范围内的下一台G1,如此往复。机器人安全领域讨论多年的"人传人"感染场景,第一次有了完整、经过厂商验证的攻击链样本。

背景:一台被当作"工资"送来的机器人

这项研究的起点颇有些特别。Laflamme此前与搭档Ruikai发布了针对宇树机器狗Go2的研究(CVE-2026-27509、CVE-2026-27510),披露过程中与宇树安全团队建立了良好的协作关系——作为对研究的致谢,宇树直接给他寄了一台价值约2万美元的G1 EDU。研究者公开感谢厂商送机器人,这在机器人行业几乎闻所未闻,而后续的披露过程也证明这确实是一次良性的厂商-研究者互动。

被研究的对象本身正处在高光时刻。宇树2026年8月6日在科创板挂牌(股票代码688836),发行价150.80元,上市首日收盘暴涨460%至845元,市值一度站上约3400亿元人民币;DeepSeek还作为战略投资者参与了认购。你可以在亚马逊下单,一周之内一台人形机器人就会站在你家客厅里。资本市场的热情与渗透率的加速,恰恰是这类研究最合时宜的注脚:出货量越大,"每一台都该被当作攻击面"就越不是杞人忧天。

顺带一提,Laflamme特别强调这些漏洞是"100%人工发现"——在AI辅助研究盛行的当下这个声明本身也是故事的一部分,后文会回到这个有趣的细节。

前传:这不是宇树机器人第一次被"开门"

UniBLEed并非孤立的偶然事件,它是同一条研究脉络的第二季。前作(代号UniPwn)针对宇树机器狗Go2,核心发现是机器人内部基于DDS(数据分发服务)的通信完全不做参与者认证:CycloneDDS的Domain 0上没有主题白名单、没有身份校验,任何能触达该网络的参与者都能收发全部控制指令。今年9月一篇后续论文进一步披露,宇树多款机型(G1、H1、R1,同样适用于Go2、B2)的BLE配网接口存在命令注入——Wi-Fi配置协议对SSID和密码字段不做任何净化,攻击者可以用;$(command);#的模式直接注入shell命令,且所有BLE流量用一个写死在固件里的静态AES密钥(df98b715d5c6ed…)加密。宇树软件栈的模块复用意味着同一类缺陷会在不同产品线之间迁徙:BLE配网代码、chat_go、bashrunner这些组件在Go2与G1上是同一套。这也是为什么本次研究虽然只在G1上验证,却对所有共享软件栈的机型敲响了警钟——研究者自己也谨慎地声明,他没有把"软件栈相似"直接等同于"全部受影响",但购买了相关机型的用户没有理由赌自己不在射程内。

RCE #1(CVE-2026-76639):AI聊天服务里的路径遍历

第一条独立的root执行链由三个缺陷组合而成,起点是机器人上运行的AI语音聊天服务chat_go

这个服务提供知识库上传功能,供用户给机器人的对话能力补充资料。问题在于上传接口存在路径遍历:攻击者可以把任意文件写到机器人文件系统的预期目录之外——具体来说,是写到另一个服务bashrunner所信任的白名单目录里。

bashrunner的设计本身也值得玩味。它维护一份脚本白名单,导入时用os.listdir()做一次性白名单构建,之后对白名单内的文件执行时又是不区分扩展名的sh调用。三个特性叠加的结果:只要能把文件放进那个目录(路径遍历正好能做到),再等服务重启(白名单重建),攻击者的文件就会被以root身份执行。

这条链的入口门槛是需要能访问机器人的内部网络(以太网或机器人自带的AP模式),因此常被看作"内部网络条件下的root shell"。但正如我们将看到的,它后来成了第二条链的垫脚石。

RCE #2(CVE-2026-76640):五连击的教科书级攻击链

真正让这项研究载入史册的是这条跨越蓝牙、云端API、Wi-Fi配置与固件内存布局的五阶段攻击链。逐步拆解:

第一击:无需配对的GATT写入。G1的蓝牙服务暴露了一个标识为0xFFE2的GATT特征,注册时只带了裸的WRITE权限——附近任何BLE客户端都可以直接向它写入数据,不需要完成蓝牙配对。这违反了BLE安全的一个基本设计预期:可写特征应当要求链路加密(配对产生的LTK)。明文的引导操作码0xF2会让机器人返回一个加密的引导数据包,其中包含恢复设备AES-128密钥所需的材料——但这份材料本身被RSA包裹着。

第二击:云端解密预言机。这是整条链中最有普适教训的一环。宇树的云端接口/device/bindExtData本来是合法的"解密并绑定"功能:用RSA-OAEP-SHA256加密的密钥数据加上机器人序列号,换回设备的AES-128明文密钥。问题在于,这个接口只验证调用者是不是一个合法的Unitree账户,从不验证这个账户是否拥有该序列号对应的机器人。注册一个免费账号,把从附近G1蓝牙上抓来的加密响应包和机身序列号提交上去,云端就会把那台机器人的专属AES密钥吐给你。

这是教科书级的授权失败(authorization failure),而非认证失败——API忠诚地信任了"一个真实用户",却忘了问"这是你的机器人吗"。任何多租户云API设计者都该把这个案例裱起来。

第三击:heredoc注入,让机器人自己走向攻击者。拿到AES密钥后,攻击者可以完成蓝牙应用层握手(AES v3),进而调用Wi-Fi配置操作码。Wi-Fi配置脚本wpa_connect.sh在处理超长密码(121字节的PSK)时会退回到不安全的手动配置路径,其中未转义的数据会经由一个未加引号的heredoc进入生成的wpa_supplicant配置。攻击者借此注入额外的网络块——效果是机器人主动加入攻击者控制的热点。注意这一步的修辞学意义:不是攻击者闯进了机器人的网络,而是机器人自己走进了攻击者的网络。

第四击:泄露进程内存布局。站上同一网络后,攻击者使用CVE-2026-76639那条chat_go链(外加读取/proc/<pid>/maps的路径遍历),泄露蓝牙服务btgatt-server这个PIE二进制的加载基址——为最后一步的内存破坏做地址准备。

第五击:1050字节打穿500字节缓冲区。回到蓝牙:Wi-Fi SSID处理程序把收到的数据拷贝进一个500字节的缓冲区,却没有正确校验总接收量。攻击者通过一条或多条蓝牙连接发送1050字节的载荷,溢出覆盖相邻的BSS内存——精确改写事件循环的清理结构,伪造一个mainloop的清理条目。当事件循环退出进入清理流程时,它会按伪造的结构调用system(command)——以root身份。随后进程在试图free一个伪造的BSS条目时崩溃,但后台shell已经在崩溃前活了下来。一次溢出,一个root shell,进程崩溃甚至成了掩护。

蠕虫式传播:机器人安全的"人传人"时刻

Laflamme对这条链最重的一个定性是wormable:拿下第一台G1后,攻击载荷可以由这台机器人向蓝牙范围内的下一台G1发起同样的攻击,如此级联。出于谨慎,他只在同一房间的两台机器人之间做了验证(整项研究在四台G1上复现),没有展开更大规模的传播实验——但技术上没有任何东西阻止这个链条继续延伸。

这个场景之所以比传统蠕虫更值得警惕,在于感染介质的物理移动能力。一段恶意代码在一台G1上运行时,它控制的不是一个被动的主机,而是一台能自己走路、能在人群中穿梭、自带摄像头和麦克风的机器人。想象一个机器人展览、一场商演、一个机器人格斗赛事的现场——数十台同型号设备密集分布,每台之间的蓝牙距离不过几米。历史经验告诉我们,蠕虫在密集同质化环境中的传播曲线(参考2016年Mirai对IoT设备的大规模收割)从来不是线性的。

物理世界的杀伤半径

对服务器而言,root RCE意味着数据泄露与服务中断。对机器人而言,同样的权限直接映射到物理世界:

  • 监控窃听:Locomotion PC直接控制摄像头、麦克风与扬声器,被控机器人就是一台会自主走位的移动监听站,还能合成语音进行社工攻击;
  • 物理动作:运动控制系统完全沦陷后,机器人可以被指令执行任意动作——G1是一款能做格斗动作、能负载数十公斤的1.3米级人形机器人;
  • 持久驻留:机器人天然具备"合法存在于物理空间"的身份,一台被控机器人停在大厅角落充电,没有人会像对一台陌生笔记本那样起疑;
  • 横向跳板:机器人接入的家庭/企业Wi-Fi网络是它的第二落点,root权限让攻击者以机器人为跳板继续渗透内网。

AI注脚:模型找得到每一个漏洞,却串不起那条链

研究过程中有个耐人寻味的细节。Laflamme用DeepSeek-v4-pro做了个实验:在给出充足上下文、工具链(包括Binary Ninja MCP)与指引的前提下,模型独立发现了RCE #1的完整攻击链和RCE #2链中的每一个漏洞,还额外找到了27个研究者本人漏掉的疑似漏洞。但它始终无法独立把BLE部分串成一个可用的完整利用。

这个对照本身就是2026年安全行业的一则寓言:AI在"发现单点缺陷"上已经展现出超越人类耐心的能力,但把跨域缺陷(蓝牙协议栈、云API授权、shell脚本转义、二进制内存布局)组装成一条有物理世界效果的攻击链,目前仍是人类研究员的领地。至少这一次是。

赏金、评级与披露文化

这次披露也暴露了机器人行业漏洞赏金体系的稚嫩。两条链最终合计支付5000美元(BLE链4000美元、chat_go链1000美元),研究者直言"有点轻"。问题出在评级框架:宇树的Critical等级按定义几乎无法达到,而赏金结构没有预料到一条链会横跨移动端、云端与蓝牙三个本应分属不同赏金档位的攻击面——最终按"结果"而非"零件"定价。研究者的态度仍然克制:他强调宇树团队响应迅速、修复认真,这些复杂bug的修复难度是真实的,而且行业里大多数机器人公司压根不招安全工程师——宇树至少有一个真正响应的安全团队和公开的报送渠道(security.unitree.com)。

时间线也值得记录:4月29日G1到手,5月8日拿下RCE #1,5月21日发现云端解密预言机,6月25日五连击全链贯通,7月初宇树上线账号-机器人归属绑定校验(先于公开披露修复了关键一环),8月6日赏金到账,8月27日研究公开。披露时宇树已对绝大多数乃至全部问题完成或内部完成了修复。

行动清单

  1. 立即升级固件与App:所有G1(以及共享软件栈的Go2、H1、B2等型号)用户安装最新固件与移动端更新——云端归属校验与蓝牙侧修复均已包含在内;
  2. 管住蓝牙的物理半径:在不可信环境(展会、赛事、公共场所)中禁用BLE或物理遮蔽天线。本次攻击链的起点是十米内不配对即可写入——把攻击者挡在半径之外是最便宜的防御;
  3. 隔离机器人网络:机器人接入的Wi-Fi应与企业敏感系统隔离。记住第三击的教训:机器人可能"自己走进"攻击者的热点,再变成内网跳板;
  4. 审查云API的授权模型:如果你开发多租户/多设备云服务,逐个端点自问一句——这个接口验证了"用户拥有这台设备"吗?认证通过不等于授权正确,这是本次事件最便宜也最致命的一课;
  5. 对BLE设备做配对审计:用nRF Connect等工具扫描自家电车、门锁、机器人等BLE设备,确认可写特征是否要求加密链路。裸WRITE权限在2026年已经不能算"低风险设计瑕疵";
  6. 建立机器人资产台账:企业部署的每一台机器人都该像一台服务器一样入册——型号、固件版本、网络位置、责任人。机器人是会走路的IT资产,但大多数企业的CMDB还没学会数它们。

UniBLEed的意义不在于宇树做错了什么——说实话,在一家快速扩张的机器人公司里,这些bug组合起来出现的概率并不低,而他们的响应速度在行业里已属第一梯队。真正的意义在于它是人形机器人时代的第一份完整"临床病历":当机器人走进千家万户、走进商场与工厂,"附近十米内的陌生人"第一次成为一个需要认真对待的威胁模型。物理世界与网络世界的边界,正在以一台2万美元机器人的步速,向我们走来。

命令注入缓冲区溢出安全研究移动安全宇树UnitreeG1人形机器人机器人安全UniBLEedCVE-2026-76640CVE-2026-76639蓝牙安全BLE安全GATT漏洞研究蠕虫传播物联网安全物理安全Root RCE漏洞赏金固件安全授权缺陷
0