21500星的开源机器人框架被发现严重漏洞:pickle反序列化、攻击者直接拿走机器人控制权

Hugging Face 的开源机器人框架 LeRobot 被发现一个严重远程代码执行漏洞,任何能连到服务端口的攻击者都能直接接管你的机器——不用用户名、不用密码、不用证书。

CVE 编号是 CVE-2026-25874

漏洞具体长什么样

LeRobot 的架构是这样的:训练好的策略模型放在一台 GPU 服务器上跑,前端机器人通过 gRPC 调用 PolicyServer 拿动作指令。这套设计本身没问题,问题出在通信层用了 Python 的 pickle.loads()

熟悉 Python 安全的应该立刻警觉——pickle 反序列化不是数据格式,是任意代码执行的同义词。它能在反序列化过程中调用 __reduce__()、运行任意函数。Resecurity 报告里有句话讲得很直白:

“Unlike passive formats such as JSON or protobuf, pickle can reconstruct arbitrary Python objects and execute logic during the loading process.”

具体到代码层,两个 RPC handler 中招:

  • SendPolicyInstructions()
  • SendObservations()

这俩都接收原始字节、直接 pickle.loads,完全没做类型校验。攻击者构造一个嵌入了 os.system() 调用的 pickle payload 发过去,反序列化的瞬间命令就执行了。

更糟的是,PolicyServer 默认用 add_insecure_port() 启动——没 TLS、没认证。哪怕是放在内网里,只要网络可达就能打。

受影响范围有多大

  • 确认受影响版本:LeRobot v0.4.3(PyPI 官方发布)
  • 早期版本里只要还是这套异步推理架构,大概率也中招
  • LeRobot 在 GitHub 上 超过21500个 star,是开源机器人领域最热的项目之一
  • 目前官方还没发布补丁

为什么这个特别恐怖?因为 LeRobot 跑的环境是这样的:

  • GPU 服务器,通常以 root 或高权限运行
  • 直接连接物理机器人硬件
  • 在公司内网里,能横向移动到别的机器
  • 数据集、模型权重都在同一台机器上

打穿 PolicyServer 的攻击者拿到的不是一台普通服务器,是 一整套机器人系统的控制权——包括能让机械臂做奇怪动作的能力。如果是产线上的机器人或医疗机器人,这就不只是数据安全问题了。

怎么办

研究员给的临时缓解方案:

  1. 把 pickle 换掉:用 JSON、protobuf 原生字段、或 Hugging Face 自家的 safetensors
  2. 启用 TLS:把 add_insecure_port() 改成 add_secure_port()
  3. 加认证层:在 gRPC 拦截器里塞 token 校验、mTLS、JWT 都行
  4. 网络隔离:PolicyServer 只允许内网信任 IP 访问
  5. 跑非 root:用容器隔离,加上 AppArmor / SELinux

但这些都是绕开漏洞,不是补漏洞。真正的修复要等 Hugging Face 出新版本

这事的更大启示

LeRobot 这个事件让人想起几年前 PyTorch 的 model 文件漏洞——也是 pickle 反序列化,也是开源 AI 项目,也是 大家都默认这种架构没问题

机器学习社区有个长期习惯:训练数据、模型权重、策略文件——全用 pickle 存。因为快、因为方便、因为生态都这么用。但一旦这些文件、这些通信链路涉及到外部输入,pickle 就成了定时炸弹。

LeRobot 这次中招也不是巧合。机器人比纯软件多了一个物理层,攻击者拿到代码执行权后能做的事比单纯偷数据严重得多。

如果你团队在生产环境跑 LeRobot,这个周末别等了。

参考来源:CVE-2026-25874: Hugging Face LeRobot Unauthenticated RCE via Pickle Deserialization (Resecurity);Critical CVE-2026-25874 Leaves Hugging Face LeRobot Open to Unauthenticated RCE (The Hacker News)