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

ModelScan هو مشروع مفتوح المصدر من Protect AI يفحص النماذج لتحديد ما إذا كانت تحتوي على رمز غير آمن. وهو أول أداة لفحص النماذج تدعم تنسيقات نماذج متعددة. يدعم ModelScan حاليًا تنسيقات H5 وPickle وSavedModel. وهذا يحميك عند استخدام PyTorch وTensorFlow وKeras وSklearn وXGBoost، مع دعم المزيد قريبًا.
إذا كنت مستعدًا لبدء فحص نماذجك، فالأمر بسيط:
pip install modelscan
بعد تثبيته، افحص نموذجًا:
modelscan -p /path/to/model_file.pkl
كثيرًا ما تُنشأ النماذج من خطوط أنابيب آلية، وقد يأتي البعض الآخر من كمبيوتر عالم بيانات محمول. في كلتا الحالتين، يحتاج النموذج إلى الانتقال من جهاز إلى آخر قبل استخدامه. وتسمى عملية حفظ النموذج على القرص بالتسلسل (Serialization).
هجوم تسلسل النماذج (Model Serialization Attack) هو إضافة رمز ضار إلى محتويات النموذج أثناء التسلسل (الحفظ) قبل التوزيع — وهو نسخة حديثة من حصان طروادة.
يعمل الهجوم عبر استغلال عملية حفظ النماذج وتحميلها. عند تحميل نموذج باستخدام model = torch.load(PATH)، يفتح PyTorch محتويات الملف ويبدأ بتشغيل الكود الموجود داخله. فور تحميلك للنموذج يكون الاستغلال قد نُفّذ.
يمكن استخدام هجوم تسلسل النماذج لتنفيذ:
هذه الهجمات بسيطة للغاية في تنفيذها، ويمكنك الاطلاع على أمثلة عملية في مجلد 📓notebooks.
يقدم ModelScan فحصًا قويًا مفتوح المصدر. إذا كنت بحاجة إلى أمان شامل للذكاء الاصطناعي، ففكّر في Guardian. إنه منتجنا لفحص النماذج بمستوى المؤسسات.

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

إذا تم اكتشاف مشكلة، تواصل مع مؤلفي النموذج فورًا لتحديد السبب.
في بعض الحالات، قد يكون الكود مضمّنًا في النموذج لتسهيل إعادة الإنتاج كعالم بيانات، لكنه يفتح الباب أمام الهجوم. استخدم تقديرك لتحديد ما إذا كان ذلك مناسبًا لأعباء عملك.
سيتوسع هذا باستمرار، لذا ترقب التغييرات في ملاحظات الإصدار.
في الوقت الحالي، يدعم ModelScan أي تنسيق مشتق من Pickle والعديد من التنسيقات الأخرى:
| مكتبة تعلّم الآلة | API | تنسيق التسلسل | دعم modelscan |
|---|---|---|---|
| Pytorch | torch.save() and torch.load() | Pickle | نعم |
| Tensorflow | tf.saved_model.save() | Protocol Buffer | نعم |
| Keras | keras.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 على أنظمتك كحزمة Python (يدعم Python 3.9 إلى 3.12). كما هو موضح أعلاه، يمكنك تثبيته بتشغيل الأمر التالي في الطرفية:
pip install modelscan
لتضمينه في تبعيات مشروعك بحيث يكون متاحًا للجميع، أضفه إلى requirements.txt أو pyproject.toml كما يلي:
modelscan = ">=0.1.1"
تتطلب الماسحات الضوئية لنماذج Tensorflow أو HD5 التثبيت مع الحزم الإضافية:
pip install 'modelscan[ tensorflow, h5py ]'
يدعم ModelScan الوسائط التالية عبر CLI: