مشكلة
يخصص الكود الذي يستدعي string_interpret_escape() مخزنًا مؤقتًا للتصريف بناءً على الحجم الفعلي، وينتهي المؤشر المكشوف في منطقة خارج حدود المخزن المؤقت. وبناء على ذلك، عند محاولة معالجة سلسلة إدخال، ينشأ موقف عند قراءة البيانات من منطقة خارج حدود المخزن المؤقت المخصص، ويمكن أن تؤدي محاولة كتابة سلسلة غير قابلة للإلغاء إلى الكتابة خارج حدود المخزن المؤقت.
في التكوين الافتراضي، يمكن استغلال الثغرة الأمنية عن طريق إرسال بيانات مصممة خصيصًا إلى SNI عند إنشاء اتصال آمن بالخادم. يمكن أيضًا استغلال المشكلة عن طريق تعديل قيم النظير في التكوينات التي تم تكوينها لمصادقة شهادة العميل أو عند استيراد الشهادات. من الممكن الهجوم عبر SNI وpeerdn بدءًا من الإصدار
تم إعداد نموذج أولي للاستغلال للهجوم عبر SNI، الذي يعمل على معماريات i386 وamd64 على أنظمة Linux مع Glibc. يستخدم هذا الاستغلال تراكب البيانات في منطقة الكومة، مما يؤدي إلى الكتابة فوق الذاكرة التي تم تخزين اسم ملف السجل فيها. يتم استبدال اسم الملف بـ "/../../../../../../../../etc/passwd". بعد ذلك، تتم الكتابة فوق المتغير الذي يحتوي على عنوان المرسل، والذي يتم حفظه أولاً في السجل، مما يسمح لك بإضافة مستخدم جديد إلى النظام.
تحديثات الحزمة مع إصلاحات الثغرات الأمنية التي أصدرتها التوزيعات
كحل بديل لمنع الثغرة الأمنية، يمكنك تعطيل دعم TLS أو إضافته
قسم قائمة التحكم بالوصول "acl_smtp_mail":
شرط الرفض = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
شرط الرفض = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
المصدر: opennet.ru