Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Unauthenticated, low-complexity pickle deserialization over an open gRPC channel yields full code execution, so AV:N/AC:L/PR:N/UI:N with complete C/I/A impact; scope unchanged as the compromised process is the target.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
4DescriptionCVE.org
LeRobot contains an unsafe deserialization vulnerability in the async inference pipeline where pickle.loads() is used to deserialize data received over unauthenticated gRPC channels without TLS in the policy server and robot client components. An unauthenticated network-reachable attacker can achieve arbitrary code execution on the server or client by sending a crafted pickle payload through the SendPolicyInstructions, SendObservations, or GetActions gRPC calls.
AnalysisAI
Unauthenticated remote code execution in HuggingFace LeRobot (versions 0 through 0.5.1) stems from pickle.loads() being called on attacker-controlled bytes received over the async inference gRPC pipeline, which runs without authentication or TLS. Any network-reachable attacker can execute arbitrary code on either the policy server or the robot client by delivering a malicious pickle payload through the SendPolicyInstructions, SendObservations, or GetActions RPCs. Publicly available exploit code exists (chocapikk write-up) and SSVC rates technical impact as total and the flaw as automatable, though EPSS remains very low (0.06%) reflecting limited real-world telemetry rather than low technical severity.
Technical ContextAI
LeRobot is HuggingFace's open-source robotics/embodied-AI framework; the affected component is its async inference subsystem, which splits work between a PolicyServer (runs the ML policy) and a RobotClient (runs on the robot), communicating over gRPC. The root cause is CWE-502 (Deserialization of Untrusted Data): both endpoints used Python's pickle.dumps/pickle.loads to marshal RemotePolicyConfig, TimedObservation, and TimedAction objects across the wire. Because pickle deserialization can instantiate arbitrary objects and invoke __reduce__ during unpickling, feeding it untrusted bytes is equivalent to arbitrary code execution. The fix (PR #3048) removes pickle entirely and introduces a safe_serialization module using safetensors for tensors and length-prefixed JSON for scalar metadata, with an explicit type-tag check on decode. CPE cpe:2.3:a:huggingface:lerobot:*:*:*:*:*:python:*:* confirms the Python package as the affected artifact.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the changes from https://github.com/huggingface/lerobot/pull/3048, which replace all pickle.loads/pickle.dumps calls in the async inference pipeline with the safetensors+JSON safe_serialization module, and upgrade to any release built after that merge (a specific tagged version above 0.5.1 could not be confirmed from the provided data, so verify the fixed tag against the LeRobot release notes before pinning). Until you can deploy the fixed code, do not expose the async inference gRPC ports to untrusted networks: bind the PolicyServer/RobotClient to loopback or a private management segment and firewall the gRPC port so only the intended peer can reach it (trade-off: precludes remote/distributed inference deployments). Because the channel is unauthenticated and plaintext, front it with mutual-TLS or a network-level authenticated tunnel (e.g., WireGuard/mTLS proxy) so unknown peers cannot deliver payloads (trade-off: added latency and configuration overhead). Avoid running the async inference server on any host reachable from the internet. Reference advisories: the VulnCheck advisory above and the technical write-up at https://chocapikk.com/posts/2026/lerobot-pickle-rce/.
More in Hugging Face
View allThe huggingface/transformers library is vulnerable to arbitrary code execution through deserialization of untrusted data
Deserialization of Untrusted Data in GitHub repository huggingface/transformers prior to 4.36. Rated high severity (CVSS
Deserialization of Untrusted Data in GitHub repository huggingface/transformers prior to 4.36. Rated high severity (CVSS
A Regular Expression Denial of Service (ReDoS) vulnerability was discovered in the huggingface/transformers repository,
Path traversal in Hugging Face Datasets up to 5.0.0 allows attackers to read arbitrary local files when a victim process
Path traversal in Hugging Face Accelerate through 1.14.0 exposes two distinct attack outcomes when a user loads a crafte
Server-side request forgery in HuggingFace text-generation-inference through version 3.3.7 enables unauthenticated remot
A Regular Expression Denial of Service (ReDoS) vulnerability was identified in the huggingface/transformers library, spe
Remote code execution in Hugging Face Transformers 5.2.0 allows a malicious model repository to bypass the user's explic
A Regular Expression Denial of Service (ReDoS) vulnerability was discovered in the Hugging Face Transformers library, sp
A Regular Expression Denial of Service (ReDoS) vulnerability was discovered in the Hugging Face Transformers library, sp
A Regular Expression Denial of Service (ReDoS) vulnerability was discovered in the Hugging Face Transformers library, sp
Same weakness CWE-502 – Deserialization of Untrusted Data
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-25292
GHSA-f7vj-73pm-m822