Ранливост во ld.so OpenBSD

Динамички натоварувач ld.така, вклучен во OpenBSD, може, под одредени услови, 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 kB на големината на променливите на животната средина, но теоретски е можно), тогаш променливата _dl_libpath ќе ја добие вредноста NULL и последователните проверки на вредноста на оваа променлива ќе принуди да го прескокнете повикот до _dl_unsetenv("LD_LIBRARY_PATH").

Ранливост пронајдена од експерти Квали, како и неколку претходно откриени проблеми. Безбедносните истражувачи кои ја идентификуваа ранливоста забележаа колку брзо проблемот беше решен: беше подготвена закрпа и ажурирањата беа објавени во рок од три часа откако проектот OpenBSD доби известување.

Дополнување: На проблемот му е доделен број CVE-2019-19726. Направено на oss-security мејлинг листата официјално соопштение, вклучувајќи прототип експлоат кој работи на архитектури OpenBSD 6.6, 6.5, 6.2 и 6.1
amd64 и i386 (експлоатот може да се прилагоди за други архитектури).
Проблемот може да се експлоатира во стандардната инсталација и му дозволува на непривилегираниот локален корисник да изврши код како root преку замена на библиотеката при извршување на услужните програми chpass или passwd suid. За да создадете услови за ниска меморија потребни за работа, поставете го ограничувањето RLIMIT_DATA преку setrlimit.

Извор: opennet.ru

Додадете коментар