Di server email Exim
Dalam konfigurasi default, serangan dapat dilakukan tanpa komplikasi yang tidak perlu oleh pengguna lokal, karena ACL “verifikasi = penerima” diterapkan, yang melakukan pemeriksaan tambahan untuk alamat eksternal. Serangan jarak jauh dapat terjadi ketika pengaturan diubah, seperti bertindak sebagai MX sekunder untuk domain lain, menghapus ACL "verify=recipient", atau perubahan tertentu pada local_part_suffix). Serangan jarak jauh juga mungkin terjadi jika penyerang mampu menjaga koneksi ke server tetap terbuka selama 7 hari (misalnya, mengirimkan satu byte per menit untuk melewati batas waktu). Pada saat yang sama, ada kemungkinan bahwa terdapat vektor serangan yang lebih sederhana untuk eksploitasi masalah dari jarak jauh.
Kerentanan ini disebabkan oleh kesalahan verifikasi alamat penerima dalam fungsi delivery_message() yang ditentukan dalam file /src/deliver.c. Dengan memanipulasi pemformatan alamat, penyerang dapat mengganti datanya ke dalam argumen perintah yang dipanggil melalui fungsi execv() dengan hak root. Pengoperasiannya tidak memerlukan penggunaan teknik rumit yang digunakan untuk buffer overflows atau kerusakan memori; substitusi karakter sederhana sudah cukup.
Masalahnya terkait dengan penggunaan konstruk untuk konversi alamat:
kirim_localpart = perluas_string(
string_sprintf("${local_part:%s}", baru->alamat));
kirim_domain = perluas_string(
string_sprintf("${domain:%s}", baru->alamat));
Fungsi expand_string() adalah penggabung yang terlalu rumit, termasuk mengenali perintah “${run{command argument}”, yang mengarah pada peluncuran pengendali eksternal. Jadi, untuk menyerang dalam sesi SMTP, pengguna lokal hanya perlu mengirimkan perintah seperti 'RCPT TO “username+${run{...}}@localhost”', dengan localhost adalah salah satu host dari daftar local_domains, dan nama pengguna adalah nama pengguna lokal yang ada.
Jika server berfungsi sebagai relay email, cukup mengirimkan perintah 'RCPT TO "${run{...}}@relaydomain.com"' dari jarak jauh, di mana relaydomain.com adalah salah satu host yang terdaftar di relay_to_domains bagian pengaturan. Karena Exim tidak secara default menghapus mode hak istimewa (deliver_drop_privilege = false), perintah yang diteruskan melalui "${run{...}}" akan dieksekusi sebagai root.
Patut dicatat bahwa ada kerentanan
Perbaikan untuk versi sebelumnya yang terus digunakan dalam distribusi saat ini hanya tersedia sebagai
Sumber: opennet.ru