جزئیات آسیب پذیری حیاتی در Exim فاش شد

منتشر شده انتشار اصلاحی Exim 4.92.2 با حذف بحرانی آسیب پذیری ها (CVE-2019-15846) که در پیکربندی پیش فرض می تواند منجر به اجرای کد از راه دور توسط یک مهاجم با امتیازات ریشه شود. مشکل تنها زمانی ظاهر می شود که پشتیبانی TLS فعال باشد و با ارسال یک گواهی مشتری طراحی شده خاص یا مقدار تغییر یافته به SNI مورد سوء استفاده قرار گیرد. آسیب پذیری شناخته شده است توسط Qualys.

مشکل حاضر در کنترل کننده برای فرار از کاراکترهای خاص در رشته (string_interpret_escape() از string.c) و ناشی از آن است که کاراکتر '\' در انتهای رشته قبل از کاراکتر تهی ('\0') تفسیر شده و از آن فرار می کند. هنگام فرار، دنباله '\' و کد انتهای خط تهی زیر به عنوان یک کاراکتر واحد در نظر گرفته می شوند و اشاره گر به داده های خارج از خط منتقل می شود، که به عنوان ادامه خط در نظر گرفته می شود.

کدی که () string_interpret_escape را فراخوانی می‌کند، بافری را بر اساس اندازه واقعی برای درن اختصاص می‌دهد و نشانگر در معرض دید به ناحیه‌ای خارج از محدوده بافر ختم می‌شود. بر این اساس، هنگام تلاش برای پردازش یک رشته ورودی، هنگام خواندن داده‌ها از ناحیه‌ای خارج از محدوده بافر اختصاص‌یافته، وضعیتی پیش می‌آید و تلاش برای نوشتن یک رشته بدون فرار می‌تواند منجر به نوشتن فراتر از مرزهای بافر شود.

در پیکربندی پیش‌فرض، هنگام ایجاد یک اتصال امن به سرور، می‌توان از آسیب‌پذیری با ارسال داده‌های طراحی شده ویژه به SNI سوء استفاده کرد. این مشکل همچنین می تواند با تغییر مقادیر peerdn در پیکربندی های پیکربندی شده برای تأیید اعتبار گواهی مشتری یا هنگام وارد کردن گواهی ها مورد سوء استفاده قرار گیرد. حمله از طریق SNI و peerdn از زمان انتشار امکان پذیر است Exim 4.80، که در آن از تابع string_unprinting() برای unprint کردن محتویات peerdn و SNI استفاده شده است.

یک نمونه اولیه اکسپلویت برای حمله از طریق SNI آماده شده است که بر روی معماری i386 و amd64 در سیستم های لینوکس با Glibc اجرا می شود. این اکسپلویت از همپوشانی داده ها در ناحیه پشته استفاده می کند و در نتیجه حافظه ای را که نام فایل log در آن ذخیره می شود، بازنویسی می کند. نام فایل با "/../../../../../../../../etc/passwd" جایگزین می شود. در مرحله بعد، متغیر با آدرس فرستنده بازنویسی می شود که ابتدا در گزارش ذخیره می شود و به شما امکان می دهد یک کاربر جدید به سیستم اضافه کنید.

به روز رسانی بسته با رفع آسیب پذیری های منتشر شده توسط توزیع ها دبیان, اوبونتو, کلاه نمدی مردانه, SUSE/openSUSE и FreeBSD. مشکل RHEL و CentOS مستعد نیست، از آنجایی که Exim در مخزن بسته معمولی آنها گنجانده نشده است (در گرم обновление قبلا شکل گرفت، اما در حال حاضر قرار داده نشده است به یک مخزن عمومی). در کد Exim مشکل با یک خط حل شده است پچ، که جلوه فرار بک اسلش را اگر در انتهای خط باشد غیرفعال می کند.

به عنوان یک راه حل برای جلوگیری از آسیب پذیری، می توانید پشتیبانی TLS را غیرفعال کنید یا اضافه کنید
بخش ACL "acl_smtp_mail":

شرط انکار = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
شرط انکار = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

منبع: opennet.ru

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