Kahinaan sa ld.so OpenBSD

Dynamic na loader ld.so, kasama sa OpenBSD, maaaring, sa ilalim ng ilang mga kundisyon, SUID/SGID- iniiwan ng mga application ang LD_LIBRARY_PATH environment variable at sa gayon ay pinapayagan ang third-party na code na ma-load sa konteksto ng isang prosesong tumatakbo na may mataas na mga pribilehiyo. Ang mga patch na nag-aayos ng kahinaan ay magagamit para sa mga release 6.5 и 6.6. Binary patch (syspatch) para sa mga platform ng amd64, i386 at arm64 ay nasa produksyon na at dapat na ma-download sa oras na mailathala ang balitang ito.

Ang kakanyahan ng problema: sa panahon ng operasyon, kinukuha muna ng ld.so ang halaga ng variable na LD_LIBRARY_PATH mula sa kapaligiran at, gamit ang _dl_split_path() function, ginagawa itong hanay ng mga string - mga path sa mga direktoryo. Kung sa ibang pagkakataon ay lumabas na ang kasalukuyang proseso ay sinimulan ng isang SUID/SGID na application, ang ginawang array at, sa katunayan, ang LD_LIBRARY_PATH variable ay iki-clear. Kasabay nito, kung ang _dl_split_path() ay naubusan ng memorya (na mahirap dahil sa tahasang 256 kB na limitasyon sa laki ng mga variable ng kapaligiran, ngunit posible sa teorya), kung gayon ang _dl_libpath variable ay makakatanggap ng halagang NULL, at kasunod na pagsusuri ng halaga ng variable na ito ay magiging sanhi ng paglaktaw sa tawag sa _dl_unsetenv("LD_LIBRARY_PATH").

Natagpuan ng mga eksperto ang kahinaan Mga Qualys, pati na rin ang ilang nauna nang nabunyag mga problema. Ang mga mananaliksik sa seguridad na natukoy ang kahinaan ay napansin kung gaano kabilis nalutas ang problema: isang patch ang inihanda at ang mga update ay inilabas sa loob ng tatlong oras pagkatapos makatanggap ng abiso ang proyekto ng OpenBSD.

Karagdagan: Ang problema ay itinalaga ng isang numero CVE-2019-19726. Ginawa sa oss-security mailing list opisyal na anunsyo, kabilang ang isang prototype na pagsasamantala na tumatakbo sa OpenBSD 6.6, 6.5, 6.2 at 6.1 na mga arkitektura
amd64 at i386 (ang pagsasamantala ay maaaring iakma para sa iba pang mga arkitektura).
Ang isyu ay pinagsamantalahan sa default na pag-install at nagbibigay-daan sa isang walang pribilehiyong lokal na user na magsagawa ng code bilang root sa pamamagitan ng pagpapalit ng library kapag nagpapatakbo ng chpass o passwd suid utilities. Upang lumikha ng mga kondisyong mababa ang memorya na kinakailangan para sa operasyon, itakda ang limitasyon ng RLIMIT_DATA sa pamamagitan ng setrlimit.

Pinagmulan: opennet.ru

Magdagdag ng komento