AI/MLモデルファイル向けセキュリティスキャナー。デプロイ前に悪意のあるコード、バックドア、脆弱性を検出します。
AIモデルをデプロイ前に保護しよう。 MLモデルファイル内の悪意のあるコード、潜在的なバックドア指標、セキュリティ脆弱性を検出する静的スキャナです。モデルをロードしたり実行したりすることは一切ありません。
モデルは信頼できないレジストリからダウンロードされ、CIを通過し、本番環境で実行されることになります。従来のSASTツールはpickleオペコード、HDF5グループレイアウト、ONNXプロトグラフ、TensorFlow SavedModel署名を検査しませんが、ModelAuditは検査します:
類似ツール: picklescan (pickleのみ、Pythonベース)、fickling (pickleのみ、ASTベース)、modelscan (pickle + TensorFlow + Kerasのサブセット)。ModelAuditはより広いカバレッジを持ち、併用パッケージmodelaudit-picklescanを介してネイティブRust製pickleエンジンを提供します。
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 provided)```
$ 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 には、モデル、アーカイブ、設定形式をカバーする 45 の登録済みスキャナが含まれています:
| 形式 | 拡張子 | リスク |
|---|---|---|
| Pickle | .pkl, .pickle, .dill | HIGH |
| PyTorch | .pt, .pth, .ckpt, .bin | HIGH |
| Joblib | .joblib | HIGH |
| NumPy | .npy, .npz | HIGH |
| R Serialized | .rds, .rda, .rdata, シグネチャ検証済みの名前変更されたワークスペースアーティファクト | HIGH |
| TensorFlow | .pb, .meta, SavedModel ディレクトリ | MEDIUM |
| Keras | .h5, .hdf5, .keras | MEDIUM |
| ONNX | .onnx | MEDIUM |
| CoreML | .mlmodel, 構造的に有効な名前変更済みアーティファクト | LOW |
| MXNet | *-symbol.json, *-NNNN.params, 構造的に有効な名前変更済みシンボル JSON | LOW |
| NeMo | .nemo, ルート設定を持つ名前変更済みアーカイブ | MEDIUM |
| CNTK | .dnn, .cmf, シグネチャ検証済みの名前変更済みアーティファクト | MEDIUM |
| RKNN | .rknn, 競合しない名前変更済みサフィックス下のシグネチャ検証済みアーティファクト | MEDIUM |
| Torch7 | シリアライズされたアーティファクト (.t7, .th, .net または名前変更済み) | HIGH |
| CatBoost | .cbm | MEDIUM |
| XGBoost | .bst, .model, .json, .ubj, 拡張子なし UBJSON | MEDIUM |
| LightGBM | .lgb, .lightgbm, .model, シグネチャ検証済みの名前変更済みアーティファクト | MEDIUM |
| Llamafile | 実行可能ラッパー (.llamafile, .exe, 拡張子なしまたは名前変更済み) | MEDIUM |
| TorchServe | .mar | HIGH |
| SafeTensors | .safetensors | LOW |
| GGUF/GGML | .gguf, .ggml, .ggmf, .ggjt, .ggla, .ggsa, シグネチャ検証済みの名前変更済みアーティファクト | LOW |
| JAX/Flax | .msgpack, .flax, .orbax, .jax, .checkpoint, .orbax-checkpoint | LOW |
| TFLite | .tflite, 競合しない名前変更済みサフィックス下のシグネチャ検証済みアーティファクト | LOW |
| ExecuTorch | .ptl, .pte, 競合しない名前変更済みサフィックス下のシグネチャ検証済みスタンドアロンアーティファクト | LOW |
| TensorRT | .engine, .plan, .trt | LOW |
| PaddlePaddle | .pdmodel, .pdiparams | LOW |
| OpenVINO | .xml | LOW |
| Skops | .skops | HIGH |
| PMML | .pmml | LOW |
| Compressed Wrappers | .gz, .bz2, .xz, .lz4, .zlib | MEDIUM |
さらに、ZIP、TAR、7-Zip、OCI レイヤー、Jinja2 テンプレート、JSON/YAML メタデータ、マニフェスト、モデルカード、テキストファイル、および RAR 認識用のスキャナもあります。RAR アーカイブはスキップされる代わりに、未サポート/フェイルクローズとして報告されます。
構造的に有効な TensorFlow SavedModel および MetaGraph protobuf は、モデル以外のサフィックスに名前変更された場合も認識されます。
CoreML モデルも名前変更された場合に認識され、不完全なカバレッジが明示的に報告されます。
過大であるが妥当なフレーミングを持つ SafeTensors ファイルは、境界付きの決定的でない分析のために、
それ以外に主張のないサフィックス(.jpg など)下でも保持されます。
構造的に妥当な Flax/JAX MessagePack チェックポイントも、モデル以外のサフィックスに名前変更された場合に認識されます;
完全に分類できない名前変更済み構造は、不完全なカバレッジとして報告されます。
構造化された JAX/Orbax JSON チェックポイントメタデータも同様に名前変更時に認識されます;過大な曖昧な
候補は不完全なカバレッジとして報告されます;境界付きの検査済みプレフィックス内で観察可能なセキュリティパターンは
依然として控えめに報告される場合があります。