شرکت کوالیز
مشکل به دلیل وجود اشکال در کدی است که نامه را به سرور پست الکترونیکی راه دور (نه در کدی که اتصالات ورودی را مدیریت می کند) تحویل می دهد. حمله هم در سمت مشتری و هم در سمت سرور امکان پذیر است. در سمت کلاینت، حمله در پیکربندی پیشفرض OpenSMTPD امکانپذیر است، که در آن OpenSMTPD درخواستها را فقط در رابط شبکه داخلی (localhost) میپذیرد و پیامهای ایمیل را به سرورهای خارجی ارسال میکند. برای سوء استفاده از آسیبپذیری، کافی است که در حین تحویل نامه، 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 نیز
مشکل نتیجه حذف ناقص است
قابل توجه است که در فدورا 31 آسیب پذیری به شما امکان می دهد فوراً امتیازات گروه ریشه را به دست آورید ، زیرا فرآیند smtpctl به جای پرچم setgid smtpq به پرچم ریشه setgid مجهز شده است. با دسترسی به گروه ریشه، می توانید محتویات /var/lib/sss/mc/passwd را بازنویسی کنید و به سیستم دسترسی ریشه کامل داشته باشید.
منبع: opennet.ru