Detail kerentanan kritis di Exim terungkap

diterbitkan rilis korektif Ujian 4.92.2 dengan penghapusan kritis kerentanan (CVE-2019-15846), yang dalam konfigurasi default dapat menyebabkan eksekusi kode jarak jauh oleh penyerang dengan hak akses root. Masalah hanya muncul ketika dukungan TLS diaktifkan dan dieksploitasi dengan meneruskan sertifikat klien yang dirancang khusus atau nilai yang dimodifikasi ke SNI. Kerentanan diidentifikasi oleh Qualys.

masalah menyajikan di handler untuk keluar dari karakter khusus dalam string (string_interpret_escape() dari string.c) dan disebabkan oleh karakter '\' di akhir string yang ditafsirkan sebelum karakter nol ('\0') dan menghindarinya. Saat melakukan escape, urutan '\' dan kode akhir baris null berikut diperlakukan sebagai karakter tunggal dan penunjuk dialihkan ke data di luar baris, yang dianggap sebagai kelanjutan baris.

Pemanggilan kode string_interpret_escape() mengalokasikan buffer untuk saluran berdasarkan ukuran sebenarnya, dan penunjuk yang terbuka berakhir di area di luar batas buffer. Oleh karena itu, ketika mencoba memproses string masukan, situasi muncul ketika membaca data dari area di luar batas buffer yang dialokasikan, dan upaya untuk menulis string yang tidak lolos dapat mengakibatkan penulisan di luar batas buffer.

Dalam konfigurasi default, kerentanan dapat dieksploitasi dengan mengirimkan data yang dirancang khusus ke SNI saat membuat sambungan aman ke server. Masalah ini juga dapat dieksploitasi dengan mengubah nilai peerdn dalam konfigurasi yang dikonfigurasi untuk otentikasi sertifikat klien atau saat mengimpor sertifikat. Serangan melalui SNI dan peerdn dapat dilakukan mulai dari rilis Ujian 4.80, di mana fungsi string_unprinting() digunakan untuk menghapus konten peerdn dan SNI.

Prototipe eksploitasi telah disiapkan untuk serangan melalui SNI, berjalan pada arsitektur i386 dan amd64 pada sistem Linux dengan Glibc. Eksploitasi ini menggunakan overlay data pada area heap, sehingga memori tempat nama file log disimpan akan ditimpa. Nama file diganti dengan "/../../../../../../../../etc/passwd". Selanjutnya, variabel dengan alamat pengirim ditimpa, yang pertama kali disimpan di log, yang memungkinkan Anda menambahkan pengguna baru ke sistem.

Pembaruan paket dengan perbaikan kerentanan dirilis oleh distribusi Debian, Ubuntu, Fedora, SUSE/bukaSUSE ΠΈ FreeBSD. Masalah RHEL dan CentOS tidak rentan, karena Exim tidak disertakan dalam repositori paket regulernya (di EPEL ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ sudah terbentuk, tapi untuk saat ini tidak ditempatkan ke repositori publik). Dalam kode Exim masalahnya diperbaiki dengan satu baris tambalan, yang menonaktifkan efek pelolosan garis miring terbalik jika berada di akhir baris.

Sebagai solusi untuk memblokir kerentanan, Anda dapat menonaktifkan dukungan TLS atau menambahkan
Bagian ACL β€œacl_smtp_mail”:

kondisi tolak = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
kondisi tolak = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Sumber: opennet.ru

Tambah komentar