Kann schon das Laden einer heruntergeladenen ML-Modelldatei Angreifercode ausführen?
Kurzantwort
Ja. Pickle-basierte Modelldateien (Standardformat für PyTorch-Gewichte) können beim Entpickeln beliebigen Code ausführen; die Python-Dokumentation sagt, nur vertrauenswürdige Daten zu entpickeln. Scanner helfen, sind aber nicht lückenlos. Bevorzugen Sie ein reines Datenformat wie safetensors, laden Sie nur aus vertrauenswürdigen, verifizierten Quellen und behandeln Sie Modellartefakte wie jede andere ausführbare Lieferkettenkomponente.
Eine Modelldatei wirkt wie Daten, und genau deshalb ist das eine beliebte AI-Security-Frage für Senior-Profile. In vielen Ökosystemen ähnelt sie eher einem Programm.
Der Mechanismus
Die Python-Dokumentation zu pickle beginnt mit einer Warnung: Das Modul „ist nicht sicher", bösartige Pickle-Daten können beim Entpickeln „beliebigen Code ausführen", und Daten aus nicht vertrauenswürdigen Quellen dürfen nie entpickelt werden. Die Hugging-Face-Hub-Dokumentation nennt Pickle das Standardformat für PyTorch-Gewichte und erklärt, dass Pickle-Opcodes eingebaute Funktionen wie exec oder eval importieren und aufrufen können; eine Modelldatei kann also schon beim Laden Code ausführen.
Gegenmaßnahmen und Grenzen
- Sicherere Formate: Die Hub-Doku nennt Alternativen wie
safetensors; die Python-Doku empfiehlt für nicht vertrauenswürdige Daten Formate wie JSON. - Vertrauen und Herkunft: aus vertrauenswürdigen Quellen laden; signierte Commits belegen die Herkunft, nicht die Unbedenklichkeit.
- Scanning: Der Hub listet die Imports in Pickle-Dateien und hebt verdächtige hervor, betont aber, dass dies nicht lückenlos ist.
- Globals einschränken mit einem eigenen Unpickler ist laut Python-Doku möglich, erfordert aber große Sorgfalt.
Warum das für Pipelines zählt
Automatisierte Jobs, die Community-Modelle ziehen, laufen mit den Zugangsdaten der CI oder des Notebooks; eine vergiftete Datei wird so zur Lieferkettenkompromittierung. Laden isolieren, reine Datenformate bevorzugen, Artefakte pinnen und verifizieren.
Warum die Distraktoren verlockend sind
„Nur Zahlen" ignoriert das Containerformat. „Virenscan erkennt es" widerspricht dem Hinweis des Hubs, dass ClamAV Pickle-Exploits nicht abdeckt. „Nur bei Inferenz" ist falsch: Der Code läuft beim Laden.
Was Interviewer hören wollen
Pickle, Codeausführung beim Laden und safetensors plus Herkunftskontrollen als Lösung.
Wahrscheinliche Anschlussfragen
- Warum ist ein Pickle-Scanner, der Imports auflistet, hilfreich, aber nicht ausreichend?
- Wie vermeidet safetensors diese Risikoklasse?
- Welche Kontrollen würden Sie einer Pipeline hinzufügen, die automatisch Community-Modelle zieht?