LeRobot 高危漏洞讓機器人伺服器暴露於未認證 RCE

Hugging Face 的開源機器人框架 LeRobot 被發現一個嚴重遠端程式碼執行漏洞:只要攻擊者能連到服務連接埠,就可能在沒有使用者名稱、密碼或憑證的情況下接管機器。漏洞編號是 CVE-2026-25874。

漏洞出在哪裡

LeRobot 的常見架構是把訓練好的策略模型放在 GPU 伺服器上執行,前端機器人透過 gRPC 呼叫 PolicyServer 取得動作指令。這個設計本身不是問題;危險點在通信層,服務端對傳入資料使用 Python 的 pickle.loads()

pickle 不是 JSON 或 protobuf 這類被動資料格式。它在反序列化過程中可以重建任意 Python 物件並觸發邏輯,甚至導向命令執行。這次中招的 RPC handler 是 SendPolicyInstructions()SendObservations(),兩者都接收原始位元組,且未做型別檢查就直接交給 pickle。

因此,攻擊者只要送出內嵌 os.system() 呼叫的 payload,伺服器在反序列化瞬間就可能執行命令。風險還被預設設定放大:PolicyServer 使用 add_insecure_port() 啟動,沒有 TLS,也沒有認證。即使放在內網,只要網路可達就能被攻擊。

為什麼機器人場景更危險

已確認受影響版本是 PyPI 發布的 LeRobot v0.4.3;只要早期版本仍使用同一套非同步推論架構,也很可能受到影響。LeRobot 在 GitHub 上已有超過 21,500 個 star,是開源機器人領域最受關注的專案之一;截至文章發布時,官方尚未釋出修正版。

攻破 PolicyServer 拿到的不是普通應用伺服器。這類系統常以較高權限跑在 GPU 機器上,旁邊放著資料集和模型權重,還直接連著實體機器人硬體。若部署在產線或醫療機器人環境,問題就不只是資料安全,而是可能觸及物理安全。

團隊現在該怎麼做

研究員建議改用 JSON、protobuf 原生欄位或 Hugging Face 的 safetensors 取代 pickle;以 secure gRPC port 啟用 TLS;把服務綁定到私有介面;用防火牆封住連接埠;在真正修補版本出現前停止暴露 PolicyServer。這些都是降低風險的緩解措施,根本修復仍要等待 Hugging Face 發布新版。

這件事也呼應幾年前 PyTorch model 檔案的漏洞。機器學習社群長期使用 pickle,因為它快速、方便,且生態已經習慣。但當模型檔、策略指令或觀測通道涉及外部輸入,這種便利就會變成實際的程式碼執行面。

參考來源: CocoLoop, 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)