Pemuat dinamis , disertakan dengan OpenBSD, dalam kondisi tertentu, dapat - aplikasi meninggalkan variabel lingkungan LD_LIBRARY_PATH dan dengan demikian mengizinkan kode pihak ketiga dimuat dalam konteks proses yang berjalan dengan hak istimewa yang lebih tinggi. Patch yang memperbaiki kerentanan tersedia untuk rilis и . Patch biner () untuk platform amd64, i386 dan arm64 sudah dalam produksi dan akan tersedia untuk diunduh pada saat berita ini diterbitkan.
Inti masalahnya: selama operasi, ld.so pertama-tama mengekstrak nilai variabel LD_LIBRARY_PATH dari lingkungan dan, menggunakan fungsi _dl_split_path(), mengubahnya menjadi array string - jalur ke direktori. Jika kemudian ternyata proses saat ini dimulai oleh aplikasi SUID/SGID, maka array yang dibuat dan, pada kenyataannya, variabel LD_LIBRARY_PATH akan dihapus. Pada saat yang sama, jika _dl_split_path() kehabisan memori (yang sulit dilakukan karena batasan eksplisit 256 kB pada ukuran variabel lingkungan, tetapi secara teoritis mungkin), maka variabel _dl_libpath akan menerima nilai NULL, dan pemeriksaan selanjutnya terhadap nilai variabel ini akan memaksa panggilan ke _dl_unsetenv("LD_LIBRARY_PATH") dilewati.
Kerentanan ditemukan oleh para ahli , sebaik masalah. Peneliti keamanan yang mengidentifikasi kerentanan mencatat seberapa cepat masalah tersebut diselesaikan: patch telah disiapkan dan pembaruan dirilis dalam waktu tiga jam setelah proyek OpenBSD menerima pemberitahuan.
Tambahan: Masalah telah diberi nomor . Dibuat di milis oss-security , termasuk prototipe eksploitasi yang berjalan pada arsitektur OpenBSD 6.6, 6.5, 6.2 dan 6.1
amd64 dan i386 (eksploitasi dapat diadaptasi untuk arsitektur lain).
Masalah ini dapat dieksploitasi dalam instalasi default dan memungkinkan pengguna lokal yang tidak memiliki hak istimewa untuk mengeksekusi kode sebagai root melalui substitusi perpustakaan ketika menjalankan utilitas chpass atau passwd suid. Untuk membuat kondisi memori rendah yang diperlukan untuk pengoperasian, tetapkan batas RLIMIT_DATA melalui setrlimit.
Sumber: opennet.ru
