Kerentanan di OpenSMTPD yang memungkinkan akses root jarak jauh dan lokal

Perusahaan Qualys mengungkapkan kerentanan kritis jarak jauh lainnya (CVE-2020-8794) di server email BukaSMTPD, dikembangkan oleh proyek OpenBSD. Seperti yang teridentifikasi pada akhir Januari lalu kerentanan, masalah baru memungkinkan eksekusi perintah shell arbitrer dari jarak jauh di server dengan hak pengguna root. Kerentanan dihilangkan dalam masalah Buka SMTPD 6.6.4p1.

Masalah ini disebabkan oleh bug pada kode yang mengirimkan email ke server email jarak jauh (bukan pada kode yang menangani koneksi masuk). Serangan ini mungkin terjadi baik di sisi klien maupun di sisi server. Di sisi klien, serangan dimungkinkan dalam konfigurasi default OpenSMTPD, di mana OpenSMTPD hanya menerima permintaan pada antarmuka jaringan internal (localhost) dan mengirimkan pesan email ke server eksternal. Untuk mengeksploitasi kerentanan, selama pengiriman surat, OpenSMTPD membuat sesi dengan server email yang dikendalikan oleh penyerang, atau penyerang dapat masuk ke koneksi klien (MITM atau pengalihan selama serangan melalui DNS atau BGP ).

Untuk serangan sisi server, OpenSMTPD harus dikonfigurasi untuk menerima permintaan jaringan eksternal dari server email lain atau melayani layanan pihak ketiga yang memungkinkan Anda mengirim permintaan ke email sewenang-wenang (misalnya, formulir konfirmasi alamat di situs web). Misalnya, penyerang dapat terhubung ke server OpenSMTPD dan mengirim surat yang salah (ke pengguna yang tidak ada), yang akan menyebabkan respons mengirimkan surat dengan kode kesalahan (pentalan) ke server penyerang. Seorang penyerang dapat mengeksploitasi kerentanan ketika OpenSMTPD terhubung untuk mengirimkan pemberitahuan ke server penyerang. Perintah shell yang disuntikkan selama serangan ditempatkan dalam file yang dijalankan dengan hak root ketika OpenSMTPD di-restart, sehingga penyerang harus menunggu OpenSMTPD untuk me-restart atau memulai crash OpenSMTPD untuk menyelesaikan serangan.

Masalahnya ada pada fungsi mta_io() dalam kode untuk menguraikan respons multiline yang dikembalikan oleh server jarak jauh setelah sambungan dibuat (misalnya, "250-ENHANCEDSTATUSCODES" dan "250 HELP"). OpenSMTPD menghitung bahwa baris pertama berisi tiga digit angka dan teks yang dipisahkan dengan karakter β€œ-”, dan baris kedua berisi tiga digit angka dan teks yang dipisahkan dengan spasi. Jika angka tiga digit tidak diikuti oleh spasi dan teks pada baris kedua, penunjuk yang digunakan untuk mendefinisikan teks disetel ke byte setelah karakter '\0' dan upaya dilakukan untuk menyalin data setelah akhir dari garis ke dalam buffer.

Atas permintaan proyek OpenBSD, publikasi rincian tentang eksploitasi kerentanan telah ditunda hingga tanggal 26 Februari agar pengguna dapat memperbarui sistem mereka. Masalahnya telah ada di basis kode sejak Desember 2015, namun eksploitasi sebelum eksekusi kode dengan hak akses root telah dimungkinkan sejak Mei 2018. Para peneliti menyiapkan prototipe kerja dari eksploitasi tersebut, yang berhasil diuji dalam build OpenSMTPD untuk OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (pengujian) dan Fedora 31.

Di OpenSMTPD juga diidentifikasi Kerentanan lain (CVE-2020-8793) yang memungkinkan pengguna lokal membaca baris pertama file apa pun di sistem. Misalnya, Anda dapat membaca baris pertama /etc/master.passwd, yang berisi hash kata sandi pengguna root. Kerentanannya juga memungkinkan Anda membaca seluruh isi file milik pengguna lain jika file ini terletak di sistem file yang sama dengan direktori /var/spool/smtpd/. Masalahnya tidak dapat dieksploitasi pada banyak distribusi Linux yang nilai /proc/sys/fs/protected_hardlinks disetel ke 1.

Masalahnya adalah akibat dari eliminasi yang tidak lengkap masalah, disuarakan saat audit yang dilakukan oleh Qualys pada tahun 2015. Seorang penyerang dapat mengeksekusi kodenya dengan hak grup β€œ_smtpq” dengan mengatur variabel β€œPATH=.”. dan menempatkan skrip bernama makemap di direktori saat ini (utilitas smtpctl menjalankan makemap tanpa menentukan jalur secara eksplisit). Dengan mendapatkan akses ke grup "_smtpq", penyerang kemudian dapat menyebabkan kondisi balapan (membuat file besar di direktori offline dan mengirimkan sinyal SIGSTOP) dan, sebelum pemrosesan selesai, ganti file di direktori offline dengan hard symlink menunjuk ke file target yang isinya perlu dibaca.

Patut dicatat bahwa di Fedora 31, kerentanan memungkinkan Anda untuk segera mendapatkan hak istimewa dari grup root, karena proses smtpctl dilengkapi dengan flag root setgid, bukan flag setgid smtpq. Dengan mendapatkan akses ke grup root, Anda dapat menimpa konten /var/lib/sss/mc/passwd dan mendapatkan akses root penuh ke sistem.

Sumber: opennet.ru

Tambah komentar