Dalam pelayan mel Exim
Dalam konfigurasi lalai, serangan boleh dilakukan tanpa komplikasi yang tidak perlu oleh pengguna tempatan, kerana ACL "sahkan = penerima" digunakan, yang melakukan pemeriksaan tambahan untuk alamat luaran. Serangan jauh boleh berlaku apabila tetapan ditukar, seperti bertindak sebagai MX sekunder untuk domain lain, mengalih keluar ACL "sahkan=penerima" atau perubahan tertentu pada local_part_suffix). Serangan jauh juga boleh dilakukan jika penyerang dapat memastikan sambungan ke pelayan dibuka selama 7 hari (contohnya, menghantar satu bait seminit untuk memintas tamat masa). Pada masa yang sama, ada kemungkinan terdapat vektor serangan yang lebih mudah untuk eksploitasi jauh masalah.
Kerentanan disebabkan oleh pengesahan alamat penerima yang salah dalam fungsi deliver_message() yang ditakrifkan dalam fail /src/deliver.c. Dengan memanipulasi pemformatan alamat, penyerang boleh mencapai penggantian datanya ke dalam hujah perintah yang dipanggil melalui fungsi execv() dengan hak akar. Operasi tidak memerlukan penggunaan teknik kompleks yang digunakan untuk limpahan penimbal atau kerosakan memori; penggantian aksara mudah sudah memadai.
Masalahnya berkaitan dengan penggunaan konstruk untuk penukaran alamat:
deliver_localpart = kembangkan_string(
string_sprintf("${local_part:%s}", baru->alamat));
deliver_domain = kembangkan_string(
string_sprintf("${domain:%s}", baru->alamat));
Fungsi expand_string() ialah penggabung yang terlalu rumit, termasuk mengenali perintah "${run{command arguments}", yang membawa kepada pelancaran pengendali luaran. Oleh itu, untuk menyerang dalam sesi SMTP, pengguna tempatan hanya perlu menghantar arahan seperti 'RCPT TO βusername+${run{...}}@localhostβ', di mana localhost ialah salah satu hos daripada senarai local_domains, dan nama pengguna ialah nama pengguna tempatan sedia ada.
Jika pelayan berfungsi sebagai penyampai mel, cukup untuk menghantar arahan 'RCPT KEPADA "${run{...}}@relaydomain.com" dari jauh, di mana relaydomain.com ialah salah satu hos yang disenaraikan dalam relay_to_domains bahagian tetapan. Memandangkan Exim tidak lalai untuk menggugurkan mod keistimewaan (deliver_drop_privilege = false), arahan yang dihantar melalui "${run{...}}" akan dilaksanakan sebagai root.
Perlu diperhatikan bahawa kelemahan itu
Pembetulan untuk versi terdahulu yang terus digunakan dalam pengedaran pada masa ini hanya tersedia sebagai
Sumber: opennet.ru