Nach Angaben von Resecurity liegt die Wurzel des Problems in der PolicyServer-Komponente der asynchronen Inferenz. Ein Angreifer, der den Netzwerkport des PolicyServer erreicht, kann eine bösartige serialisierte Nutzlast schicken und damit beliebige Betriebssystembefehle auf dem Host ausführen, der den Dienst betreibt – ganz ohne vorherige Authentifizierung.
Resecurity stuft die Lücke als besonders gefährlich ein, weil der Dienst für KI-Inferenzsysteme gedacht ist. Solche Systeme laufen häufig mit erhöhten Rechten, um auf interne Netzwerke, Datensätze und kostspielige Rechenressourcen zuzugreifen. Wird die Schwachstelle ausgenutzt, eröffnet sich dem Angreifer entsprechend eine breite Palette an Handlungsmöglichkeiten.
Der VulnCheck-Sicherheitsforscher Valentin Lobstein, der die Schwachstelle entdeckte und kürzlich zusätzliche Details veröffentlichte, hat sie erfolgreich gegen LeRobot in Version 0.4.3 verifiziert. Bemerkenswert ist, dass dieselbe Lücke bereits zuvor unabhängig von einem Forscher unter dem Pseudonym „chenpinji" gemeldet wurde. Das LeRobot-Team reagierte darauf, erkannte das Sicherheitsrisiko an und merkte an, „dass dieser Teil der Codebasis nahezu vollständig überarbeitet werden muss, da seine ursprüngliche Implementierung eher experimentell angelegt war".
„LeRobot war bislang in erster Linie ein Werkzeug für Forschung und Prototyping, weshalb die Sicherheit beim Einsatz bisher kein starker Schwerpunkt war", erklärte Steven Palma, technischer Leiter des Projekts. Mit zunehmender Verbreitung und produktivem Einsatz wolle man derartigen Fragen deutlich mehr Aufmerksamkeit widmen. Als Open-Source-Projekt könne zudem die Community helfen, Schwachstellen zu melden und zu beheben.
Der Fall führt erneut die Gefahren des pickle-Formats vor Augen, da bereits das Laden einer speziell präparierten Datei zur Ausführung beliebigen Codes führen kann. Lobstein verwies dabei auf eine besondere Ironie: Hugging Face habe mit Safetensors selbst ein Serialisierungsformat geschaffen, gerade weil pickle für ML-Daten gefährlich sei. Dennoch deserialisiere das eigene Robotik-Framework über pickle.loads() von Angreifern kontrollierte Netzwerkdaten – und unterdrücke mit „# nosec"-Kommentaren ausgerechnet das Werkzeug, das davor warnen sollte.
