تم الكشف عن ثغرة أمنية حاسمة في Exim

نشرت الافراج التصحيحي إكسيم 4.92.2 مع القضاء على الحرجة نقاط الضعف (CVE-2019-15846)، والذي يمكن أن يؤدي في التكوين الافتراضي إلى تنفيذ تعليمات برمجية عن بعد بواسطة مهاجم يتمتع بامتيازات الجذر. تظهر المشكلة فقط عند تمكين دعم TLS ويتم استغلالها عن طريق تمرير شهادة عميل مصممة خصيصًا أو قيمة معدلة إلى SNI. وهن المحددة بواسطة كواليس.

مشكلة حاضر في المعالج للهروب من الأحرف الخاصة في السلسلة (string_interpret_escape() من string.c) وينتج عن تفسير الحرف '\' في نهاية السلسلة قبل الحرف الفارغ ('\0') والهروب منه. عند الهروب، يتم التعامل مع التسلسل '\' ورمز نهاية السطر الفارغ التالي كحرف واحد ويتم تحويل المؤشر إلى بيانات خارج السطر، والتي يتم التعامل معها على أنها استمرار للسطر.

يخصص الكود الذي يستدعي string_interpret_escape() مخزنًا مؤقتًا للتصريف بناءً على الحجم الفعلي، وينتهي المؤشر المكشوف في منطقة خارج حدود المخزن المؤقت. وبناء على ذلك، عند محاولة معالجة سلسلة إدخال، ينشأ موقف عند قراءة البيانات من منطقة خارج حدود المخزن المؤقت المخصص، ويمكن أن تؤدي محاولة كتابة سلسلة غير قابلة للإلغاء إلى الكتابة خارج حدود المخزن المؤقت.

في التكوين الافتراضي، يمكن استغلال الثغرة الأمنية عن طريق إرسال بيانات مصممة خصيصًا إلى SNI عند إنشاء اتصال آمن بالخادم. يمكن أيضًا استغلال المشكلة عن طريق تعديل قيم النظير في التكوينات التي تم تكوينها لمصادقة شهادة العميل أو عند استيراد الشهادات. من الممكن الهجوم عبر SNI وpeerdn بدءًا من الإصدار إكسيم 4.80، حيث تم استخدام الدالة string_unprinting() لإلغاء طباعة محتويات النظير وSNI.

تم إعداد نموذج أولي للاستغلال للهجوم عبر SNI، الذي يعمل على معماريات i386 وamd64 على أنظمة Linux مع Glibc. يستخدم هذا الاستغلال تراكب البيانات في منطقة الكومة، مما يؤدي إلى الكتابة فوق الذاكرة التي تم تخزين اسم ملف السجل فيها. يتم استبدال اسم الملف بـ "/../../../../../../../../etc/passwd". بعد ذلك، تتم الكتابة فوق المتغير الذي يحتوي على عنوان المرسل، والذي يتم حفظه أولاً في السجل، مما يسمح لك بإضافة مستخدم جديد إلى النظام.

تحديثات الحزمة مع إصلاحات الثغرات الأمنية التي أصدرتها التوزيعات ديبيان, أوبونتو, فيدورا, SUSE / openSUSE и فري. مشكلة RHEL وCentOS غير عرضة، نظرًا لأن Exim لم يتم تضمينه في مستودع الحزم العادي الخاص به (في EPEL обновление قد شكلت، لكن الان لم يتم وضعها إلى المستودع العام). في كود Exim، تم إصلاح المشكلة باستخدام سطر واحد رقعة، مما يؤدي إلى تعطيل تأثير الهروب للشرطة المائلة العكسية إذا كانت في نهاية السطر.

كحل بديل لمنع الثغرة الأمنية، يمكنك تعطيل دعم TLS أو إضافته
قسم قائمة التحكم بالوصول "acl_smtp_mail":

شرط الرفض = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
شرط الرفض = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

المصدر: opennet.ru

إضافة تعليق