Kerentanan di OpenBSD memungkinkan peningkatan hak istimewa dan bypass otentikasi di smtpd, ldapd dan radiusd

Perusahaan Qualys mengungkapkan empat kerentanan di OpenBSD, salah satunya memungkinkan Anda terhubung jarak jauh tanpa otentikasi ke beberapa layanan jaringan, dan tiga lainnya untuk meningkatkan hak istimewanya dalam sistem. Laporan Qualys mencatat respon cepat dari pengembang OpenBSD - semua masalah telah teratasi dihilangkan Π² OpenBSD 6.5 ΠΈ OpenBSD 6.6 dalam waktu 40 jam setelah pemberitahuan pribadi.

Kerentanan yang dapat dieksploitasi dari jarak jauh disebabkan oleh kesalahan dalam mengatur panggilan ke pengendali otentikasi di perpustakaan libc, yang memanggil
/usr/libexec/auth/login_style program meneruskan argumen pada baris perintah. Termasuk saat memanggil login_style menggunakan parameter opsional "-s service", meneruskan nama protokol diperbolehkan. Jika karakter "-" digunakan di awal nama pengguna, nama ini akan dianggap sebagai opsi saat login_style dijalankan. Oleh karena itu, jika Anda menentukan "-schallenge" atau "-schallenge: passwd" sebagai nama pengguna selama otentikasi, maka login_style akan menganggap permintaan tersebut sebagai permintaan untuk menggunakan handler S/Kunci.

Masalahnya adalah protokol S/Key di login_style hanya didukung secara formal, tetapi sebenarnya diabaikan dengan keluaran tanda otentikasi berhasil. Dengan demikian, penyerang dapat menyamar sebagai pengguna "-schallenge" dan melewati otentikasi dan mendapatkan akses tanpa menentukan kata sandi atau kunci. Semua layanan jaringan yang menggunakan panggilan libc reguler untuk otentikasi berpotensi terpengaruh oleh masalah ini. Misalnya, kemampuan untuk melewati otentikasi dikonfirmasi di smtpd (AUTH PLAIN), ldapd dan radiusd.

Kerentanan tidak muncul di sshd, karena memiliki perlindungan tambahan dengan memeriksa keberadaan pengguna di sistem. Namun, sshd dapat digunakan untuk menguji apakah suatu sistem rentan terhadap kerentanan - ketika mengakses nama pengguna "-sresponse:passwd", koneksi terhenti, karena sshd menunggu login_passwd untuk mengembalikan parameter panggilan (tantangan), dan login_passwd menunggu transfer parameter yang hilang (nama "- sresponse" diambil sebagai opsi). Seorang penyerang lokal potensial dapat mencoba melewati otentikasi di utilitas su, tetapi meneruskan nama "-sresponse" menyebabkan proses terhenti karena kembalinya penunjuk nol saat menjalankan fungsi getpwnam_r("-schallenge", ...) .

Kerentanan lainnya:

  • CVE-2019-19520 - Peningkatan hak istimewa lokal melalui manipulasi utilitas xlock yang disertakan dengan flag sgid yang mengubah grup menjadi "auth". Dalam kode xlock, pendefinisian ulang jalur perpustakaan dilarang hanya ketika ID pengguna (setuid) diubah, yang memungkinkan penyerang untuk mengubah variabel lingkungan "LIBGL_DRIVERS_PATH" dan mengatur pemuatan perpustakaan bersama miliknya, yang kodenya akan dieksekusi setelah peningkatan hak istimewa ke grup "auth".
  • CVE-2019-19522 - Mengizinkan pengguna lokal di grup "auth" menjalankan kode sebagai root ketika autentikasi S/Key atau YubiKey diaktifkan di sistem (tidak diaktifkan secara default). Keanggotaan dalam grup "auth", yang dapat diakses dengan memanfaatkan kerentanan xlock di atas, memungkinkan file ditulis ke direktori /etc/skey dan /var/db/yubikey. Misalnya, penyerang dapat menambahkan file /etc/skey/root baru untuk menghasilkan kunci satu kali untuk otentikasi root melalui S/Key.
  • CVE-2019-19519 - Kemungkinan untuk meningkatkan batas sumber daya melalui manipulasi dengan utilitas su. Saat menentukan opsi "-L", yang menyiratkan pengulangan siklik dari upaya otentikasi jika terjadi kegagalan, kelas pengguna disetel hanya sekali dan tidak diatur ulang pada upaya berikutnya. Penyerang dapat mengeksekusi β€œsu -l -L” pada upaya pertama memasukkan login orang lain dengan kelas akun yang berbeda, tetapi pada upaya kedua berhasil mengautentikasi dirinya sendiri. Dalam situasi ini, pengguna akan ditetapkan batasan sesuai dengan kelas pengguna yang ditentukan pada upaya pertama (misalnya, jumlah maksimum proses atau ukuran memori untuk suatu proses). Metode ini hanya berfungsi untuk batas peminjaman dari pengguna yang tidak memiliki hak istimewa, karena pengguna root harus berada dalam grup roda).

Selain itu, dapat diperhatikan penerapan di OpenBSD metode baru untuk memeriksa validitas panggilan sistem, yang semakin memperumit eksploitasi kerentanan. Metode ini memungkinkan panggilan sistem dijalankan hanya jika diakses dari area memori yang telah didaftarkan sebelumnya. Untuk menandai area memori diajukan panggilan sistem baru panggilan msys().

Sumber: opennet.ru