Kerentanan yang dapat dieksploitasi dari jarak jauh di server email qmail

Peneliti keamanan dari Qualys menunjukkan kesempatan Operasi kerentanan di server email qmail, terkenal Sejak 2005 (CVE-2005-1513), kerentanan ini tetap tidak ditambal karena pembuat qmail mengklaim tidak realistis untuk membuat eksploitasi yang berfungsi dan dapat digunakan untuk menyerang sistem dalam konfigurasi default-nya. Qualys berhasil mengembangkan eksploitasi yang membantah asumsi ini dan memungkinkan eksekusi kode jarak jauh di server dengan mengirimkan pesan yang dirancang khusus.

Masalah ini disebabkan oleh luapan integer dalam fungsi stralloc_readyplus(), yang dapat terjadi saat memproses pesan yang sangat besar. Eksploitasi ini membutuhkan sistem 64-bit dengan memori virtual lebih dari 4GB. Ketika Daniel J. Bernstein pertama kali menganalisis kerentanan ini pada tahun 2005, ia berargumen bahwa asumsi dasar bahwa ukuran array yang dialokasikan selalu berada dalam nilai 32-bit didasarkan pada fakta bahwa tidak ada yang menyediakan gigabita memori untuk setiap proses. Selama 15 tahun terakhir, sistem 64-bit telah menggantikan sistem 32-bit pada server, dan jumlah memori yang disediakan serta bandwidth jaringan telah meningkat drastis.

Para pengelola paket qmail mempertimbangkan komentar Bernstein dan membatasi memori yang tersedia saat memulai proses qmail-smtpd (misalnya, dalam Debian 10 menetapkan batasan 7MB). Namun, para insinyur Qualys menemukan bahwa ini tidak cukup, dan bahwa selain qmail-smtpd, serangan jarak jauh dapat dilakukan pada proses qmail-local, yang tetap tidak terbatas di semua paket yang diuji. Sebagai bukti, sebuah prototipe eksploitasi disiapkan, yang cocok untuk menyerang paket yang disediakan di Debian paket dengan qmail dalam konfigurasi default.
Untuk mengatur eksekusi kode jarak jauh selama serangan, server harus memiliki ruang disk kosong sebesar 4 GB dan RAM sebesar 8 GB.
Eksploitasi ini memungkinkan Anda menjalankan perintah shell apa pun dengan hak pengguna mana pun dalam sistem, kecuali pengguna root dan sistem yang tidak memiliki subdirektori sendiri di direktori "/home" (proses qmail-local diluncurkan dengan hak pengguna lokal yang menerima pengiriman).

Serangan sedang berlangsung
Dengan mengirimkan pesan email yang sangat besar, termasuk beberapa baris header, berukuran sekitar 4GB dan 576MB. Pemrosesan baris tersebut di qmail-local mengakibatkan luapan integer ketika mencoba mengirimkan pesan ke pengguna lokal. Luapan integer ini kemudian menyebabkan luapan buffer ketika menyalin data dan kemungkinan menimpa halaman memori yang berisi kode libc. Dengan memanipulasi tata letak data yang dikirimkan, dimungkinkan, antara lain, untuk menulis ulang alamat fungsi "open()", menggantinya dengan alamat fungsi "system()".

Selanjutnya, selama panggilan ke qmesearch() di qmail-local, file “.qmail-extension” dibuka melalui fungsi open(), yang mengarah ke eksekusi fungsi yang sebenarnya
sistem(«.qmail-ekstensi»). Namun, karena bagian "ekstensi" dari berkas tersebut dibuat berdasarkan alamat penerima (misalnya, "localuser-ekstensi@localdomain"), penyerang dapat mengatur agar perintah tersebut dieksekusi dan dikirimkan, dengan menentukan pengguna "localuser-;perintah;@localdomain" sebagai penerima pesan.

Selama analisis kode, dua kerentanan juga diidentifikasi dalam patch qmail-verify tambahan, yang termasuk dalam paket untuk DebianKerentanan pertama (CVE-2020-3811) memungkinkan Anda melewati verifikasi alamat email, dan yang kedua (CVE-2020-3812) menyebabkan kebocoran informasi lokal. Lebih tepatnya, kerentanan pertama memungkinkan pengabaian pemeriksaan validasi untuk alamat yang digunakan dalam eksploitasi untuk mengirimkan perintah (pemeriksaan gagal untuk alamat tanpa domain, seperti "localuser-;command;"). Kerentanan kedua dapat digunakan untuk memverifikasi keberadaan berkas dan direktori dalam sistem, termasuk yang hanya dapat diakses oleh root (qmail-verify berjalan dengan hak akses root), dengan langsung memanggil pengendali lokal.

Untuk mengatasi masalah ini, Bernstein merekomendasikan menjalankan proses qmail dengan batas memori bersama ("softlimit -m12345678"), yang akan mencegah masalah tersebut. Alternatif lain yang disarankan adalah membatasi ukuran pesan maksimum yang diproses melalui berkas "control/databytes" (yang tidak dibuat secara default, sehingga membuat qmail rentan pada pengaturan default). Lebih lanjut, "control/databytes" tidak melindungi dari serangan lokal oleh pengguna sistem, karena batas tersebut hanya diberlakukan oleh qmail-smtpd.

Masalahnya mempengaruhi paket netqmail, termasuk dalam repositori DebianSejumlah patch telah disiapkan untuk paket ini, yang menghilangkan kerentanan lama dari tahun 2005 (dengan menambahkan batasan memori yang ketat pada kode fungsi alloc()) dan masalah baru di qmail-verify. Secara terpisah siap Versi terbaru dari patch qmail-verify. Pengembang ranting bukanqmail Kami telah menyiapkan patch kami sendiri untuk memblokir masalah lama dan juga telah mulai bekerja untuk menghilangkan semua kemungkinan luapan integer dalam kode.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster