Kerentanan dalam OpenSMTPD yang membenarkan akses root jauh dan setempat

Syarikat Qualys didedahkan satu lagi kelemahan kritikal jauh (CVE-2020-8794) dalam pelayan mel OpenSMTPD, dibangunkan oleh projek OpenBSD. Seperti yang dikenal pasti pada penghujung Januari kelemahan, isu baharu memungkinkan untuk melaksanakan perintah shell sewenang-wenang dari jauh pada pelayan dengan hak pengguna root. Keterdedahan dihapuskan dalam isu OpenSMTPD 6.6.4p1.

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 dikenalpasti Satu lagi kelemahan (CVE-2020-8793) yang membolehkan pengguna tempatan membaca baris pertama mana-mana fail pada sistem. Sebagai contoh, anda boleh membaca baris pertama /etc/master.passwd, yang mengandungi cincang kata laluan pengguna root. Kerentanan juga membolehkan anda membaca keseluruhan kandungan fail yang dimiliki oleh pengguna lain jika fail ini terletak dalam sistem fail yang sama dengan direktori /var/spool/smtpd/. Masalahnya tidak boleh dieksploitasi pada banyak pengedaran Linux di mana nilai /proc/sys/fs/protected_hardlinks ditetapkan kepada 1.

Masalahnya adalah akibat daripada penghapusan yang tidak lengkap masalah, disuarakan semasa audit yang dijalankan oleh Qualys pada 2015. Penyerang boleh mencapai pelaksanaan kodnya dengan hak kumpulan "_smtpq" dengan menetapkan pembolehubah "PATH=.". dan meletakkan skrip yang dipanggil makemap dalam direktori semasa (utiliti smtpctl menjalankan makemap tanpa menyatakan laluan secara jelas). Dengan mendapatkan akses kepada kumpulan "_smtpq", penyerang kemudiannya boleh menyebabkan keadaan perlumbaan (buat fail besar dalam direktori luar talian dan hantar isyarat SIGSTOP) dan, sebelum pemprosesan selesai, gantikan fail dalam direktori luar talian dengan hard symlink menunjuk ke fail sasaran yang kandungannya perlu dibaca .

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

Tambah komen