
Sicherheitsscanner für KI/ML-Modelldateien. Erkennt bösartigen Code, Hintertüren und Schwachstellen vor der Bereitstellung.
Sichern Sie Ihre KI-Modelle vor der Bereitstellung. Statischer Scanner, der bösartigen Code, potenzielle Backdoor-Indikatoren und Sicherheitslücken in ML-Modelldateien erkennt – ohne sie jemals zu laden oder auszuführen.
Vollständige Dokumentation | Anwendungsbeispiele | Unterstützte Formate
Modelle werden aus nicht vertrauenswürdigen Registries heruntergeladen, durchlaufen CI und laufen am Ende in der Produktion. Herkömmliche SAST-Tools untersuchen weder Pickle-Opcodes, HDF5-Gruppenlayouts, ONNX-Protografen noch TensorFlow-SavedModel-Signaturen – ModelAudit schon:
Vergleichbare Tools: picklescan (nur pickle, Python-basiert), fickling (nur pickle, AST-basiert), modelscan (pickle + TensorFlow + Keras-Teilmenge). ModelAudit bietet eine breitere Abdeckung und liefert über das Begleitpaket modelaudit-picklescan eine native Rust-Pickle-Engine mit.
Erfordert Python 3.10-3.13```bash pip install "modelaudit[all]"
modelaudit model.pkl modelaudit ./models/
modelaudit model.pkl --format json --output results.json
No input content was provided for translation. Please supply the chunk text.```
$ modelaudit suspicious_model.pkl
Files scanned: 1 | Issues found: 2 critical, 1 warning
1. suspicious_model.pkl (pos 28): [CRITICAL] Malicious code execution attempt
Why: Contains os.system() call that could run arbitrary commands
2. suspicious_model.pkl (pos 52): [WARNING] Dangerous pickle deserialization
Why: Could execute code when the model loads
ModelAudit umfasst 45 registrierte Scanner für Modell-, Archiv- und Konfigurationsformate:
Zusätzlich gibt es Scanner für ZIP-, TAR-, 7-Zip-, OCI-Layer, Jinja2-Vorlagen, JSON-/YAML-Metadaten, Manifeste, Modellkarten, Textdateien und RAR-Erkennung. RAR-Archive werden als nicht unterstützt/fail-closed gemeldet, anstatt übersprungen zu werden.
Strukturell gültige TensorFlow-SavedModel- und MetaGraph-Protobufs werden ebenfalls erkannt, wenn sie in Nicht-Modell-Suffixe umbenannt werden.
CoreML-Modelle können ebenfalls erkannt werden, wenn sie umbenannt wurden; unvollständige Abdeckung wird explizit gemeldet.
SafeTensors-Dateien mit überdimensioniertem, aber plausiblen Framing werden für eine begrenzte, ergebnislose Analyse unter anderweitig nicht beanspruchten Suffixen wie .jpg aufbewahrt.
Strukturell plausible Flax-/JAX-MessagePack-Checkpoints werden ebenfalls erkannt, wenn sie in Nicht-Modell-Suffixe umbenannt werden;
umbenannte Strukturen, die nicht vollständig klassifiziert werden können, werden als unvollständige Abdeckung gemeldet.
Strukturierte JAX-/Orbax-JSON-Checkpoint-Metadaten werden ebenfalls erkannt, wenn sie umbenannt werden; überdimensionierte, mehrdeutige
Kandidaten werden als unvollständige Abdeckung gemeldet; beobachtbare Sicherheitsmuster im begrenzten untersuchten Präfix können
weiterhin konservativ gemeldet werden.
Vollständige Formatdokumentation anzeigen
Modelle direkt aus Remote-Registries und Cloud-Speichern scannen:```bash
modelaudit https://huggingface.co/gpt2 modelaudit hf://microsoft/DialoGPT-medium
modelaudit s3://bucket/model.pt modelaudit gs://bucket/models/
modelaudit models:/MyModel/Production
modelaudit https://company.jfrog.io/artifactory/repo/model.pt modelaudit https://company.jfrog.io/artifactory/repo/models/
modelaudit model.dvc
### Umgebungsvariablen für die Authentifizierung
- `HF_TOKEN` für private Hugging-Face-Repositories
- `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` (und optional `AWS_SESSION_TOKEN`) für S3
- `GOOGLE_APPLICATION_CREDENTIALS` für GCS
- `MLFLOW_TRACKING_URI` für den Zugriff auf die MLflow-Registry
- `MODELAUDIT_MLFLOW_ALLOWED_ARTIFACT_URIS` für nicht-lokale MLflow-Artefaktwurzeln (kommagetrennte URI-Präfixe)
- Konkrete Backend-Wurzeln wie `s3://bucket/prefix` verwenden; logische `models:/`- oder `runs:/`-URIs und prozentkodierte entfernte Pfade werden abgelehnt.
- `JFROG_API_TOKEN` oder `JFROG_ACCESS_TOKEN` für JFrog Artifactory
- `MODELAUDIT_JFROG_ALLOWED_HOSTS` für kommagetrennte benutzerdefinierte JFrog-Hostnamen, die Anmeldeinformationen erhalten dürfen
- `MODELAUDIT_JFROG_ALLOWED_REDIRECT_HOSTS` für kommagetrennte externe Redirect-Hostnamen, die ohne Anmeldeinformationen heruntergeladen werden dürfen
- Anmeldeinformationen in Umgebungsvariablen oder einem Secrets-Manager speichern und niemals Tokens/Schlüssel committen.
## Installation```bash
# Broad scanner coverage (recommended; excludes the TensorFlow runtime and platform-specific TensorRT)
pip install "modelaudit[all]"
# Core only (static scanners, pickle, NumPy, archives, manifests, metadata)
pip install modelaudit
# Specific frameworks (TensorFlow installs on Python 3.11-3.12; ONNX installs on Python 3.10-3.12)
pip install "modelaudit[tensorflow,pytorch,h5,onnx,safetensors]"
# CI/CD environments
pip install "modelaudit[all-ci]"
# On Python 3.11-3.12, add TensorFlow only when you need runtime-dependent checkpoint or weight analysis
pip install "modelaudit[all,tensorflow]"
# Docker
docker run --rm -v "$(pwd)":/app ghcr.io/promptfoo/modelaudit:latest model.pkl
Das ONNX-Extra, einschließlich des ONNX-Teils von modelaudit[all], ist für Python 3.10-3.12 gepackt.
PyTorch-enthaltende Extras erfordern Python 3.10-3.12 oder standardmäßiges (GIL-aktiviertes) CPython 3.13; die gepatchten PyTorch-2.13-Wheels unterstützen kein Free-Threaded-CPython 3.13t. Verwenden Sie standardmäßiges CPython, da der native Pickle-Scanner von ModelAudit ebenfalls kein CPython 3.13t unterstützt. Auf Apple Silicon erfordern PyTorch-enthaltende Extras macOS 14 oder neuer, da die Wheels auf macosx_14_0_arm64 abzielen; die reine Kerninstallation bleibt für statisches Scannen auf macOS 11-13 verfügbar.
Primäre Befehle:```bash modelaudit [PATHS...] # Default scan command modelaudit scan [OPTIONS] PATHS... # Explicit scan command modelaudit scan --list-scanners # List scanner IDs for targeted scans modelaudit metadata [OPTIONS] PATH # Extract model metadata safely (no deserialization by default) modelaudit doctor [--show-failed] # Diagnose scanner/dependency availability modelaudit debug [--json] [--verbose] # Environment and configuration diagnostics modelaudit cache [stats|clear|cleanup] [OPTIONS]
Allgemeine Scan-Optionen:```text
--format {text,json,sarif} Output format (default: auto-detected)
--output FILE Write results to file
--strict Fail on warnings, scan all file types, strict license validation
--sbom FILE Generate CycloneDX SBOM
--stream Process files one-by-one; remote downloads are deleted after scanning
--assume-shard-family Treat explicitly listed cross-directory shards as one model family
--max-size SIZE Size limit (e.g., 10GB)
--timeout SECONDS Override scan timeout
--dry-run Preview what would be scanned
--verbose / --quiet Control output detail
--blacklist PATTERN Additional patterns to flag
--no-cache Disable result caching
--cache-dir DIR Set cache directory for downloads and scan results
--progress Force progress display
--scanners LIST Only run selected scanners (IDs/classes; comma-separated or repeated)
--exclude-scanner NAME Exclude a scanner from the active set (comma-separated or repeated)
--list-scanners List scanner IDs, class names, extensions, and dependencies
Gezielte Scannerauswahl:```bash
modelaudit scan --list-scanners modelaudit scan --list-scanners --format json
modelaudit scan ./models --scanners pickle,tf_savedmodel modelaudit scan ./model.pkl --scanners PickleScanner
modelaudit scan ./models --exclude-scanner weight_distribution
modelaudit scan ./archive.zip --scanners zip,pickle
`--scanners` beginnt mit einer expliziten Zulassungsliste. `--exclude-scanner` zieht Scanner von entweder dieser Zulassungsliste oder dem Standard-Scanner-Set ab. Die Scanner-Auswahl wird in der JSON-Ausgabe unter `scanner_selection` angezeigt.
Für entfernte Ordner schränkt ModelAudit Downloads auf ausgewählte Scanner-Erweiterungen ein, wenn dies sicher ist. Content-basiertes Routing für umbenannte Wrapper erfolgt nach der Erfassung; scannen Sie eine direkte Datei-URL, wenn Repository-Dateinamen möglicherweise absichtlich irreführend sind.
## Metadatenextraktion```bash
# Human-readable summary (safe default: no model deserialization)
modelaudit metadata model.safetensors
# Machine-readable output
modelaudit metadata ./models --format json --output metadata.json
# Focus only on security-relevant metadata fields
modelaudit metadata model.onnx --security-only
--trust-loaders aktiviert Scanner-Metadaten-Loader, die Modellinhalte deserialisieren können. Verwenden Sie dies nur bei vertrauenswürdigen Artefakten in isolierten Umgebungen.
0: Keine Sicherheitsprobleme erkannt1: Sicherheitsprobleme erkannt2: Scan-FehlerModelAudit enthält Telemetrie für Produktzuverlässigkeit und Nutzungsanalysen.
CI=true oder IS_TESTING=true gesetzt ist, sowie bei bearbeitbaren Entwicklungsinstallationen, sofern nicht MODELAUDIT_TELEMETRY_DEV=1 gesetzt ist. Ereignisse, die von anderen CI-Anbietern (TeamCity, CodeBuild, Bitbucket Pipelines, Jenkins) gesendet werden, werden mit isRunningInCi=true gekennzeichnet, damit sie nachgelagert gefiltert werden können.~/.promptfoo/promptfoo.yaml für die toolübergreifende Korrelation mit Promptfoo gespeichert, und jede Telemetriesitzung verwendet eine neue Sitzungskennung. Vorhandene IDs aus ~/.modelaudit/user_config.json werden beim ersten Start nach einem Upgrade migriert. Ein veralteter E-Mail-Wert in dieser Datei kann, falls vorhanden, dem Analyse-Benutzerprofil angehängt werden.Deaktivieren Sie die Telemetrie explizit mit einer der beiden Umgebungsvariablen:```bash export PROMPTFOO_DISABLE_TELEMETRY=1
export NO_ANALYTICS=1
Um bei bearbeitbaren/Entwicklungsinstallationen zu aktivieren:```bash
export MODELAUDIT_TELEMETRY_DEV=1
modelaudit model.pkl --format json --output results.json
modelaudit model.pkl --format sarif --output results.sarif
## Fehlerbehebung
- Führen Sie `modelaudit doctor --show-failed` aus, um nicht verfügbare Scanner und fehlende optionale Abhängigkeiten aufzulisten.
- Führen Sie `modelaudit debug --json` aus, um Umgebungs-/Konfigurationsdiagnosen für Fehlerberichte zu sammeln.
- Verwenden Sie `modelaudit cache cleanup --max-age 30`, um veraltete Cache-Einträge sicher zu entfernen.
- Wenn `pip` eine ältere Version installiert, überprüfen Sie, ob Python unterstützt wird (`python --version`; ModelAudit unterstützt Python 3.10-3.13).
- Weitere Hinweise zur Fehlerbehebung und Cloud-Authentifizierung finden Sie unter:
- https://www.promptfoo.dev/docs/model-audit/
- https://www.promptfoo.dev/docs/model-audit/usage/
## Dokumentation
- **[Vollständige Dokumentation](https://www.promptfoo.dev/docs/model-audit/)** — Einrichtung, Konfiguration und erweiterte Nutzung
- **[Nutzungsbeispiele](https://www.promptfoo.dev/docs/model-audit/usage/)** — CI/CD-Integration, Remote-Scanning, SBOM-Erzeugung
- **[Unterstützte Formate](https://www.promptfoo.dev/docs/model-audit/scanners/)** — detaillierte Scanner-Dokumentation
- **[Support-Richtlinie](https://github.com/promptfoo/modelaudit/blob/main/SUPPORT.md)** — unterstützte Python-/OS-Versionen und Wartungsrichtlinie
- **[Sicherheitsmodell und Grenzen](https://github.com/promptfoo/modelaudit/blob/main/docs/user/security-model.md)** — was ModelAudit garantiert und was nicht
- **[Kompatibilitätsmatrix](https://github.com/promptfoo/modelaudit/blob/main/docs/user/compatibility-matrix.md)** — Dateiformate im Vergleich zu optionalen Abhängigkeiten
- **[Scanner-Auswahl](https://github.com/promptfoo/modelaudit/blob/main/docs/user/scanner-selection.md)** — gezielte Scanner-Allowlists und Ausschlüsse
- **[Leitfaden zur Metadaten-Extraktion](https://github.com/promptfoo/modelaudit/blob/main/docs/user/metadata-extraction.md)** — sichere Metadaten-Workflows und Anleitung zu `--trust-loaders`
- **[Leitfaden für Offline-/Air-Gapped-Betrieb](https://github.com/promptfoo/modelaudit/blob/main/docs/user/offline-air-gapped.md)** — sicherer Betrieb ohne Internetzugang
- **Fehlerbehebung** — führen Sie `modelaudit doctor --show-failed` aus, um die Verfügbarkeit der Scanner zu prüfen
## Verwandte Pakete
- **[`modelaudit-picklescan`](https://pypi.org/project/modelaudit-picklescan/)** — der eigenständige, auf Rust basierende Pickle-Scanner, der von ModelAudits Pickle-, PyTorch-, ExecuTorch- und PyTorch-ZIP-Scannern verwendet wird. Installieren Sie ihn direkt, wenn Sie nur eine Pickle-Analyse benötigen (als Bibliothek, nicht als CLI) und das vollständige Scanner-Paket nicht möchten.
## Melden von Schwachstellen
Eröffnen Sie keine öffentlichen Issues für vermutete Schwachstellen. Siehe [SECURITY.md](https://github.com/promptfoo/modelaudit/blob/main/SECURITY.md) für koordinierte Offenlegung.
## Mitwirken
Issues, Feature-Anfragen und PRs sind willkommen. Siehe [CONTRIBUTING.md](https://github.com/promptfoo/modelaudit/blob/main/CONTRIBUTING.md).
## Lizenz
MIT-Lizenz — siehe [LICENSE](https://github.com/promptfoo/modelaudit/blob/main/LICENSE) für Details.
| Format | Extensions | Risiko |
|---|
| Pickle | .pkl, .pickle, .dill | HOCH |
| PyTorch | .pt, .pth, .ckpt, .bin | HOCH |
| Joblib | .joblib | HOCH |
| NumPy | .npy, .npz | HOCH |
| R Serialized | .rds, .rda, .rdata, Signatur-geprüfte umbenannte Workspace-Artefakte | HOCH |
| TensorFlow | .pb, .meta, SavedModel-Verzeichnisse | MITTEL |
| Keras | .h5, .hdf5, .keras | MITTEL |
| ONNX | .onnx | MITTEL |
| CoreML | .mlmodel, strukturell gültige umbenannte Artefakte | NIEDRIG |
| MXNet | *-symbol.json, *-NNNN.params, strukturell gültige umbenannte Symbol-JSONs | NIEDRIG |
| NeMo | .nemo, umbenannte Archive mit Root-Konfiguration | MITTEL |
| CNTK | .dnn, .cmf, Signatur-geprüfte umbenannte Artefakte | MITTEL |
| RKNN | .rknn, Signatur-geprüfte Artefakte unter nicht kollidierenden umbenannten Suffixen | MITTEL |
| Torch7 | Serialisierte Artefakte (.t7, .th, .net oder umbenannt) | HOCH |
| CatBoost | .cbm | MITTEL |
| XGBoost | .bst, .model, .json, .ubj, erweiterungsloses UBJSON | MITTEL |
| LightGBM | .lgb, .lightgbm, .model, Signatur-geprüfte umbenannte Artefakte | MITTEL |
| Llamafile | Ausführbare Wrapper (.llamafile, .exe, erweiterungslos oder umbenannt) | MITTEL |
| TorchServe | .mar | HOCH |
| SafeTensors | .safetensors | NIEDRIG |
| GGUF/GGML | .gguf, .ggml, .ggmf, .ggjt, .ggla, .ggsa, Signatur-geprüfte umbenannte Artefakte | NIEDRIG |
| JAX/Flax | .msgpack, .flax, .orbax, .jax, .checkpoint, .orbax-checkpoint | NIEDRIG |
| TFLite | .tflite, Signatur-geprüfte Artefakte unter nicht kollidierenden umbenannten Suffixen | NIEDRIG |
| ExecuTorch | .ptl, .pte, Signatur-geprüfte eigenständige Artefakte unter nicht kollidierenden umbenannten Suffixen | NIEDRIG |
| TensorRT | .engine, .plan, .trt | NIEDRIG |
| PaddlePaddle | .pdmodel, .pdiparams | NIEDRIG |
| OpenVINO | .xml | NIEDRIG |
| Skops | .skops | HOCH |
| PMML | .pmml | NIEDRIG |
| Compressed Wrappers | .gz, .bz2, .xz, .lz4, .zlib | MITTEL |