شركة كواليس
سبب المشكلة هو وجود خطأ في التعليمات البرمجية التي تقوم بتسليم البريد إلى خادم البريد البعيد (وليس في التعليمات البرمجية التي تعالج الاتصالات الواردة). الهجوم ممكن من جانب العميل ومن جانب الخادم. من جانب العميل، يكون الهجوم ممكنًا في التكوين الافتراضي لـ OpenSMTPD، حيث يقبل OpenSMTPD الطلبات فقط على واجهة الشبكة الداخلية (المضيف المحلي) ويرسل رسائل بريد إلى خوادم خارجية. لاستغلال الثغرة الأمنية، يكفي أنه أثناء تسليم الرسالة، يقوم OpenSMTPD بإنشاء جلسة مع خادم بريد يتحكم فيه المهاجم، أو أن يتمكن المهاجم من الدخول في اتصال العميل (MITM أو إعادة التوجيه أثناء الهجمات عبر DNS أو BGP ).
بالنسبة للهجوم من جانب الخادم، يجب تكوين OpenSMTPD لتلقي طلبات الشبكة الخارجية من خوادم بريد أخرى أو خدمة خدمات الجهات الخارجية التي تسمح لك بإرسال طلب إلى بريد إلكتروني عشوائي (على سبيل المثال، نماذج تأكيد العنوان على مواقع الويب). على سبيل المثال، يمكن للمهاجم الاتصال بخادم OpenSMTPD وإرسال خطاب غير صحيح (لمستخدم غير موجود)، مما سيؤدي إلى استجابة بإرسال خطاب به رمز خطأ (ترتد) إلى خادم المهاجم. يمكن للمهاجم استغلال الثغرة الأمنية عندما يتصل OpenSMTPD لتسليم إشعار إلى خادم المهاجم. يتم وضع أوامر الصدفة التي تم إدخالها أثناء الهجوم في ملف يتم تنفيذه باستخدام حقوق الجذر عند إعادة تشغيل OpenSMTPD، لذلك يجب على المهاجم انتظار إعادة تشغيل OpenSMTPD أو بدء تعطل OpenSMTPD لإكمال الهجوم.
المشكلة موجودة في الدالة mta_io() في التعليمات البرمجية لتحليل الاستجابة متعددة الأسطر التي يتم إرجاعها بواسطة الخادم البعيد بعد إنشاء اتصال (على سبيل المثال، "250-ENHANCEDSTATUSCODES" و"250 HELP"). يحسب OpenSMTPD أن السطر الأول يتضمن رقمًا مكونًا من ثلاثة أرقام ونصًا مفصولاً بحرف "-"، ويحتوي السطر الثاني على رقم مكون من ثلاثة أرقام ونصًا مفصولاً بمسافة. إذا لم يكن الرقم المكون من ثلاثة أرقام متبوعًا بمسافة ونص في السطر الثاني، فسيتم تعيين المؤشر المستخدم لتعريف النص على البايت الذي يلي الحرف '\0' ويتم إجراء محاولة لنسخ البيانات بعد النهاية من الخط في المخزن المؤقت.
وبناءً على طلب مشروع OpenBSD، تم تأجيل نشر التفاصيل حول استغلال الثغرة حتى 26 فبراير للسماح للمستخدمين بتحديث أنظمتهم. كانت المشكلة موجودة في قاعدة التعليمات البرمجية منذ ديسمبر 2015، ولكن الاستغلال قبل تنفيذ التعليمات البرمجية بامتيازات الجذر أصبح ممكنًا منذ مايو 2018. أعد الباحثون نموذجًا أوليًا عمليًا للاستغلال، والذي تم اختباره بنجاح في إصدارات OpenSMTPD لـ OpenBSD 6.6 وOpenBSD 5.9 وDebian 10 وDebian 11 (اختبار) وFedora 31.
في OpenSMTPD أيضًا
المشكلة هي نتيجة للتخلص غير الكامل
من الجدير بالذكر أن الثغرة الأمنية في Fedora 31 تسمح لك بالحصول على امتيازات المجموعة الجذرية على الفور، نظرًا لأن عملية smtpctl مجهزة بعلامة جذر setgid، بدلاً من علامة setgid smtpq. من خلال الوصول إلى المجموعة الجذرية، يمكنك الكتابة فوق محتويات /var/lib/sss/mc/passwd والحصول على حق الوصول الكامل إلى الجذر إلى النظام.
المصدر: opennet.ru