Уязвимост в firejail, позволяваща получаване на root достъп в системата

В утилитите за изолирано изпълнение на приложения Firejail е открита уязвимост (CVE-2022-31214), която позволява на локален потребител да получи права root в основната система. В публичното пространство има работещ експлоит, тестван в актуалните версии на openSUSE, Debian, Arch, Gentoo и Fedora с инсталираната утилита firejail. Проблемът е отстранен в версия firejail 0.9.70. Като обходен път за защита, можете да зададете в настройките ( /etc/firejail/firejail.config) параметрите „join no“ и „force-nonewprivs yes“.

Firejail използва за изолация механизма на пространствата на имената (namespaces), AppArmor и филтрация на системни повиквания (seccomp-bpf) в Linux, но за настройка на изолирано стартиране изисква повишени привилегии, които получава чрез привързване към утилитата на флага suid root или чрез стартиране с sudo. Уязвимостта е причинена от грешка в логиката на работа на опцията „—join=“, предназначена за свързване с вече работещо изолирано окружение (аналог на командата login за sandbox-окружение) с определяне на окружението по работещия в него идентификатор на процеса. На етапа преди сброса на привилегиите, firejail определя привилегиите на посочения процес и прилага тези привилегии към новия процес, свързван с околната среда с опцията „—join“.

Преди свързването се извършва проверка дали посоченият процес е стартиран в окружението firejail. Тази проверка оценява наличието на файла /run/firejail/mnt/join. За експлоатация на уязвимостта, атакуващият може да симулира фиктивно не изолирано окружение firejail, използвайки пространството на точките на монтиране (mount namespace), след което да се свърже с него чрез опцията „—join“. Ако в настройките не е активиран режимът за забрана на получаване на допълнителни привилегии в новите процеси (prctl NO_NEW_PRIVS), firejail ще свърже потребителя с фиктивното окружение и ще се опитам да приложи настройките на пространството на имената на идентификаторите на потребителите (user namespace) на процеса init (PID 1).

В резултат на това, процесът, свързан чрез «firejail —join», ще се окаже в оригиналното пространство на потребителските идентификатори с непроменени привилегии, но в друго пространство на точки на монтиране, напълно контролирано от атакуващия. Освен това, атакуващият може да изпълнява setuid-root програми в създаденото от него пространство на точки на монтиране, което позволява, например, да променя настройките на /etc/sudoers или параметрите на PAM в своята файловата йерархия и да получава възможност за изпълнение на команди с права root чрез утилитите sudo или su.

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

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