
استغلال إثبات المفهوم لـ CVE-2023-29929، وهو تجاوز سعة المخزن المؤقت في تحليل DNS في Kemp LoadMaster مما يسبب حرمان الخدمة عن بُعد عبر طلبات DNS مصممة خصيصًا.
أجهزة كيمب لوادماستر (البرامج الثابتة < 7.2.60) تعاني من ثغرة تجاوز السعة الخطيرة في الطريقتين isreverse() وlocate_fqdn() من مكتبة libkemplink.so. ينشأ الثغرة من مخزن مؤقت صغير الحجم (256 بايت) مخصص لأسماء DNS، والتي يمكن استغلالها بإرسال طلب DNS مُصمَّم خصيصًا يحتوي على أحرف خاصة أو يونيكود.
يؤدي الاستغلال الناجح إلى تعطل فوري وحالة رفض الخدمة (DoS). وجود رمز الحماية (stack canary) يمنع المزيد من الاستغلال، لكن لا يمكن استبعاد إمكانية تنفيذ التعليمات البرمجية عن بُعد (RCE) إذا وجد المهاجم ثغرة أخرى لتسريب رمز الحماية.
يمكن تشغيل الثغرة بسهولة عن طريق إرسال طلب DNS عبر TCP أو UDP إلى خدمات DNS المكشوفة لجهاز لوادماستر. نموذج إثبات بسيط هو:
dig @kempdeviceip 😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀😀😀.😀😀.com (في بعض توزيعات لينكس، قد تحتاج إلى إضافة +noidnout +noidnin)
يستغل الاستغلال خطوة معينة في عملية تحليل اسم DNS. بينما المخزن المؤقت المخصص (256 بايت) هو الحجم الأقصى القياسي لأسماء DNS المرسلة عبر الشبكة، ونموذج الإثبات يقع ضمن هذا الحد، إلا أن الأحرف الخاصة واليونيكود تتوسع في الحجم عند الهروب أثناء المعالجة. وبالتالي، يتجاوز حجم المخزن المؤقت بعد الهروب التخصيص الأصلي. تشير وثائق مكتبة Bind9 والشفرة المصدرية (التي يعتمد عليها مكون DNS) إلى أن مخزنًا مؤقتًا بحجم 1004 بايت على الأقل ضروري للتشغيل الآمن، مع توصية بحجم محافظ يبلغ 1023 بايت. لمزيد من التفاصيل، انظر هنا.
الجدول الزمني: