Уязвимост в ld.so OpenBSD

Динамичен загрузчик ld.so, част от 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 кБ, но теоретично е възможно), то променливата _dl_libpath получава стойност NULL, а последващата проверка на стойността на тази променлива ще накара да се пропусне извикването на _dl_unsetenv("LD_LIBRARY_PATH").

Уязвимостта е открита от специалисти Qualys, както и няколко по-рано разкрити проблеми. Откриващите уязвимостта изследователи по сигурността отбелязаха бързото решение на проблема: патчът е подготвен и актуализациите са издадени в рамките на три часа след получаване на уведомлението от проекта OpenBSD.

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

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster