Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
modelscan — الحماية من هجمات تسلسل النماذج | Kitploit
أدوات/GitHubGitHub/protectai/modelscan
أدوات دفاعيةالتحليل الثابتماسحات الثغرات الأمنيةDevSecOpsأمن سلسلة التوريدتعلم الآلةأمن الذكاء الاصطناعي
GitHubprotectai/modelscan

modelscan

الحماية من هجمات تسلسل النماذج

عرض المستودع
765162منذ 6 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

ModelScan Banner bandit build black mypy tests Supported Versions pypi Version License: Apache 2.0 pre-commit

ModelScan: الحماية من هجمات تسلسل النماذج

تُشارَك نماذج تعلّم الآلة (ML) علنًا عبر الإنترنت، داخل الفرق وبين الفرق. وقد أدى ظهور النماذج الأساسية (Foundation Models) إلى زيادة استهلاك نماذج تعلّم الآلة العامة لمزيد من التدريب/الضبط الدقيق. وتُستخدم نماذج تعلّم الآلة بشكل متزايد لاتخاذ قرارات حاسمة وتشغيل تطبيقات بالغة الأهمية. ورغم ذلك، لا تزال النماذج لا تُفحص بنفس دقة فحص ملفات PDF الموجودة في صندوق الوارد الخاص بك.

يجب أن يتغير هذا، والأدوات المناسبة هي الخطوة الأولى.

معاينة ModelScan

ModelScan هو مشروع مفتوح المصدر من Protect AI يفحص النماذج لتحديد ما إذا كانت تحتوي على رمز غير آمن. وهو أول أداة لفحص النماذج تدعم تنسيقات نماذج متعددة. يدعم ModelScan حاليًا تنسيقات H5 وPickle وSavedModel. وهذا يحميك عند استخدام PyTorch وTensorFlow وKeras وSklearn وXGBoost، مع دعم المزيد قريبًا.

الخلاصة

إذا كنت مستعدًا لبدء فحص نماذجك، فالأمر بسيط:

root@kitploit:~
pip install modelscan

بعد تثبيته، افحص نموذجًا:

root@kitploit:~
modelscan -p /path/to/model_file.pkl

لماذا يجب عليك فحص النماذج

كثيرًا ما تُنشأ النماذج من خطوط أنابيب آلية، وقد يأتي البعض الآخر من كمبيوتر عالم بيانات محمول. في كلتا الحالتين، يحتاج النموذج إلى الانتقال من جهاز إلى آخر قبل استخدامه. وتسمى عملية حفظ النموذج على القرص بالتسلسل (Serialization).

هجوم تسلسل النماذج (Model Serialization Attack) هو إضافة رمز ضار إلى محتويات النموذج أثناء التسلسل (الحفظ) قبل التوزيع — وهو نسخة حديثة من حصان طروادة.

يعمل الهجوم عبر استغلال عملية حفظ النماذج وتحميلها. عند تحميل نموذج باستخدام model = torch.load(PATH)، يفتح PyTorch محتويات الملف ويبدأ بتشغيل الكود الموجود داخله. فور تحميلك للنموذج يكون الاستغلال قد نُفّذ.

يمكن استخدام هجوم تسلسل النماذج لتنفيذ:

  • سرقة بيانات الاعتماد (بيانات اعتماد السحابة لكتابة وقراءة البيانات إلى أنظمة أخرى في بيئتك)
  • سرقة البيانات (الطلب المُرسل إلى النموذج)
  • تسميم البيانات (البيانات المُرسلة بعد أن يؤدي النموذج مهمته)
  • تسميم النموذج (تغيير نتائج النموذج نفسه)

هذه الهجمات بسيطة للغاية في تنفيذها، ويمكنك الاطلاع على أمثلة عملية في مجلد 📓notebooks.

فرض وأتمتة أمان النماذج

يقدم ModelScan فحصًا قويًا مفتوح المصدر. إذا كنت بحاجة إلى أمان شامل للذكاء الاصطناعي، ففكّر في Guardian. إنه منتجنا لفحص النماذج بمستوى المؤسسات.

نظرة عامة على Guardian

ميزات Guardian:

  1. فحص متطور: الوصول إلى أحدث الماسحات، ودعم أوسع للنماذج، والكشف التلقائي عن تنسيق النموذج.
  2. أمان استباقي: تحديد وفرض متطلبات الأمان لنماذج Hugging Face قبل دخولها إلى بيئتك — دون الحاجة إلى تغييرات في الكود.
  3. تغطية على مستوى المؤسسة: تنفيذ وضع أمني متماسك عبر مؤسستك، مع التكامل السلس مع خطوط أنابيب CI/CD لديك.
  4. سجل تدقيق شامل: الحصول على رؤية كاملة لجميع عمليات الفحص والنتائج، مما يمكّنك من تحديد التهديدات والتخفيف منها بفعالية.

البدء

كيف يعمل ModelScan

إذا كان تحميل نموذج باستخدام إطار تعلّم الآلة الخاص بك ينفّذ الهجوم تلقائيًا، فكيف يفحص ModelScan المحتوى دون تحميل الكود الضار؟

