ld.so OpenBSDдеги аялуу

Динамикалык жүктөгүч ld.soOpenBSD менен камтылган, белгилүү бир шарттарда, SUID/SGID- колдонмолор LD_LIBRARY_PATH чөйрө өзгөрмөсүн таштап, ошентип үчүнчү тараптын кодун жогорулатылган артыкчылыктар менен иштеген процесстин контекстинде жүктөөгө мүмкүндүк берет. Абалдарды оңдогон патчтар релиздерде жеткиликтүү 6.5 и 6.6. бинардык тактар ​​(syspatch) amd64, i386 жана arm64 платформалары үчүн буга чейин өндүрүштө жана бул кабар жарыяланганга чейин жүктөп алуу үчүн жеткиликтүү болушу керек.

Маселенин маңызы: иштөө учурунда ld.so алгач чөйрөдөн LD_LIBRARY_PATH өзгөрмөнүн маанисин чыгарып алат жана _dl_split_path() функциясын колдонуп, аны саптардын массивине - каталогдорго жолго айлантат. Эгер кийинчерээк учурдагы процесс SUID/SGID тиркемеси тарабынан башталганы аныкталса, анда түзүлгөн массив жана чындыгында LD_LIBRARY_PATH өзгөрмөсү тазаланат. Ошол эле учурда, эгерде _dl_split_path() эстутуму түгөнүп калса (бул чөйрө өзгөрмөлөрүнүн өлчөмүндөгү ачык 256 кБ чегинен улам кыйын, бирок теориялык жактан мүмкүн), анда _dl_libpath өзгөрмөсү NULL маанисин алат жана кийинки текшерүүлөр бул өзгөрмөнүн мааниси _dl_unsetenv("LD_LIBRARY_PATH") чакырыгын өткөрүп жиберүүгө мажбурлайт.

Эксперттер тарабынан табылган аялуу Qualy's, ошондой эле бир нече мурда ачылган көйгөйлөр. Алсыздыкты аныктаган коопсуздук изилдөөчүлөрү маселенин канчалык тез чечилгенин белгилешти: патч даярдалып, OpenBSD долбоору эскертме алгандан кийин үч сааттын ичинде жаңыртуулар чыгарылды.

Кошумча: Көйгөйгө номер берилди CVE-2019-19726. oss-коопсуздук почта тизмесинде жасалган расмий билдирүү, анын ичинде OpenBSD 6.6, 6.5, 6.2 жана 6.1 архитектурасында иштеген прототиби эксплоит
amd64 жана i386 (эксплейт башка архитектураларга ылайыкташтырылышы мүмкүн).
Маселе демейки орнотууда пайдаланылышы мүмкүн жана артыкчылыксыз жергиликтүү колдонуучуга chpass же passwd suid утилиталарын иштетип жатканда китепкананы алмаштыруу аркылуу кодду тамыр катары аткарууга мүмкүндүк берет. Иштетүү үчүн зарыл болгон эстутум аз шарттарды түзүү үчүн, setrlimit аркылуу RLIMIT_DATA чегин коюңуз.

Source: opennet.ru

Комментарий кошуу