CyberPress meldte 29. april om CVE-2026-25874, en RCE-sårbarhet med CVSS-score 9.8 i Hugging Face LeRobot. Feilen ligger i den asynkrone inferensarkitekturen, der policy-beregning offloades til en GPU-tjener via gRPC. PolicyServer bruker Pythons pickle.loads() til å deserialisere innkommende byte-strømmer fra protobuf-meldinger, og deserialiseringen skjer FØR isinstance()-validering. Det betyr at en ondsinnet payload eksekverer uavhengig av om objektet til slutt blir avvist.
Sikkerhetsforskeren chocapikk identifiserte de sårbare RPC-handlerne SendPolicyInstructions og SendObservations. Verre: gRPC-tjenesten konfigureres med add_insecure_port(), som betyr at trafikken verken har TLS eller autentisering. I koden står det #nosec-kommentarer som demper sikkerhetslintere, hvilket tyder på at utviklerne kjente til risikoen, men hoppet over varslene.
«Maliciøs payload kjører under deserialisering, før valideringssjekker som
isinstance()brukes. Selv malformerte eller uventede objekter kan utløse kodekjøring.» (chocapikk via CyberPress)
LeRobot binder gRPC-serveren til localhost som standard, så et single-host-oppsett er rimelig isolert. Problemet oppstår når du kjører distribuert GPU-inferens: da binder folk typisk til 0.0.0.0 for å la modell-klienten snakke med GPU-tjeneren over nett. I den konfigurasjonen kan hvem som helst med nettverksruting til porten sende en pickle-payload og overta serveren. Skann etter eksponerte instanser er triviell.
Hugging Face har sin egen sikre serialiseringsformat (safetensors) som finnes nettopp for å unngå pickle-RCE. At LeRobot likevel sender pickle over usikre porter er en arkitektonisk regresjon i et økosystem som allerede har løsningen.
Hva bør du gjøre?
- Sjekk om LeRobots PolicyServer kjører i miljøet ditt og hvilken adresse den binder til.
ss -tlnp | grepviser om den lytter på0.0.0.0. - Erstatt
pickle.loads()-kallene medsafetensors, JSON eller native protobuf-felt. Byttadd_insecure_port()tiladd_secure_port()med TLS. - Legg gRPC-interceptor med token-autentisering foran tjenesten. Inntil patchen er rullet ut, sett brannmurregler som begrenser tilgang til kun GPU-klientens IP.
Bakgrunn
LeRobot er Hugging Faces åpen kildekode-rammeverk for robotikk-ML, populært nok til at 21 500+ stjerner og distribuert inferens er hverdagsbruk. Mønsteret med pickle over uautentiserte sokler er gjenkjennelig fra eldre Python-RPC-systemer, men dukker fortsatt opp i ML-stack der prototyping går raskere enn sikkerhetsgjennomgang.