الأمر بسيط، فهو يقرأ محتوى الملف بايتًا بايت تمامًا مثل قراءة سلسلة نصية، بحثًا عن تواقيع الكود غير الآمن. وهذا يجعله سريعًا بشكل لا يصدق، حيث يفحص النماذج في الوقت الذي يستغرقه جهاز الكمبيوتر لمعالجة الحجم الكلي للملف من القرص (ثوانٍ في معظم الحالات). كما أنه آمن أيضًا.

يرتب ModelScan الكود غير الآمن على النحو التالي:

  • حرج
  • عالٍ
  • متوسط
  • منخفض

مخطط تدفق ModelScan

إذا تم اكتشاف مشكلة، تواصل مع مؤلفي النموذج فورًا لتحديد السبب.

في بعض الحالات، قد يكون الكود مضمّنًا في النموذج لتسهيل إعادة الإنتاج كعالم بيانات، لكنه يفتح الباب أمام الهجوم. استخدم تقديرك لتحديد ما إذا كان ذلك مناسبًا لأعباء عملك.

ما النماذج والأطر المدعومة؟

سيتوسع هذا باستمرار، لذا ترقب التغييرات في ملاحظات الإصدار.

في الوقت الحالي، يدعم ModelScan أي تنسيق مشتق من Pickle والعديد من التنسيقات الأخرى:

التثبيت

يُثبَّت ModelScan على أنظمتك كحزمة Python (يدعم Python 3.9 إلى 3.12). كما هو موضح أعلاه، يمكنك تثبيته بتشغيل الأمر التالي في الطرفية:

root@kitploit:~
pip install modelscan

لتضمينه في تبعيات مشروعك بحيث يكون متاحًا للجميع، أضفه إلى requirements.txt أو pyproject.toml كما يلي:

root@kitploit:~
modelscan = ">=0.1.1"

تتطلب الماسحات الضوئية لنماذج Tensorflow أو HD5 التثبيت مع الحزم الإضافية:

root@kitploit:~
pip install 'modelscan[ tensorflow, h5py ]'

استخدام ModelScan عبر CLI

يدعم ModelScan الوسائط التالية عبر CLI:

تذكّر أن النماذج مثل أي شكل آخر من أشكال الوسائط الرقمية، يجب عليك فحص المحتوى الوارد من أي مصدر غير موثوق قبل استخدامه.

رموز خروج CLI

أكواد حالة الخروج في CLI هي:

  • 0: اكتمل الفحص بنجاح، لم يتم العثور على ثغرات
  • 1: اكتمل الفحص بنجاح، تم العثور على ثغرات
  • 2: فشل الفحص، ألقى modelscan خطأً أثناء الفحص
  • 3: لم يتم تمرير أي ملفات مدعومة إلى الأداة
  • 4: خطأ في الاستخدام، تم تمرير خيارات غير صالحة أو غير مكتملة إلى CLI

استخدام ModelScan برمجيًا في Python

بينما يمكن استخدام ModelScan بسهولة عبر CLI، يمكنك أيضًا دمجه مباشرة في تطبيقات أو مهام سير عمل Python الخاصة بك.

root@kitploit:~
from modelscan.modelscan import ModelScan
from modelscan.settings import DEFAULT_SETTINGS

# Initialize ModelScan with default settings
scanner = ModelScan(settings=DEFAULT_SETTINGS)

# Scan a model file or directory 
results = scanner.scan("/path/to/model_file.pkl")

# Check if issues were found
if scanner.issues.all_issues:
    print(f"Found {len(scanner.issues.all_issues)} issues!")
    
    # Access issues by severity
    issues_by_severity = scanner.issues.group_by_severity()
    for severity, issues in issues_by_severity.items():
        print(f"{severity}: {len(issues)} issues")
        
# Generate a report (default is console output)
scanner.generate_report()

يمكنك تخصيص سلوك الفحص باستخدام الإعدادات الخاصة بك:

root@kitploit:~
# Start with default settings and customize
custom_settings = DEFAULT_SETTINGS.copy()

# Update settings as needed
custom_settings["reporting"]["module"] = "modelscan.reporting.json_report.JSONReport"
custom_settings["reporting"]["settings"]["output_file"] = "scan_results.json"

# Initialize with custom settings
scanner = ModelScan(settings=custom_settings)

فهم النتائج

بمجرد اكتمال الفحص، سترى مخرجات مثل هذه إذا تم العثور على مشكلة:

مخرجات فحص ModelScan

لدينا هنا نموذج يحتوي على عامل غير آمن لكل من ReadFile و WriteFile في النموذج. من الواضح أننا لا نريد لنماذجنا قراءة الملفات وكتابتها بشكل عشوائي. سنتواصل الآن مع منشئ هذا النموذج لتحديد ما كان يتوقع أن يفعله. في هذه الحالة بالذات، يسمح للمهاجم بقراءة بيانات اعتماد AWS الخاصة بنا وكتابتها إلى مكان آخر.

