Kerentanan dalam OpenBSD membenarkan peningkatan keistimewaan dan pintasan pengesahan dalam smtpd, ldapd dan radiusd

Syarikat Qualys didedahkan empat kelemahan dalam OpenBSD, salah satunya membenarkan sambungan jauh ke perkhidmatan rangkaian tertentu tanpa pengesahan, manakala tiga yang lain membenarkan peningkatan keistimewaan dalam sistem. Laporan Qualys menyatakan tindak balas pantas pembangun OpenBSD—semua isu telah diselesaikan. dihapuskan в OpenBSD 6.5 и OpenBSD 6.6 dalam tempoh 40 jam selepas pemberitahuan peribadi.

Kerentanan yang boleh dieksploitasi dari jauh disebabkan oleh ralat dalam pengaturan panggilan kepada pengendali pengesahan dalam pustaka libc, yang menyebabkan
Program /usr/libexec/auth/login_style, menghantar argumen pada baris arahan. Apabila memanggil login_style menggunakan parameter pilihan "-s service", nama protokol boleh dihantar. Jika aksara "-" digunakan pada permulaan nama pengguna, nama ini akan diproses sebagai pilihan semasa memulakan login_style. Oleh itu, jika anda menyatakan "-schallenge" atau "-schallenge:passwd" sebagai nama pengguna semasa pengesahan, login_style akan mentafsir permintaan tersebut sebagai permintaan untuk menggunakan pengendali. Kunci/S.

Masalahnya ialah protokol S/Key dalam login_style hanya disokong secara formal, tetapi diabaikan secara berkesan dengan bendera pengesahan yang berjaya. Oleh itu, penyerang boleh, dengan menyamar sebagai pengguna "-challenge", memintas pengesahan dan mendapatkan akses tanpa memberikan kata laluan atau kunci. Semua perkhidmatan rangkaian yang menggunakan panggilan libc standard untuk pengesahan berpotensi terdedah kepada isu ini. Contohnya, kemungkinan memintas pengesahan telah disahkan dalam smtpd (AUTH PLAIN), ldapd dan radiusd.

Kerentanan ini tidak muncul dalam sshd, kerana ia mempunyai perlindungan tambahan dengan memeriksa sama ada pengguna telah log masuk. Walau bagaimanapun, sshd boleh digunakan untuk menguji kerentanan sistem—apabila mengakses nama pengguna "-sresponse:passwd," sambungan akan terhenti kerana sshd menunggu login_passwd mengembalikan parameter cabaran, manakala login_passwd menunggu parameter yang hilang dihantar (nama "-sresponse" dianggap sebagai pilihan). Penyerang setempat berpotensi cuba memintas pengesahan dalam utiliti su, tetapi menghantar nama "-sresponse" mengakibatkan ranap proses disebabkan oleh pemulangan penunjuk nol semasa melaksanakan fungsi getpwnam_r("-schallenge", ...).

Kelemahan lain:

  • CVE-2019-19520 — Peningkatan keistimewaan setempat melalui manipulasi utiliti xlock, yang dibekalkan dengan bendera sgid, menukar kumpulan kepada "auth." Dalam kod xlock, definisi semula laluan pustaka hanya dinyahdayakan apabila pengecam pengguna (setuid) diubah, membolehkan penyerang mengubah suai pembolehubah persekitaran "LIBGL_DRIVERS_PATH" dan memuatkan pustaka kongsi mereka sendiri, yang kodnya akan dilaksanakan selepas peningkatan keistimewaan kepada kumpulan "auth".
  • CVE-2019-19522 – membenarkan pengguna setempat dalam kumpulan "auth" untuk melaksanakan kod dengan keistimewaan root apabila pengesahan S/Key atau YubiKey diaktifkan dalam sistem (tidak diaktifkan secara lalai). Keahlian dalam kumpulan "auth", yang boleh diakses dengan mengeksploitasi kerentanan yang dinyatakan di atas dalam xlock, membolehkan penulisan fail ke direktori /etc/skey dan /var/db/yubikey. Contohnya, penyerang boleh menambah fail baharu ke /etc/skey/root untuk menjana kunci sekali guna untuk pengesahan S/Key sebagai pengguna root.
  • CVE-2019-19519 — Kemungkinan meningkatkan had sumber melalui manipulasi utiliti su. Apabila menentukan pilihan "-L", yang bermaksud gelung percubaan pengesahan berulang sekiranya berlaku kegagalan, kelas pengguna ditetapkan hanya sekali dan tidak ditetapkan semula pada percubaan berikutnya. Penyerang boleh melaksanakan "su -l -L" dan, pada percubaan pertama, memasukkan log masuk orang lain dengan kelas akaun yang berbeza, tetapi berjaya mengesahkan pada percubaan kedua. Dalam situasi ini, pengguna akan diberikan had yang sepadan dengan kelas pengguna yang dinyatakan dalam percubaan pertama (contohnya, bilangan proses maksimum atau saiz memori setiap proses). Kaedah ini hanya berfungsi untuk meminjam had daripada pengguna yang tidak berkelayakan, kerana pengguna root memerlukan keahlian dalam kumpulan roda.

Di samping itu, ia boleh diperhatikan pelaksanaan OpenBSD memperkenalkan kaedah baharu untuk menyemak kesahihan panggilan sistem, sekali gus merumitkan lagi eksploitasi. Kaedah ini membenarkan panggilan sistem dilaksanakan hanya jika ia diakses daripada kawasan memori yang telah didaftarkan terlebih dahulu. Untuk menandakan kawasan memori, dicadangkan panggilan sistem baharu msyscall().

Sumber: opennet.ru

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster