Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
SE6013_Project — CVE-2026-4372: نموذج التهديد، تحليل السبب الجذري، الاستنساخ والكشف | Kitploit
أدوات/GitHubGitHub/alvin21mfmlai/se6013_project
أدوات دفاعيةالتحليل الثابتتحليل الثغرات الأمنيةأمن سلسلة التوريدالأوراق والأبحاثالتعلم والتعليمأمن الذكاء الاصطناعي
GitHubalvin21mfmlai/se6013_project

SE6013_Project

CVE-2026-4372: نموذج التهديد، تحليل السبب الجذري، الاستنساخ والكشف

عرض المستودع
منذ 17 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-4372: نموذج التهديد، السبب الجذري والدفاع

تحليل دفاعي لثغرة حرجة في التنفيذ عن بُعد للشيفرة (RCE) في مكتبة Hugging Face transformers.


المحتويات

  1. الثغرة في لمحة
  2. التأكيد من المصادر الأولية أولاً
  3. نموذج التهديد
  4. السبب الجذري
  5. الدفاع
  6. الكشف

1. الثغرة في لمحة

الحقلالقيمة
المعرّفCVE-2026-4372 / GHSA-29pf-2h5f-8g72
المكوّنHugging Face transformers
الفئةالتنفيذ عن بُعد للشيفرة (CWE-94، حقن الشيفرة)
نقطة الدخولAutoModelForCausalLM.from_pretrained()، عند تحميل نموذج
الآليةإعداد الانتباه في ملف config.json الخاص بالنموذج (attn_implementation / _attn_implementation_internal) يجعل المكتبة تُنزّل شيفرة المهاجم وتُشغّلها
الخاصية الرئيسيةتتجاوز trust_remote_code=False، وهو الإعداد الذي يعتمد عليه المستخدمون لمنع هذا بالضبط
تم إصلاحها فيtransformers 5.3.0

المستخدم الذي ترك trust_remote_code=False عمداً ليبقى آمناً كان لا يزال معرّضاً للخطر.


2. التأكيد من المصادر الأولية أولاً ⚠️

تحقّق من التفاصيل أدناه مقابل المصادر الرسمية قبل اعتبارها نهائية:

  • GHSA-29pf-2h5f-8g72 (تنبيه GitHub): الإصدارات المتأثرة والملخص.
  • مدخل NVD الخاص بـ CVE-2026-4372: درجة الخطورة ونوع الضعف.
  • التزام الإصلاح المرتبط من التنبيه: يُظهر بالضبط مسار الشيفرة الذي تم إغلاقه.

هناك وصفان للمُحرّض متداولان:

  1. حقل الانتباه في config.json (_attn_implementation_internal).
  2. حزمة kernels، التي غالباً ما تُثبَّت عبر transformers[all].

من المرجّح أنهما المسار نفسه: حقل الانتباه يسمّي مستودعاً على Hub، وحزمة kernels تُنزّل الشيفرة منه وتُشغّلها. اعتبر أسماء الحقول هنا مؤقتة حتى يؤكدها التزام الإصلاح.


3. نموذج التهديد

3.1 كيف يُحمَّل النموذج

[ Model repo on the Hub ]       untrusted source
        │  config.json, tokenizer, weights, (code)
        ▼
[ Download to local cache ]
        ▼
[ Read config.json ]            settings become a config object
        ▼
[ Pick model class + attention type ]
        ▼
[ Build model, load weights ]
        ▼
[ Model runs in the user's process, with the user's permissions ]

3.2 حدود الثقة

#الحدالحماية التي ينبغي أن تُطبَّق
TB-1Hub ← القرص المحليمستودعات موثوقة، وتثبيت على commit محدد
TB-2ملف الإعدادات ← كائن الإعداداتالسماح فقط بالقيم المعروفة والآمنة
TB-3كائن الإعدادات ← الكود قيد التشغيلtrust_remote_code
TB-4النموذج ← نظام التشغيلصندوق عزل (sandbox)، أقل صلاحية ممكنة

الخلل هو إخفاق عند TB-3: وصلت قيمة من ملف الإعدادات إلى تنفيذ الكود دون المرور بفحص trust_remote_code.

3.3 كيف يحصل الضحية على نموذج المهاجم

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

في كل الحالات لا يشغّل الضحية سوى الاستدعاء العادي، AutoModelForCausalLM.from_pretrained("<repo-id>").


4. السبب الجذري

4.1 كانت الحماية على المسار الخاطئ

يحمي trust_remote_code طريقة واحدة لتشغيل كود المستودع: ملفات modeling_*.py المخصصة. أما إعداد الانتباه فكان طريقة ثانية لم تمر قط عبر تلك الحماية.

     untrusted config.json attention setting
                    │
                    ▼
        "pick attention type" logic
                    │                  never checks:
                    ✗ ─────────────▶   trust_remote_code
                    ▼
     download + run code from the Hub (via `kernels`)

4.2 العوامل المساهمة

  1. مساران إلى الإجراء الخطير نفسه، أحدهما فقط محمي.
  2. تم التعامل مع إعداد يختار الشيفرة كبيانات عادية، بمستوى ثقة رقم.
  3. كان لا يزال بالإمكان تعيين حقل "داخلي" (بادئة _) من ملف غير موثوق.
  4. حزمة اختيارية (kernels) مكّنت الهجوم بصمت عند تثبيتها، على سبيل المثال عبر transformers[all].

