CVE-2026-66079 in RabbitMQ
الملخص
بحسب VulDB • 23/09/2026
RabbitMQ هو وسيط للرسائل والتدفق (streaming). قبل الإصدارات 3.13.15، و4.0.20، و4.1.11، و4.2.6، تُرجع الدالة `parse_array_primitive/2` الخاصة بالبناء (constructor) ذي المعرف 0x45 (list0) عنصراً بعرض بايت B = 0. يقوم مُحلل المصفوفة المحيطة (`array32`) في السطر 148 بقراءة عداد من 4 بايتات `Count` من الشبكة، ثم يكرر الحلقة لعدد `Count` مرة مستهلكاً B بايت لكل تكرار؛ وبما أن B = 0، فلا يتم استهلاك أي مدخلات، وتبني الحلقة قائمةً تحتوي على عدد `Count` من العناصر الفارغة، مقيدة فقط بحقل الـ32 بت. يُحلل إطار SASL-mechanisms / SASL-init بواسطة الدالة `amqp10_framing:decode_bin/1` الموجودة في الملف `rabbit_amqp_reader.erl` عند السطر 412 قبل اكتمال المصادقة. تحدد قيمة `incoming_max_frame_size` (افتراضياً 8192 بايت) الحد الأقصى لحجم الإطار، وليس حقل العداد `Count`، وبالتالي يتم قبول حمولة حجمها حوالي 19 بايتاً مع تعيين `Count = 0xFFFFFFFF`. لا يوجد حد أقصى لذاكرة المكدس (`max_heap_size`) مُعدّ على عملية القارئ. يمكن لمهاجم عبر الشبكة غير مصرح له بإجراء هجوم حجب الخدمة (DoS) ضد أي عقدة RabbitMQ التي يكون فيها مستمع AMQP 1.0 مفعلاً (المنفذ الافتراضي هو 5672)، عن طريق إرسال إطار واحد بحجم حوالي 19 بايتاً. تحاول عملية القارئ بناء قائمة تحتوي على حوالي 4 مليار عنصر فارغ، مما يستنفد ذاكرة المكدس ويؤدي إلى إنهاء تشغيل بيئة Erlang VM. تفقد جميع المستأجرين والبروتوكولات الموجودة على العقدة الخدمة الخاصة بها. تشمل الشروط المسبقة إمكانية الوصول الشبكي إلى مستمع AMQP (المنفذ 5672، وهو مفعّل افتراضياً) وعدم الحاجة إلى المصادقة. تم إصلاح هذه المشكلة في الإصدارات 3.13.15، و4.0.20، و4.1.11، و4.2.6.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.