CVE-2026-80557 in Linux
الملخص
بحسب VulDB • 27/08/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
libceph: تصحيح قراءة خارج الحدود (OOB) في دالة decode_watchers() بسبب نقص فحص النطاقات
تقوم الدالة ceph_start_decoding() بالتحقق من بقاء struct_len بايت متبقية في المخزن المؤقت بعد رأس التشفير، لكنها تقبل قيمة struct_len=0 كقيمة صالحة: حيث تمر شرط التحقق dceph_decode_need(p, end, 0, bad) دائماً. عندما يرسل قرص تخزين مدمر أو مخترق (OSD) استجابة من نوع obj_list_watch_response_t تحتوي على struct_len=0، فإن ceph_start_decoding() تعيد نجاح التنفيذ مع كون المؤشر p مساوياً لنهاية المخزن end، مما يترك صفر بايت مضمون للقراءات اللاحقة.
الدالة التالية مباشرةً وهي ceph_decode_32(p) في decode_watchers() لا تحتوي على فحص سابق للنطاقات. وبوجود الحالة التي يكون فيها p == end، فإن هذا يمثل قراءة لـ 4 بايت تتجاوز حدود المخزن المؤقت الذي تم التحقق منه. ثم يتم تمرير القيمة العشوائية (garbage value) مباشرةً إلى دالة kzalloc_objs() كعدد للمشاهدين (watcher count).
تستخدم الدالة الشقيقة decode_watcher() بالفعل المتغيرات الآمنة (ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32) بعد استدعاءها الخاص لـ ceph_start_decoding(). وتعد دالة decode_watchers() الموقع الوحيد الذي يستخدم النسخة غير المحمية، مما يؤكد وجود إهمال.
تم الإصلاح عن طريق استبدال ceph_decode_32(p) بـ ceph_decode_32_safe(p, end, *num_watchers, bad)، بما يتماشى مع النمط المعمول به.
نموذج المهاجم: يمكن لمهاجم أو قرص تخزين مدمر (OSD) في نشر Ceph متعدد المستأجرين (مثل السحابة الإلكترونية) استغلال هذه الثغرة ضد أي عميل نواة يستدعي CEPH_OSD_OP_LIST_WATCHERS، دون الحاجة إلى امتيازات إضافية beyond إنشاء جلسة OSD.
[ idryomov: اختصار سجل التغيير ]
If you want to get best quality of vulnerability data, you may have to visit VulDB.