4.3 الدرس

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


5. الدفاع

الدفاع هو سكربت واحد مكتفٍ ذاتيًا، defence/safe_load.py. تحل دالته safe_from_pretrained() محل from_pretrained() وتنفذ أربعة فحوص قبل تحميل أي نموذج. إذا فشل أحدها، فإنه يرفع UnsafeModelLoad ولا يُحمَّل أي شيء.

#الفحصما الذي يفعله
1الإصداريرفض إذا كان transformers أقدم من 5.3.0. هذا هو الإصلاح الحقيقي.
2Kernelsعلى إصدار قديم، يرفض إذا كانت حزمة kernels مثبتة، لأن الهجوم يحتاجها.
3الإعداديقرأ ملفات إعداد النموذج ويرفض إذا كانت تحتوي على إعداد خطير (انظر أدناه). تُفحص نماذج Hub وتُحمَّل عند الـ commit نفسه.
4الشيفرة البعيدةيعيّن دائمًا trust_remote_code=False. ممارسة جيدة فقط: هذه الثغرة تتجاوزها.

يُرفض الإصدار القديم عند الفحص 1. لا يُنفَّذ الفحصان 2 و3 على إصدار قديم إلا إذا عُيّن الخيار المخصص للمختبر فقط allow_vulnerable_env=True.

ما الذي يحجبه الفحص 3:

  • إعداد انتباه (attn_implementation، _attn_implementation، _attn_implementation_internal) غير مدمج. يُسمح فقط بـ eager، sdpa، flash_attention_2، flash_attention_3 وflex_attention، لذا تُحجب قيمة مثل attacker-org/evil-kernel، حتى داخل إعداد فرعي متداخل.
  • الحقول _attn_implementation_internal، auto_map وcustom_pipelines.
  • ملفات الإعداد التي لا يمكن قراءتها.
  • إعداد يُمرَّر مباشرة عبر config=، لأنه سيتجاوز الفحص.

بالنسبة لنماذج Hub، تُنزَّل ملفات الإعداد فقط، وليس الأوزان أو الشيفرة أبدًا. تُنزَّل عند commit ثابت واحد، ثم يُحمَّل النموذج من الـ commit نفسه، لذا لا يمكن استبدال الملفات بين الفحص والتحميل. بعد مراجعة التحذيرات، يمكن لشخص تجاوز الفحص 3 عبر accept_findings=True.

الحالةما الذي يوقف الهجوم
transformers 5.3.0 أو أحدثالفحص 1
إصدار قديم، kernels مثبتةالفحص 2
إصدار قديم، إعداد خطير في الإعدادالفحص 3
تغيّر المستودع بعد فحصهالفحص 3 (نفس الـ commit يُفحص ويُحمَّل)

القيد: يعرف الفحص 3 فقط الإعدادات المذكورة أعلاه، لذا لا يمكنه اكتشاف هجوم جديد. الترقية إلى transformers>=5.3.0 هي الإصلاح الكامل الوحيد.


6. الكشف

يكشف مكوّن الكشف عن إعدادات نماذج Hugging Face التي قد تكون غير آمنة والاعتماديات المعرضة للخطر المرتبطة بـ CVE-2026-4372. يوفر آليتي كشف مستقلتين: الفحص الساكن للإعداد وتحليل الاعتماديات.

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

6.1 الكشف الساكن للإعداد

الملف: src/detection/static_detector.py

يحلّل الكاشف الساكن ملفات config.json ويفحص بشكل تكراري كائنات JSON المتداخلة والمصفوفات بحثًا عن الحقول الحساسة أمنيًا.

تُراقَب الحقول التالية:

حقل الإعدادغرض الكشف
_attn_implementation_internalحقل إعداد الانتباه الداخلي المرتبط بـ CVE-2026-4372
_experts_implementation_internalحقل تنفيذ داخلي إضافي يتطلب المراجعة
auto_mapقد يشير إلى شيفرة تنفيذ نموذج مخصصة
custom_pipelinesقد يشير إلى تنفيذات pipeline مخصصة

الاستخدام:

cd src/detection
python3 static_detector.py samples/suspicious_config.json

مثال على المخرجات:

[WARNING] samples/suspicious_config.json: review field '_attn_implementation_internal'

رموز الخروج:

رمز الخروجالمعنى
0PASS — لم يتم اكتشاف أي حقول مراقبة
1WARNING — تم اكتشاف حقل مراقب واحد أو أكثر
2ERROR — JSON غير صالح، أو ملف مفقود، أو خطأ في المعالجة

وجود حقل مراقب لا يشير بالضرورة إلى استغلال. تتطلب النتائج مزيدًا من التحقيق.

6.2 اكتشاف التبعيات

الملف: src/detection/dependency_detector.py

يفحص كاشف التبعيات بيئة Python لتحديد ما يلي:

  • إصدار Hugging Face Transformers المثبّت
  • إصدار حزمة kernels المثبّتة، إن كانت متاحة
  • ما إذا كانت حزمة kernels الاختيارية قابلة للاستيراد
  • ما إذا كان إصدار Transformers يقع ضمن النطاق المتأثر الموثّق

الاستخدام:

تنزيل الأداة