آسیب‌پذیری‌هایی در OpenSMTPD که امکان دسترسی ریشه از راه دور و محلی را فراهم می‌کند

شرکت کوالیز آشکار کرد یکی دیگر از آسیب پذیری های بحرانی راه دور (CVE-2020-8794) در سرور ایمیل OpenSMTPD، توسعه یافته توسط پروژه OpenBSD. مانند موردی که در پایان ژانویه شناسایی شد آسیب پذیری، یک مشکل جدید اجرای دستورات پوسته دلخواه را از راه دور بر روی سروری با حقوق کاربر ریشه امکان پذیر می کند. آسیب پذیری حذف شده است در موضوع OpenSMTPD 6.6.4p1.

مشکل به دلیل وجود اشکال در کدی است که نامه را به سرور پست الکترونیکی راه دور (نه در کدی که اتصالات ورودی را مدیریت می کند) تحویل می دهد. حمله هم در سمت مشتری و هم در سمت سرور امکان پذیر است. در سمت کلاینت، حمله در پیکربندی پیش‌فرض 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 نیز شناخته شده است آسیب‌پذیری دیگر (CVE-2020-8793) که به کاربر محلی اجازه می‌دهد خط اول هر فایلی را در سیستم بخواند. به عنوان مثال، می توانید خط اول /etc/master.passwd را بخوانید که حاوی هش رمز عبور کاربر اصلی است. این آسیب‌پذیری همچنین به شما امکان می‌دهد کل محتویات یک فایل متعلق به کاربر دیگری را بخوانید، اگر این فایل در همان سیستم فایلی که دایرکتوری /var/spool/smtpd/ قرار دارد، باشد. این مشکل در بسیاری از توزیع‌های لینوکس که مقدار /proc/sys/fs/protected_hardlinks روی 1 تنظیم شده است قابل بهره‌برداری نیست.

مشکل نتیجه حذف ناقص است چالش ها و مسائل، در طول ممیزی انجام شده توسط Qualys در سال 2015 بیان شد. یک مهاجم می تواند با استفاده از حقوق گروه “_smtpq” با تنظیم متغیر “PATH=.” به اجرای کد خود دست یابد. و قرار دادن اسکریپتی به نام makemap در دایرکتوری فعلی (ابزار smtpctl makemap را بدون تعیین صریح مسیر اجرا می کند). با دسترسی به گروه "_smtpq"، مهاجم می‌تواند شرایط مسابقه ایجاد کند (یک فایل بزرگ در فهرست آفلاین ایجاد کند و یک سیگنال SIGSTOP ارسال کند) و قبل از تکمیل پردازش، فایل موجود در فهرست آفلاین را با یک فایل سخت جایگزین کند. symlink اشاره به فایل مورد نظر که محتویات آن باید خوانده شود.

قابل توجه است که در فدورا 31 آسیب پذیری به شما امکان می دهد فوراً امتیازات گروه ریشه را به دست آورید ، زیرا فرآیند smtpctl به جای پرچم setgid smtpq به پرچم ریشه setgid مجهز شده است. با دسترسی به گروه ریشه، می توانید محتویات /var/lib/sss/mc/passwd را بازنویسی کنید و به سیستم دسترسی ریشه کامل داشته باشید.

منبع: opennet.ru

اضافه کردن نظر