Kerentanan ing ld.so OpenBSD

Loader dinamis ld.dadi, kalebu karo OpenBSD, bisa, ing kahanan tartamtu, SUID/SGID- aplikasi ninggalake variabel lingkungan LD_LIBRARY_PATH lan kanthi mangkono ngidini kode pihak katelu dimuat ing konteks proses sing mlaku kanthi hak istimewa sing luwih dhuwur. Patch sing ndandani kerentanan kasedhiya kanggo rilis 6.5 ΠΈ 6.6. Biner patch (syspatch) kanggo platform amd64, i386 lan arm64 wis ana ing produksi lan kudu kasedhiya kanggo diundhuh nalika warta iki diterbitake.

Inti masalah: sajrone operasi, ld.so pisanan ngekstrak nilai variabel LD_LIBRARY_PATH saka lingkungan lan, nggunakake fungsi _dl_split_path (), ngowahi dadi array strings - path menyang direktori. Yen mengko ternyata proses saiki diwiwiti kanthi aplikasi SUID / SGID, banjur array sing digawe lan, nyatane, variabel LD_LIBRARY_PATH bakal dibusak. Ing wektu sing padha, yen _dl_split_path () kehabisan memori (sing angel amarga watesan eksplisit 256 kB ing ukuran variabel lingkungan, nanging kanthi teori bisa), banjur variabel _dl_libpath bakal nampa nilai NULL, lan mriksa sabanjure Nilai saka variabel iki bakal meksa skip telpon kanggo _dl_unsetenv ("LD_LIBRARY_PATH").

Kerentanan ditemokake dening para ahli Akademi, uga sawetara sadurunge dibeberke masalah. Peneliti keamanan sing ngenali kerentanan kasebut nyathet sepira cepet masalah kasebut dirampungake: tembelan disiapake lan nganyari dirilis sajrone telung jam sawise proyek OpenBSD nampa kabar.

Tambahan: Masalah wis diwenehi nomer CVE-2019-19726. Digawe ing mailing list oss-security pengumuman resmi, kalebu eksploitasi prototipe sing mlaku ing arsitektur OpenBSD 6.6, 6.5, 6.2 lan 6.1
amd64 lan i386 (eksploitasi bisa diadaptasi kanggo arsitektur liyane).
Masalah kasebut bisa dimanfaatake ing instalasi gawan lan ngidini pangguna lokal sing ora duwe hak istimewa kanggo nglakokake kode minangka root liwat substitusi perpustakaan nalika nglakokake chpass utawa passwd suid utilities. Kanggo nggawe kahanan memori kurang perlu kanggo operasi, nyetel watesan RLIMIT_DATA liwat setrlimit.

Source: opennet.ru

Add a comment