Kök imtiyazları olan serverdə kodun icrasına imkan verən Exim-də kritik zəiflik

Exim poçt serverində müəyyən edilmişdir kritiческая zəiflik (CVE-2019-10149), xüsusi hazırlanmış sorğunu emal edərkən kök hüquqları ilə serverdə uzaqdan kodun icrasına səbəb ola bilər. Problemin istismarı ehtimalı 4.87-dən 4.91-ə qədər olan versiyalarda və ya EXPERIMENTAL_EVENT seçimi ilə qurularkən qeyd edilmişdir.

Standart konfiqurasiyada hücum yerli istifadəçi tərəfindən lazımsız fəsadlar olmadan həyata keçirilə bilər, çünki xarici ünvanlar üçün əlavə yoxlamalar həyata keçirən "doğrulayın = alıcı" ACL tətbiq olunur. Parametrlər dəyişdirildikdə, məsələn, başqa bir domen üçün ikincil MX kimi fəaliyyət göstərdikdə, "doğrulama=alıcı" ACL-nin silinməsi və ya local_part_suffix-də müəyyən dəyişikliklər) uzaqdan hücum baş verə bilər. Təcavüzkar serverlə əlaqəni 7 gün ərzində açıq saxlaya bilsə (məsələn, fasilədən yan keçmək üçün dəqiqədə bir bayt göndərməklə) uzaqdan hücum da mümkündür. Eyni zamanda, problemin uzaqdan istismarı üçün daha sadə hücum vektorlarının olması mümkündür.

Zəiflik /src/deliver.c faylında müəyyən edilmiş çatdırılma_message() funksiyasında alıcının ünvanının düzgün yoxlanılması nəticəsində yaranır. Ünvan formatını manipulyasiya etməklə, təcavüzkar öz məlumatlarını kök hüquqları ilə execv() funksiyası vasitəsilə çağırılan əmrin arqumentləri ilə əvəz edə bilər. Əməliyyat bufer daşması və ya yaddaşın pozulması üçün istifadə olunan mürəkkəb texnikaların istifadəsini tələb etmir;

Problem ünvan çevrilməsi üçün konstruksiyadan istifadə ilə bağlıdır:

çatdırılma_localpart = genişləndirmə_sətri(
string_sprintf("${yerli_hissə:%s}", yeni->ünvan));
çatdırılma_domen = genişləndirmə_sətri(
string_sprintf("${domain:%s}", yeni->ünvan));

Expand_string() funksiyası xarici işləyicinin işə salınmasına səbəb olan “${run{command arguments}” əmrinin tanınması da daxil olmaqla həddən artıq mürəkkəb birləşdiricidir. Beləliklə, SMTP sessiyası daxilində hücum etmək üçün yerli istifadəçi yalnız “RCPT TO “username+${run{...}}@localhost” kimi bir əmr göndərməlidir, burada localhost local_domains siyahısındakı hostlardan biridir, istifadəçi adı isə mövcud yerli istifadəçinin adıdır.

Əgər server poçt relayı kimi işləyirsə, 'RCPT TO "${run{...}}@relaydomain.com"' əmrini uzaqdan göndərmək kifayətdir, burada relaydomain.com relay_to_domains siyahısında qeyd olunan hostlardan biridir. parametrlər bölməsi. Exim imtiyaz rejimini defolt olaraq buraxmadığından (deliver_drop_privilege = false), "${run{...}}" vasitəsilə ötürülən əmrlər kök kimi yerinə yetiriləcək.

Zəifliyin olması diqqət çəkir aradan qaldırıldı Fevral ayında yayımlanan 4.92 buraxılışında, düzəlişin təhlükəsizlik problemlərinə səbəb ola biləcəyi vurğulanmadı. Exim tərtibatçıları tərəfindən zəifliyin qəsdən gizlədildiyinə inanmaq üçün heç bir əsas yoxdur, çünki problem əməliyyat zamanı aradan qaldırılıb. düzəlişlər səhv ünvanlar ötürüldükdə baş verən uğursuzluq və zəiflik Exim-də dəyişikliklərin auditi zamanı Qualys tərəfindən müəyyən edilib.

Dağıtımlarda istifadə olunmağa davam edən əvvəlki versiyalar üçün düzəliş hazırda yalnız olaraq mövcuddur yamaq. Problemi həll etmək üçün əvvəlki filiallar üçün düzəldici buraxılışlar iyunun 11-nə planlaşdırılır. Paket yeniləmələri hazırdır Debian, Ubuntu, openSUSE. Arch Linux и Fedora Problemin görünmədiyi 4.92 versiyasını təqdim edirlər. RHEL və CentOS problemi həssas deyil, çünki Exim onların adi paket deposuna daxil deyil.

Mənbə: opennet.ru

Добавить комментарий