
AI/ML मॉडल फ़ाइलों के लिए सुरक्षा स्कैनर। परिनियोजन से पहले दुर्भावनापूर्ण कोड, बैकडोर और कमज़ोरियों का पता लगाता है।
अपने AI मॉडलों को परिनियोजन से पहले सुरक्षित करें। स्टैटिक स्कैनर जो ML मॉडल फ़ाइलों में दुर्भावनापूर्ण कोड, संभावित बैकडोर संकेतकों और सुरक्षा कमजोरियों का पता लगाता है — बिना उन्हें कभी लोड या निष्पादित किए।
पूर्ण दस्तावेज़ | उपयोग उदाहरण | समर्थित प्रारूप
मॉडल अविश्वसनीय रजिस्ट्रियों से डाउनलोड होते हैं, CI से गुजरते हैं, और प्रोडक्शन में चलते हैं। पारंपरिक SAST उपकरण pickle opcodes, HDF5 group layouts, ONNX proto graphs, या TensorFlow SavedModel signatures पर ध्यान नहीं देते — 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
The input chunk is empty — no source text was provided to translate. Please supply the actual chunk content (chunk 3 of 23) so I can translate it into Hindi.```
$ 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 पंजीकृत स्कैनर शामिल हैं:
साथ ही ZIP, TAR, 7-Zip, OCI परतें, Jinja2 टेम्पलेट, JSON/YAML मेटाडेटा, मैनिफ़ेस्ट, मॉडल कार्ड, टेक्स्ट फ़ाइलें, और RAR पहचान के लिए स्कैनर शामिल हैं। RAR आर्काइव को स्किप किए जाने के बजाय असमर्थित/फेल-क्लोज़ के रूप में रिपोर्ट किया जाता है।
संरचनात्मक रूप से मान्य TensorFlow SavedModel और MetaGraph प्रोटोबफ़ को भी गैर-मॉडल प्रत्ययों में नाम बदले जाने पर पहचाना जाता है।
CoreML मॉडल को भी नाम बदले जाने पर पहचाना जा सकता है, अपूर्ण कवरेज स्पष्ट रूप से रिपोर्ट की जाती है।
अत्यधिक आकार के लेकिन संभावित फ्रेमिंग वाली SafeTensors फ़ाइलें, अन्यथा बिना दावे वाले प्रत्ययों (जैसे .jpg) के अंतर्गत सीमित, अनिर्णायक विश्लेषण के लिए बनाए रखी जाती हैं।
संरचनात्मक रूप से संभावित Flax/JAX MessagePack चेकपॉइंट भी गैर-मॉडल प्रत्ययों में नाम बदले जाने पर पहचाने जाते हैं; पूरी तरह वर्गीकृत न किए जा सकने वाले नाम-परिवर्तित ढाँचे अपूर्ण कवरेज के रूप में रिपोर्ट किए जाते हैं।
संरचित JAX/Orbax JSON चेकपॉइंट मेटाडेटा भी नाम बदले जाने पर पहचाना जाता है; अत्यधिक आकार के अस्पष्ट उम्मीदवार अपूर्ण कवरेज के रूप में रिपोर्ट किए जाते हैं; सीमित निरीक्षित प्रीफ़िक्स में देखे जा सकने वाले सुरक्षा पैटर्न अभी भी रूढ़िवादी रूप से रिपोर्ट किए जा सकते हैं।
संपूर्ण प्रारूप दस्तावेज़ देखें
रिमोट रजिस्ट्रियों और क्लाउड स्टोरेज से सीधे मॉडल स्कैन करें:```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
### प्रमाणीकरण पर्यावरण चर
- `HF_TOKEN` निजी Hugging Face रिपॉजिटरी के लिए
- `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` (और वैकल्पिक `AWS_SESSION_TOKEN`) S3 के लिए
- `GOOGLE_APPLICATION_CREDENTIALS` GCS के लिए
- `MLFLOW_TRACKING_URI` MLflow रजिस्ट्री एक्सेस के लिए
- `MODELAUDIT_MLFLOW_ALLOWED_ARTIFACT_URIS` गैर-लोकल MLflow आर्टिफैक्ट रूट्स के लिए (कॉमा-सेपरेटेड URI प्रीफिक्स)
- ठोस बैकएंड रूट्स जैसे `s3://bucket/prefix` उपयोग करें; लॉजिकल `models:/` या `runs:/` URI और प्रतिशत-एन्कोडेड रिमोट पाथ अस्वीकार कर दिए जाते हैं।
- `JFROG_API_TOKEN` या `JFROG_ACCESS_TOKEN` JFrog Artifactory के लिए
- `MODELAUDIT_JFROG_ALLOWED_HOSTS` कॉमा-सेपरेटेड कस्टम JFrog होस्टनामों के लिए जिन्हें क्रेडेंशियल प्राप्त हो सकते हैं
- `MODELAUDIT_JFROG_ALLOWED_REDIRECT_HOSTS` कॉमा-सेपरेटेड बाहरी रीडायरेक्ट होस्टनामों के लिए जिन्हें बिना क्रेडेंशियल्स के डाउनलोड किया जा सकता है
- क्रेडेंशियल्स को पर्यावरण चर या सीक्रेट्स मैनेजर में रखें, और टोकन/कुंजियाँ कभी कमिट न करें।
## इंस्टॉलेशन```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
ONNX एक्स्ट्रा, जिसमें modelaudit[all] का ONNX भाग शामिल है, Python 3.10-3.12 के लिए पैकेज किया गया है।
PyTorch युक्त एक्स्ट्रा के लिए Python 3.10-3.12 या मानक (GIL-सक्षम) CPython 3.13 की आवश्यकता होती है; पैच किए गए PyTorch 2.13
व्हील्स free-threaded CPython 3.13t का समर्थन नहीं करते हैं। मानक CPython का उपयोग करें, क्योंकि ModelAudit का नेटिव pickle स्कैनर भी
CPython 3.13t का समर्थन नहीं करता है। Apple Silicon पर, PyTorch युक्त एक्स्ट्रा के लिए macOS 14 या नए की आवश्यकता होती है क्योंकि व्हील्स
macosx_14_0_arm64 को लक्षित करते हैं; कोर-केवल इंस्टॉलेशन macOS 11-13 पर स्टैटिक स्कैनिंग के लिए उपलब्ध रहता है।
प्राथमिक कमांड:```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]
सामान्य स्कैन विकल्प:```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
लक्षित स्कैनर चयन:```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` एक स्पष्ट अनुमत सूची से शुरू होता है। `--exclude-scanner` उस अनुमत सूची या डिफ़ॉल्ट स्कैनर सेट में से स्कैनरों को घटा देता है। स्कैनर चयन `scanner_selection` के अंतर्गत JSON आउटपुट में दर्शाया जाता है।
दूरस्थ फ़ोल्डरों के लिए, ModelAudit सुरक्षित होने पर चयनित स्कैनर एक्सटेंशन द्वारा डाउनलोड को सीमित करता है। सामग्री-आधारित renamed-wrapper रूटिंग अधिग्रहण के बाद लागू होती है; जब रिपॉज़िटरी फ़ाइलनाम जानबूझकर भ्रामक हो सकते हैं, तो सीधे फ़ाइल URL को स्कैन करें।
## मेटाडेटा निष्कर्षण```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 स्कैनर मेटाडेटा लोडर्स को सक्षम करता है जो मॉडल सामग्री को डिसीरियलाइज़ कर सकते हैं। इसका उपयोग केवल विश्वसनीय आर्टिफैक्ट्स पर पृथक वातावरण में करें।
0: कोई सुरक्षा समस्या नहीं मिली1: सुरक्षा समस्याएँ मिलीं2: स्कैन त्रुटियाँModelAudit उत्पाद विश्वसनीयता और उपयोग विश्लेषण के लिए टेलीमेट्री शामिल करता है।
CI=true सेट हो या IS_TESTING=true सेट हो, और एडिटेबल डेवलपमेंट इंस्टॉल में तब तक टेलीमेट्री स्वचालित रूप से अक्षम रहती है जब तक MODELAUDIT_TELEMETRY_DEV=1 न हो। अन्य CI प्रदाताओं (TeamCity, CodeBuild, Bitbucket Pipelines, Jenkins) से भेजी गई इवेंट्स को isRunningInCi=true के साथ टैग किया जाता है ताकि उन्हें बाद में फ़िल्टर किया जा सके।~/.promptfoo/promptfoo.yaml में संग्रहीत किया जाता है, और प्रत्येक टेलीमेट्री सत्र एक नया सत्र पहचानकर्ता उपयोग करता है। ~/.modelaudit/user_config.json से मौजूदा ID अपग्रेड के बाद पहली बार चलाने पर माइग्रेट हो जाती हैं। उस फ़ाइल में विरासत में मिला ईमेल मान, यदि मौजूद हो, तो एनालिटिक्स उपयोगकर्ता प्रोफ़ाइल से जोड़ा जा सकता है।इनमें से किसी भी पर्यावरण चर के साथ स्पष्ट रूप से ऑप्ट आउट करें:```bash export PROMPTFOO_DISABLE_TELEMETRY=1
export NO_ANALYTICS=1
एडिटेबल/डेवलपमेंट इंस्टॉल के दौरान ऑप्ट-इन करने के लिए:```bash
export MODELAUDIT_TELEMETRY_DEV=1
modelaudit model.pkl --format json --output results.json
modelaudit model.pkl --format sarif --output results.sarif
## समस्या निवारण
- अनुपलब्ध स्कैनर और गुम वैकल्पिक निर्भरताओं की सूची के लिए `modelaudit doctor --show-failed` चलाएँ।
- बग रिपोर्ट के लिए पर्यावरण/कॉन्फ़िग डायग्नोस्टिक्स एकत्र करने हेतु `modelaudit debug --json` चलाएँ।
- पुरानी कैश प्रविष्टियों को सुरक्षित रूप से हटाने के लिए `modelaudit cache cleanup --max-age 30` का उपयोग करें।
- यदि `pip` पुराना रिलीज़ इंस्टॉल करता है, तो सत्यापित करें कि Python समर्थित है (`python --version`; ModelAudit Python 3.10-3.13 का समर्थन करता है)।
- अतिरिक्त समस्या निवारण और क्लाउड प्रमाणीकरण मार्गदर्शन के लिए देखें:
- https://www.promptfoo.dev/docs/model-audit/
- https://www.promptfoo.dev/docs/model-audit/usage/
## दस्तावेज़ीकरण
- **[पूर्ण दस्तावेज़](https://www.promptfoo.dev/docs/model-audit/)** — सेटअप, कॉन्फ़िगरेशन और उन्नत उपयोग
- **[उपयोग उदाहरण](https://www.promptfoo.dev/docs/model-audit/usage/)** — CI/CD एकीकरण, रिमोट स्कैनिंग, SBOM जनरेशन
- **[समर्थित प्रारूप](https://www.promptfoo.dev/docs/model-audit/scanners/)** — विस्तृत स्कैनर दस्तावेज़ीकरण
- **[सहायता नीति](https://github.com/promptfoo/modelaudit/blob/main/SUPPORT.md)** — समर्थित Python/OS संस्करण और रखरखाव नीति
- **[सुरक्षा मॉडल और सीमाएँ](https://github.com/promptfoo/modelaudit/blob/main/docs/user/security-model.md)** — ModelAudit क्या गारंटी देता है और क्या नहीं
- **[संगतता मैट्रिक्स](https://github.com/promptfoo/modelaudit/blob/main/docs/user/compatibility-matrix.md)** — फ़ाइल प्रारूप बनाम वैकल्पिक निर्भरताएँ
- **[स्कैनर चयन](https://github.com/promptfoo/modelaudit/blob/main/docs/user/scanner-selection.md)** — लक्षित स्कैनर अनुमत सूचियाँ और बहिष्करण
- **[मेटाडेटा निष्कर्षण गाइड](https://github.com/promptfoo/modelaudit/blob/main/docs/user/metadata-extraction.md)** — सुरक्षित मेटाडेटा वर्कफ़्लो और `--trust-loaders` मार्गदर्शन
- **[ऑफ़लाइन/एयर-गैप्ड गाइड](https://github.com/promptfoo/modelaudit/blob/main/docs/user/offline-air-gapped.md)** — इंटरनेट एक्सेस के बिना सुरक्षित संचालन
- **समस्या निवारण** — स्कैनर उपलब्धता की जाँच के लिए `modelaudit doctor --show-failed` चलाएँ
## संबंधित पैकेज
- **[`modelaudit-picklescan`](https://pypi.org/project/modelaudit-picklescan/)** — स्टैंडअलोन Rust-आधारित pickle स्कैनर जो ModelAudit के pickle, PyTorch, ExecuTorch और PyTorch-ZIP स्कैनर द्वारा उपयोग किया जाता है। इसे सीधे इंस्टॉल करें यदि आपको केवल pickle विश्लेषण की आवश्यकता है (एक लाइब्रेरी के रूप में, CLI के रूप में नहीं) और पूर्ण स्कैनर बंडल नहीं चाहिए।
## कमज़ोरियों की रिपोर्ट करना
संदिग्ध कमज़ोरियों के लिए सार्वजनिक issues न खोलें। समन्वित प्रकटीकरण के लिए [SECURITY.md](https://github.com/promptfoo/modelaudit/blob/main/SECURITY.md) देखें।
## योगदान
Issues, फ़ीचर अनुरोध और PRs का स्वागत है। [CONTRIBUTING.md](https://github.com/promptfoo/modelaudit/blob/main/CONTRIBUTING.md) देखें।
## लाइसेंस
MIT लाइसेंस — विवरण के लिए [LICENSE](https://github.com/promptfoo/modelaudit/blob/main/LICENSE) देखें।
| प्रारूप | एक्सटेंशन | जोखिम |
|---|
| 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 |
| संपीड़ित रैपर | .gz, .bz2, .xz, .lz4, .zlib | MEDIUM |