هذا رفض قاطع للاستخدام.

دمج ModelScan في خطوط أنابيب التعلم الآلي وخطوط أنابيب CI/CD الخاصة بك

الفحص المخصص (Ad-hoc) هو خطوة أولى رائعة، يرجى ترسيخ هذه العادة في نفسك وزملائك وأصدقائك للقيام بذلك كلما قاموا بسحب نموذج جديد لاستكشافه. لكنه ليس كافيًا لتحسين الأمان لعمليات MLOps الإنتاجية.

يجب إجراء فحص النماذج أكثر من مرة لتحقيق ما يلي:

  1. فحص جميع النماذج المدربة مسبقًا قبل تحميلها لمزيد من العمل لمنع تأثر بيئات بناء النماذج أو علوم البيانات بنموذج مخترق.
  2. فحص جميع النماذج بعد التدريب لاكتشاف هجوم سلسلة التوريد الذي يخترق النماذج الجديدة.
  3. فحص جميع النماذج قبل نشرها إلى نقطة النهاية لضمان عدم تعرض النموذج للاختراق بعد التخزين.

تسلط الكتل الحمراء أدناه الضوء على ذلك في خط أنابيب تعلم آلي تقليدي.

خط أنابيب MLOps مع ModelScan

ستكون العمليات نفسها للضبط الدقيق أو أي تعديلات على نماذج اللغات الكبيرة (LLMs) أو النماذج الأساسية أو النماذج الخارجية.

أدرج الفحوصات في عمليات النشر في أنظمة CI/CD لديك لتأمين الاستخدام عند نشر النماذج أيضًا إذا تم ذلك خارج خطوط أنابيب التعلم الآلي الخاصة بك.

التعمق أكثر

داخل مجلد 📓notebooks يمكنك استكشاف عدد من الدفاتر البرمجية التي تعرض بالضبط كيفية تنفيذ هجمات تسلسل النماذج ضد أطر تعلّم الآلة المختلفة مثل TensorFlow وPyTorch.

للتعمق أكثر في جوهر كيفية عمل هذه الهجمات بالضبط، اطّلع على 🖹 شرح هجمات تسلسل النماذج.

إذا صادفت أي طرق أخرى لتقييم النماذج في سياق ثابت، فيرجى التواصل معنا، يسعدنا معرفة المزيد!

الترخيص

Copyright 2024 Protect AI

مرخّص بموجب ترخيص Apache، الإصدار 2.0 (المشار إليه باسم "الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا بالامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص على

http://www.apache.org/licenses/LICENSE-2.0

ما لم يقتضِ القانون المعمول به أو يتم الاتفاق عليه كتابيًا، يتم توزيع البرنامج المرخّص بموجب الترخيص على أساس "كما هو" (AS IS)، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص للحصول على الأذونات والقيود المحددة التي تحكم استخدام البرنامج بموجب الترخيص.

شكر وتقدير

لقد استلهمنا بشكل كبير من Matthieu Maitre الذي بنى PickleScan. نحن نقدر العمل وقمنا بتوسيعه بشكل كبير مع ModelScan. صدر ModelScan كمصدر مفتوح (OSS) بنفس روح PickleScan.

المساهمة

يسعدنا أن تساهم في مشروعنا مفتوح المصدر ModelScan. إذا كنت ترغب في المساهمة، فيرجى اتباع التفاصيل في صفحة المساهمة.

تنزيل الأداة
مكتبة تعلّم الآلةAPIتنسيق التسلسلدعم modelscan
Pytorchtorch.save() and torch.load()Pickleنعم
Tensorflowtf.saved_model.save()Protocol Bufferنعم
Keraskeras.models.save(save_format= 'h5')HD5 (Hierarchical Data Format)نعم
keras.models.save(save_format= 'keras')Keras V3 (Hierarchical Data Format)نعم
مكتبات تعلّم الآلة الكلاسيكية (Sklearn, XGBoost وغيرها)pickle.dump(), dill.dump(), joblib.dump(), cloudpickle.dump()Pickle, Cloudpickle, Dill, Joblibنعم
الاستخدامالوسيطالشرح
modelscan -h-h or --helpعرض مساعدة الاستخدام
modelscan -v-v or --versionعرض معلومات الإصدار
modelscan -p /path/to/model_file-p or --pathفحص نموذج مخزّن محليًا
modelscan -p /path/to/model_file --settings-file ./modelscan-settings.toml--settings-fileفحص نموذج مخزّن محليًا باستخدام إعدادات مخصصة
modelscan create-settings-file-l or --locationإنشاء ملف إعدادات قابل للتهيئة
modelscan -r-r or --reporting-formatتنسيق المخرجات. الخيارات هي console أو json أو custom (ليتم تعريفه في settings-file). الافتراضي هو console
modelscan -r reporting-format -o file-name-o or --output-fileاسم ملف اختياري لتقرير المخرجات
modelscan --show-skipped--show-skippedطباعة قائمة بالملفات التي تم تخطيها أثناء الفحص