Hugging Face وModelAudit: دراسة تكشف حدود الحماية المدمجة لنماذج تعلّم الآلة

قارن باحث بين فحوصات Hugging Face المدمجة وأداة ModelAudit على نماذج تعلّم آلة خطرة وأخرى مشبوهة بوضوح. في الاختبار الأول أصدر الماسح مئات التنبيهات الحرجة، لكن جزءًا كبيرًا منها تبيّن أنه ضوضاء. أما في الاختبار الثاني، وبعد التحديث إلى الإصدار 0.2.31، فقد رصدت ModelAudit جميع المستودعات التي اعتبرتها HF خطرة، ووجدت 17 مستودعًا إضافيًا تحمل إشارات خطر أخرى. ويرى الباحث أن عدد التنبيهات الحرجة وحده لا يكشف مدى خطورة النموذج فعليًا. فالقواعد مفيدة في اصطياد المرشحين للفحص، لكنها لا تصلح حكمًا نهائيًا دون سياق وفهم لصيغة الملف وللإطار البرمجي المستخدم. وتخلص الدراسة إلى أن أداة واحدة لا تحل مشكلة أمن مخرجات تعلّم الآلة، وأن أفضل النتائج تأتي من الجمع بين عدة فحوصات وتحديث القواعد بانتظام وإجراء فرز يدوي للتنبيهات الأعلى صخبًا.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
Hugging Face وModelAudit: دراسة تكشف حدود الحماية المدمجة لنماذج تعلّم الآلة
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1في المجموعة الأولى جرى فحص 246 نموذجًا
حقيقة رئيسية #2رصدت ModelAudit 271 تحذيرًا حرجًا
حقيقة رئيسية #3تلقّى 34 نموذجًا تنبيهًا حرجًا واحدًا على الأقل

قارن باحث بين فحوصات الأمان المدمجة في Hugging Face وماسح ModelAudit الخارجي، وخرج بنتيجة غير بديهية: قد ترصد أداة واحدة إشارات خطر أكثر، لكنها تُنتج في الوقت نفسه قدرًا كبيرًا من الضوضاء. والخلاصة الرئيسية للمقال أن عدد التنبيهات الحرجة بحد ذاته لا يقول شيئًا تقريبًا عن مدى خبث النموذج فعليًا.

كيف أُجري الاختبار

في التجربة الأولى لم يأخذ المؤلف Hugging Face بأكمله، بل مجموعة فرعية من المستودعات التي تعتمد أخطر صيغ تخزين النماذج. شملت العيّنة النماذج المفتوحة فقط، أي تلك التي تحتوي ملفات مثل `.pkl` و`.pickle` و`.dill` و`.pt` و`.pth` و`.ckpt` و`.bin` و`.joblib` و`.npy` و`.npz`. كما استُبعدت المستودعات الكبيرة جدًا والنماذج الشديدة الشعبية: فقد حُدد الحجم الإجمالي بـ 1 غيغابايت، وعدد مرات التنزيل الشهرية بـ 10 آلاف. والفكرة بسيطة: إذا كان الهدف البحث عن مشكلات حقيقية، فمن الأجدى البدء بالمواضع التي يرتفع فيها احتمال التسلسل (serialization) الخطر.

  • في المجموعة الأولى جرى فحص 246 نموذجًا
  • رصدت ModelAudit 271 تحذيرًا حرجًا
  • تلقّى 34 نموذجًا تنبيهًا حرجًا واحدًا على الأقل
  • اعتمدت المقارنة على المستودعات نفسها، لا على نقاط الحفظ (checkpoints) المنفردة داخلها

لكن منذ البداية تبيّن أن كثرة النتائج لا تعني جودة الكشف. فقد كان النموذج الأغزر تنبيهات هو Ultralytics/YOLO11، إذ حصل على 728 تحذيرًا، منها 35 حرجًا. يبدو ذلك على الورق إشارة قوية إلى اختراق، غير أن المراجعة اليدوية كشفت صورة أقل إثارة. فقد ارتبط جزء كبير من الإنذارات الحرجة بعناصر Python القياسية التي قد تظهر أيضًا في نماذج مشروعة. أي أن الماسح رصد بالفعل أنماطًا قد تكون خطرة، لكنه أكثر من اللازم عدّها دليلًا مباشرًا على هجوم.

أين تُصدر القواعد ضوضاء

أظهر تحليل YOLO11 نقطة الضعف في التحليل الساكن. فقد جاء جزء من التنبيهات عبر `pickle_check` بسبب `__builtin__.getattr`، وجزء آخر عبر `pytorch_zip_check` بسبب `__builtin__.set` وما شابهها من مؤشرات. والمشكلة أن `getattr` يمكن فعلًا استخدامها في سلاسل خبيثة للالتفاف على القواعد البدائية، لكنها في الوقت نفسه دالة Python عادية تظهر في الشيفرة السليمة أيضًا. أما حالة `set` فهي أكثر دلالة: فأحد الماسحات الداخلية في ModelAudit يعدّ هذا الاستيراد مقبولًا، بينما قد يصنّف ماسح آخر فضاء `builtin` كله على أنه مشبوه. لذلك يشدد المؤلف على أن الكثافة العالية للتحذيرات، حتى الحرجة منها، سبب للفرز اليدوي وليست حكمًا على النموذج.

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

«لم يكن الأمر كما تصورته عندما بدأنا»

المقارنة مع Hugging Face

