
ماسح أمني لملفات نماذج الذكاء الاصطناعي/التعلم الآلي. يكتشف الشيفرات الخبيثة، والأبواب الخلفية، والثغرات قبل النشر.
قم بتأمين نماذج الذكاء الاصطناعي الخاصة بك قبل النشر. ماسح ثابت يكشف الشيفرات الخبيثة ومؤشرات الباب الخلفي المحتملة وثغرات الأمان في ملفات نماذج تعلّم الآلة — دون تحميلها أو تنفيذها أبدًا.
التوثيق الكامل | أمثلة الاستخدام | الصيغ المدعومة
تُنزَّل النماذج من سجلات غير موثوقة، وتمر عبر خطوط التكامل المستمر (CI)، وينتهي بها الأمر في بيئة الإنتاج. أدوات فحص أمان التطبيقات التقليدية (SAST) لا تفحص أكواد pickle opcodes، أو تخطيطات مجموعات HDF5، أو رسوم ONNX proto البيانية، أو توقيعات TensorFlow SavedModel — بينما يقوم ModelAudit بذلك:
أدوات مشابهة: picklescan (pickle فقط، مبني على Python)، fickling (pickle فقط، مبني على AST)، modelscan (pickle + مجموعة فرعية من TensorFlow + Keras). يقدّم ModelAudit تغطية أوسع ويشتمل على محرك Rust أصلي لملفات pickle عبر الحزمة المرافقة modelaudit-picklescan.
يتطلب Python 3.10-3.13```bash pip install "modelaudit[all]"
modelaudit model.pkl modelaudit ./models/
modelaudit model.pkl --format json --output results.json
- [المسح والاكتشاف والفيزينغ](#scanning-discovery-and-fuzzing)```
$ 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 الوصفية والملفات التعريفية (manifests) وبطاقات النماذج والملفات النصية والتعرف على RAR. يتم الإبلاغ عن أرشيفات RAR على أنها غير مدعومة/مغلقة بالفشل بدلاً من تخطيها.
يتم أيضًا التعرف على نماذج TensorFlow SavedModel وMetaGraph protobuf الصالحة بنيويًا عند إعادة تسميتها إلى لواحق غير خاصة بالنماذج.
يمكن أيضًا التعرف على نماذج CoreML عند إعادة تسميتها، مع الإبلاغ عن التغطية غير المكتملة بشكل صريح.
يتم الاحتفاظ بملفات SafeTensors ذات الإطارات كبيرة الحجم ولكنها معقولة لإجراء تحليل غير حاسم ومحدود ضمن
لواحق غير مطلوبة مثل .jpg.
يتم أيضًا التعرف على نقاط تفتيش Flax/JAX MessagePack المعقولة بنيويًا عند إعادة تسميتها إلى لواحق غير خاصة بالنماذج؛
يتم الإبلاغ عن الهياكل المعاد تسميتها التي لا يمكن تصنيفها بالكامل كتغطية غير مكتملة.
يتم أيضًا التعرف على بيانات تعريف JSON لنقاط تفتيش JAX/Orbax المنظمة عند إعادة تسميتها؛ ويتم الإبلاغ عن المرشحات
الكبيرة الحجم والغامضة كتغطية غير مكتملة؛ وقد يظل يتم الإبلاغ عن أنماط الأمان القابلة للملاحظة في البادئة المحدودة الفحص بشكل متحفظ.
افحص النماذج مباشرة من السجلات البعيدة والتخزين السحابي:```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`؛ عناوين URI المنطقية مثل `models:/` أو `runs:/` والمسارات البعيدة المشفرة بالنسبة المئوية يتم رفضها.
- `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، بما في ذلك جزء ONNX من modelaudit[all]، مُعبأة لبيثون 3.10-3.12.
تتطلب الإضافات التي تحتوي على PyTorch بيثون 3.10-3.12 أو CPython 3.13 القياسي (مع تمكين GIL)؛ wheels المُرقّعة الخاصة بـ PyTorch 2.13
لا تدعم CPython 3.13t (free-threaded). استخدم CPython القياسي، لأن ماسح pickle الأصلي في ModelAudit أيضًا
لا يدعم CPython 3.13t. على Apple Silicon، تتطلب الإضافات التي تحتوي على PyTorch إصدار macOS 14 أو أحدث لأن wheels
تستهدف 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` الماسحات من تلك القائمة أو من مجموعة الماسحات الافتراضية. وينعكس اختيار الماسح في مخرجات JSON تحت `scanner_selection`.
بالنسبة للمجلدات البعيدة، يضيّق ModelAudit التنزيلات بناءً على امتدادات الماسحات المحددة عندما يكون ذلك آمنًا. يُطبَّق التوجيه القائم على المحتوى للملفات المعاد تسميتها بعد الاستحواذ؛ افحص عنوان 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. يتم وضع علامة isRunningInCi=true على الأحداث المرسلة من موفري CI الآخرين (TeamCity وCodeBuild وBitbucket Pipelines وJenkins) بحيث يمكن تصفيتها لاحقًا.~/.promptfoo/promptfoo.yaml للربط عبر الأدوات مع Promptfoo، وتستخدم كل جلسة قياس عن بُعد معرّف جلسة جديد. يتم ترحيل المعرّفات الموجودة من ~/.modelaudit/user_config.json عند أول تشغيل بعد الترقية. قد يتم إرفاق قيمة بريد إلكتروني قديمة في هذا الملف، إذا كانت موجودة، بملف تعريف مستخدم التحليلات.قم بإلغاء الاشتراك صراحةً باستخدام أي من متغيرات البيئة التالية:```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 --version`؛ يدعم ModelAudit بايثون 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)** — إصدارات بايثون/أنظمة التشغيل المدعومة وسياسة الصيانة
- **[نموذج الأمان والقيود](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/)** — الماسح الضوئي المستقل للـ pickle المدعوم بـ Rust والذي تستخدمه ماسحات 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 |
| Compressed Wrappers | .gz, .bz2, .xz, .lz4, .zlib | MEDIUM |