در سرور ایمیل Exim
در پیکربندی پیشفرض، حمله میتواند بدون پیچیدگیهای غیرضروری توسط یک کاربر محلی انجام شود، زیرا ACL "تأیید = گیرنده" اعمال میشود که بررسیهای اضافی را برای آدرسهای خارجی انجام میدهد. هنگامی که تنظیمات تغییر می کنند، می تواند یک حمله از راه دور رخ دهد، مانند عمل به عنوان یک MX ثانویه برای دامنه دیگر، حذف "verify=recipient" ACL، یا تغییرات خاصی در local_part_suffix). حمله از راه دور نیز در صورتی امکانپذیر است که مهاجم بتواند اتصال به سرور را به مدت 7 روز باز نگه دارد (مثلاً ارسال یک بایت در دقیقه برای دور زدن یک بازه زمانی). در عین حال، این امکان وجود دارد که بردارهای حمله ساده تری برای بهره برداری از راه دور از مشکل وجود داشته باشد.
این آسیب پذیری به دلیل تأیید نادرست آدرس گیرنده در تابع deliver_message() تعریف شده در فایل /src/deliver.c ایجاد می شود. با دستکاری فرمت آدرس، مهاجم میتواند به جایگزینی دادههای خود در آرگومانهای یک فرمان فراخوانی شده از طریق تابع execv() با حقوق ریشه دست یابد. عملیات نیازی به استفاده از تکنیکهای پیچیده مورد استفاده برای سرریز بافر یا تخریب حافظه ندارد، جایگزینی ساده کاراکتر کافی است.
مشکل مربوط به استفاده از ساختار برای تبدیل آدرس است:
deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->address));
deliver_domain = expand_string(
string_sprintf("${domain:%s}", new->address));
تابع ()expand_string یک ترکیب کننده بیش از حد پیچیده است، از جمله تشخیص دستور "${run{command arguments}" که منجر به راه اندازی یک کنترل کننده خارجی می شود. بنابراین، برای حمله در یک جلسه SMTP، یک کاربر محلی فقط باید دستوری مانند «RCPT TO «username+${run{...}}@localhost» را ارسال کند، جایی که localhost یکی از میزبانهای فهرست local_domains است. و نام کاربری نام یک کاربر محلی موجود است.
اگر سرور به عنوان یک رله نامه کار می کند، کافی است دستور 'RCPT را از راه دور به "${run{...}}@relaydomain.com" ارسال کنید، جایی که relaydomain.com یکی از میزبان های فهرست شده در relay_to_domains است. بخش تنظیمات از آنجایی که Exim به طور پیش فرض حالت امتیاز را حذف نمی کند (deliver_drop_privilege = false)، دستورات ارسال شده از طریق "${run{...}}" به عنوان root اجرا می شوند.
قابل ذکر است که آسیب پذیری بود
اصلاحی برای نسخههای قبلی که همچنان در توزیعها استفاده میشوند در حال حاضر فقط به عنوان موجود است
منبع: opennet.ru