Syarikat Qualys
Masalahnya disebabkan oleh pepijat dalam kod yang menghantar mel ke pelayan mel jauh (bukan dalam kod yang mengendalikan sambungan masuk). Serangan itu mungkin berlaku di sisi klien dan di sisi pelayan. Di sisi klien, serangan itu mungkin dalam konfigurasi lalai OpenSMTPD, di mana OpenSMTPD menerima permintaan hanya pada antara muka rangkaian dalaman (localhost) dan menghantar mesej mel ke pelayan luaran. Untuk mengeksploitasi kelemahan, cukuplah, semasa penghantaran surat, OpenSMTPD menetapkan sesi dengan pelayan mel yang dikawal oleh penyerang, atau penyerang boleh menjepit ke dalam sambungan klien (MITM atau pengalihan semasa serangan melalui DNS atau BGP ).
Untuk serangan sebelah pelayan, OpenSMTPD mesti dikonfigurasikan untuk menerima permintaan rangkaian luaran daripada pelayan mel lain atau menyediakan perkhidmatan pihak ketiga yang membolehkan anda menghantar permintaan kepada e-mel sewenang-wenangnya (contohnya, borang pengesahan alamat di tapak web). Sebagai contoh, penyerang boleh menyambung ke pelayan OpenSMTPD dan menghantar surat yang salah (kepada pengguna yang tidak wujud), yang akan membawa kepada respons menghantar surat dengan kod ralat (lantunan) ke pelayan penyerang. Penyerang boleh mengeksploitasi kelemahan apabila OpenSMTPD menyambung untuk menyampaikan pemberitahuan kepada pelayan penyerang. Perintah shell yang disuntik semasa serangan diletakkan dalam fail yang dilaksanakan dengan hak akar apabila OpenSMTPD dimulakan semula, jadi penyerang mesti menunggu OpenSMTPD untuk memulakan semula atau memulakan ranap OpenSMTPD untuk menyelesaikan serangan.
Masalahnya terdapat dalam fungsi mta_io() dalam kod untuk menghuraikan respons berbilang talian yang dikembalikan oleh pelayan jauh selepas sambungan diwujudkan (contohnya, "250-ENHANCEDSTATUSCODES" dan "250 HELP"). OpenSMTPD mengira bahawa baris pertama termasuk nombor tiga digit dan teks yang dipisahkan oleh aksara "-", dan baris kedua mengandungi nombor tiga digit dan teks yang dipisahkan oleh ruang. Jika nombor tiga digit tidak diikuti oleh ruang dan teks dalam baris kedua, penunjuk yang digunakan untuk mentakrifkan teks ditetapkan kepada bait berikutan aksara '\0' dan percubaan dibuat untuk menyalin data selepas tamat. daripada garisan ke dalam penimbal.
Atas permintaan projek OpenBSD, penerbitan butiran mengenai eksploitasi kerentanan telah ditangguhkan sehingga 26 Februari untuk membolehkan pengguna mengemas kini sistem mereka. Masalahnya telah wujud dalam pangkalan kod sejak Disember 2015, tetapi eksploitasi sebelum pelaksanaan kod dengan keistimewaan akar telah berlaku sejak Mei 2018. Para penyelidik menyediakan prototaip kerja eksploitasi, yang telah berjaya diuji dalam binaan OpenSMTPD untuk OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (ujian) dan Fedora 31.
Dalam OpenSMTPD juga
Masalahnya adalah akibat daripada penghapusan yang tidak lengkap
Perlu diperhatikan bahawa dalam Fedora 31 kerentanan membolehkan anda untuk segera mendapat keistimewaan kumpulan akar, kerana proses smtpctl dilengkapi dengan bendera akar setgid, bukannya bendera setgid smtpq. Dengan mendapat akses kepada kumpulan akar, anda boleh menulis ganti kandungan /var/lib/sss/mc/passwd dan mendapatkan akses root penuh kepada sistem.
Sumber: opennet.ru