في التجربة الثانية غيّر المؤلف زاوية العمل، وجمع قائمة نماذج سبق لأصحاب المستودعات أنفسهم أن وسموها بكلمات malicious وexploit وace وdeserialization وpoc. وبعد تصفية إضافية بواسطة LLM، مُرّرت هذه المجموعة عبر ModelAudit وقورنت نتائجها بالحالات المدمجة في Hugging Face.

أظهرت المقارنة الأساسية توافقًا قويًا إلى حد ما: اعتبر الطرفان 154 مستودعًا خطرًا و49 آمنًا. وفي المقابل ظهرت 14 حالة رأت فيها ModelAudit مشكلة، بينما لم تُظهر Hugging Face أي شيء مريب.

وأهم ما في الأمر أن بعض الإشارات المفيدة في ModelAudit لا تقتصر على مستويي warning وcritical. إذ يورد المقال مثال `jossefharush/gpt2-rs`، حيث احتوى تنبيه من مستوى INFO على مؤشرات نشاط شبكي ورابط إلى Pastebin. وبيّن الفحص اللاحق أن الرابط يقود إلى باب خلفي يرسل إلى المهاجم نتائج تنفيذ الأوامر على جهاز الضحية. أي أن رسالة «معلوماتية» في هذه الحالة تحديدًا كانت أهم من حيث المضمون من كثير من الإنذارات الحرجة الصاخبة في التجربة الأولى.

وتناول المؤلف على حدة التباينات المعاكسة، أي الحالات التي أشارت فيها Hugging Face إلى خطر بينما تجاوزت ModelAudit النموذج. وكانت هذه الثغرات موجودة أصلًا في الإصدار 0.2.24، لكنها اختفت بعد التحديث إلى 0.2.28 ثم إلى 0.2.31. وجاءت الصورة النهائية كما يلي: كل المستودعات التي اعتبرتها Hugging Face خطرة في النهاية رصدتها ModelAudit أيضًا، وبقي لدى الماسح الخارجي فوق ذلك 17 مستودعًا تحمل إشارات خطر لم تكن موجودة في تحذيرات HF المدمجة.

ماذا يعني ذلك

لا يحل ماسح واحد مشكلة أمن مخرجات تعلّم الآلة، حتى لو بدا الأنضج في فئته. ويقدم المقال عن Hugging Face وModelAudit خلاصة أنفع: النتائج الجيدة لا تأتي من الرهان على أداة واحدة «أفضل»، بل من الجمع بين عدة فحوصات، وتحديث القواعد بانتظام، وإجراء مراجعة يدوية إلزامية لأعلى التنبيهات صخبًا.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول كيف أُجري الاختبار؟

في التجربة الأولى لم يأخذ المؤلف Hugging Face بأكمله، بل مجموعة فرعية من المستودعات التي تعتمد أخطر صيغ تخزين النماذج. شملت العيّنة النماذج المفتوحة فقط، أي تلك التي تحتوي ملفات مثل `.pkl` و`.pickle` و`.dill` و`.pt` و`.pth` و`.ckpt` و`.bin` و`.joblib` و`.npy` و`.npz`. كما استُبعدت المستودعات الكبيرة جدًا والنماذج الشديدة الشعبية: فقد حُدد الحجم الإجمالي بـ 1 غيغابايت، وعدد مرات التنزيل الشهرية بـ 10 آلاف. والفكرة بسيطة: إذا كان الهدف البحث عن مشكلات حقيقية، فمن الأجدى البدء بالمواضع التي يرتفع فيها احتمال التسلسل (serialization) الخطر. في المجموعة الأولى جرى فحص 246 نموذجًا

ما أبرز التفاصيل حول أين تُصدر القواعد ضوضاء؟

أظهر تحليل YOLO11 نقطة الضعف في التحليل الساكن. فقد جاء جزء من التنبيهات عبر `pickle_check` بسبب `__builtin__.getattr`، وجزء آخر عبر `pytorch_zip_check` بسبب `__builtin__.set` وما شابهها من مؤشرات. والمشكلة أن `getattr` يمكن فعلًا استخدامها في سلاسل خبيثة للالتفاف على القواعد البدائية، لكنها في الوقت نفسه دالة Python عادية تظهر في الشيفرة السليمة أيضًا. أما حالة `set` فهي أكثر دلالة: فأحد الماسحات الداخلية في ModelAudit يعدّ هذا الاستيراد مقبولًا، بينما قد يصنّف ماسح آخر فضاء `builtin` كله على أنه مشبوه. لذلك يشدد المؤلف على أن الكثافة العالية للتحذيرات، حتى الحرجة منها، سب

ما أبرز التفاصيل حول المقارنة مع Hugging Face؟

في التجربة الثانية غيّر المؤلف زاوية العمل، وجمع قائمة نماذج سبق لأصحاب المستودعات أنفسهم أن وسموها بكلمات malicious وexploit وace وdeserialization وpoc. وبعد تصفية إضافية بواسطة LLM، مُرّرت هذه المجموعة عبر ModelAudit وقورنت نتائجها بالحالات المدمجة في Hugging Face. أظهرت المقارنة الأساسية توافقًا قويًا إلى حد ما: اعتبر الطرفان 154 مستودعًا خطرًا و49 آمنًا. وفي المقابل ظهرت 14 حالة رأت فيها ModelAudit مشكلة، بينما لم تُظهر Hugging Face أي شيء مريب. وأهم ما في الأمر أن بعض الإشارات المفيدة في ModelAudit لا تقتصر على مستويي warning وcritical. إذ يورد المقال مثال `jossefharus

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…