用于 AI/ML 模型文件的安全扫描器。在部署前检测恶意代码、后门和漏洞。
在部署前保护你的 AI 模型。 静态扫描器,可检测 ML 模型文件中的恶意代码、潜在后门指标和安全漏洞——全程无需加载或执行这些文件。
模型从不受信任的注册表下载,经过 CI 流程,最终在生产环境中运行。传统 SAST 工具不会检查 pickle 操作码、HDF5 组布局、ONNX proto 图或 TensorFlow SavedModel 签名——而 ModelAudit 可以:
同类工具:picklescan(仅 pickle,基于 Python)、fickling(仅 pickle,基于 AST)、modelscan(pickle + TensorFlow + Keras 子集)。ModelAudit 覆盖范围更广,并通过其配套包 modelaudit-picklescan 提供原生 Rust pickle 引擎。
需要 Python 3.10-3.14
pip install "modelaudit[all]"
# Scan a file or directory
modelaudit model.pkl
modelaudit ./models/
# Export results for CI/CD
modelaudit model.pkl --format json --output results.json
$ 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
扫描证据和源错误可能包含原始凭据值,包括在 JSON、SARIF、SBOM 和共享报告中。凭据规范化仍保留在影响检测、分组或抑制的位置。
ModelAudit 包含 45 个已注册的扫描器,覆盖模型、归档和配置格式:
| 格式 | 扩展名 | 风险 |
|---|---|---|
| Pickle | .pkl、.pickle、.dill | 高 |
| PyTorch | .pt、.pth、.ckpt、.bin | 高 |
| Joblib | .joblib | 高 |
| NumPy | .npy、.npz | 高 |
| R Serialized | .rds、.rda、.rdata、签名有效且已重命名的工作区产物 | 高 |
| TensorFlow | .pb、.meta、SavedModel 目录 | 中 |
| Keras | .h5、.hdf5、.keras | 中 |
| ONNX | .onnx | 中 |
| CoreML | .mlmodel、结构有效且已重命名的产物 | 低 |
| MXNet | *-symbol.json、*-NNNN.params、结构有效且已重命名的 symbol JSON | 低 |
| NeMo | .nemo、带根配置的已重命名归档 | 中 |
| CNTK | .dnn、.cmf、签名有效且已重命名的产物 | 中 |
| RKNN | .rknn、在无冲突重命名后缀下签名有效的产物 | 中 |
| Torch7 | 序列化产物(.t7、.th、.net 或已重命名) | 高 |
| CatBoost | .cbm | 中 |
| XGBoost | .bst、.model、.json、.ubj、无扩展名的 UBJSON | 中 |
| LightGBM | .lgb、.lightgbm、.model、签名有效且已重命名的产物 | 中 |
| Llamafile | 可执行包装器(.llamafile、.exe、无扩展名或已重命名) | 中 |
| TorchServe | .mar | 高 |
| SafeTensors | .safetensors | 低 |
| GGUF/GGML | .gguf、.ggml、.ggmf、.ggjt、.ggla、.ggsa、签名有效且已重命名的产物 | 低 |
| JAX/Flax | .msgpack、.flax、.orbax、.jax、.checkpoint、.orbax-checkpoint | 低 |
| TFLite | .tflite、在无冲突重命名后缀下签名有效的产物 | 低 |
| ExecuTorch | .ptl、.pte、在无冲突重命名后缀下签名有效的独立产物 | 低 |
| TensorRT | .engine、.plan、.trt | 低 |
| PaddlePaddle | .pdmodel、.pdiparams | 低 |
| OpenVINO | .xml | 低 |
| Skops | .skops | 高 |
| PMML | .pmml | 低 |
| 压缩包装 | .gz、.bz2、.xz、.lz4、.zlib | 中 |
此外还提供针对 ZIP、TAR、7-Zip、OCI 层、Jinja2 模板、JSON/YAML 元数据、清单、模型卡、文本文件的扫描器,以及 RAR 识别。RAR 归档会被报告为不支持/失败关闭,而不是被跳过。
结构有效的 TensorFlow SavedModel 和 MetaGraph protobuf 在重命名为非模型后缀时也能被识别。
CoreML 模型在重命名后同样可被识别,覆盖不完整的情况会被明确报告。
具有超大但看似合理的框架结构的 SafeTensors 文件会被保留,以便在
诸如 .jpg 等原本未被认领的后缀下进行有界、不确定的分析。
结构上看似合理的 Flax/JAX MessagePack 检查点在重命名为非模型后缀时也能被识别;
无法完全分类的重命名结构会被报告为覆盖不完整。
结构化的 JAX/Orbax JSON 检查点元数据在重命名后同样可被识别;超大且模糊的
候选对象会被报告为覆盖不完整;在有界检查前缀中可观察到的安全模式
仍可能被保守地报告。
直接从远程注册表和云存储扫描模型:
# Hugging Face
modelaudit https://huggingface.co/gpt2
modelaudit hf://microsoft/DialoGPT-medium
# Cloud storage
modelaudit s3://bucket/model.pt
modelaudit gs://bucket/models/
# MLflow registry
# Non-local artifact stores: export MODELAUDIT_MLFLOW_ALLOWED_ARTIFACT_URIS=s3://trusted-bucket/models
modelaudit models:/MyModel/Production
# JFrog Artifactory (files and folders)
# Auth: export JFROG_API_TOKEN=...
modelaudit https://company.jfrog.io/artifactory/repo/model.pt
modelaudit https://company.jfrog.io/artifactory/repo/models/