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

Компанията Qualys откри 9 уязвимости в системата за управление на достъпа AppArmor, най-опасните от които позволяват на локален непривилегирован потребител да получи права root в системата, да излезе от изолирани контейнери и да заобиколи ограниченията, зададени чрез AppArmor. Уязвимостите получиха кодово име CrackArmor. CVE-идентификаторите все още не са назначени. Успешни примери за повишаване на привилегиите са демонстрирани в Ubuntu 24.04 и Debian 13.

Проблемите присъстват в LSM модула AppArmor, започвайки от ядрото на Linux 4.11, пуснато през 2017 година, и се проявяват в дистрибуции, използващи AppArmor, като Ubuntu, Debian, openSUSE и SUSE (от версия 16 на openSUSE/SUSE по подразбиране е активен SELinux, но AppArmor остава като опция). Патчовете за отстраняване на уязвимостите са предадени на разработчиците на ядрото на Linux и в следващите дни ще бъдат предложени на потребителите с актуализациите 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 и 5.10.253. Поправката също е включена в днешните актуализации на пакетите с ядро за Ubuntu. Паралелно в Ubuntu са пуснати актуализации на пакетите sudo, sudo-ldap и util-linux (включваща утилита su), в които са отстранени недостатъци, позволяващи експлоатирането на уязвимостта в AppArmor. В Debian обновлението е в процес на подготовка.

Проблемите са причинени от наличието в AppArmor на фундаментална уязвимост от клас "обманат посредник" ("confused-deputy"), позволяваща на непривилегированите потребители да зареждат, заменят и изтриват произволни профили на AppArmor. Тази уязвимост може да се използва директно за деактивиране на защитата на програми и услуги от локални и дистанционни атаки (чрез запис на псевдофайлове /sys/kernel/security/apparmor/.load, .replace и .remove, например, за сваляне на ограниченията в cupsd и rsyslogd), за предизвикване на отказ в обслужването (чрез прилагане на забранителни профили) и за заобикаляне на ограниченията на пространствата на имена (чрез зареждане на нов AppArmor профил "userns", например, за /usr/bin/time, което позволява създаването на неограничени user namespace).

Възможността за смяна на профили на AppArmor също позволява получаването на root-привилегии чрез свързване на нови профили към привилегировани инструменти като su и sudo, които блокират достъпа до определени системни повици. По-конкретно, правата root могат да се получат чрез блокиране на операцията setuid (CAP_SETUID) за инструмента sudo в комбинация с манипулация на средата MAIL_CONFIG, за да се смени директорията с настройки за пощата. сървър Postfix.

Същността на метода е, че при проблеми инструментът sudo изпраща имейл на администратора, стартирайки /usr/sbin/sendmail. Чрез блокиране на освобождаването на привилегиите може да се постигне стартиране на този процес с права root, а чрез задаване на променливата на средата MAIL_CONFIG преди стартиране на sudo, може да се предадат на инструмента sendmail различни настройки, включително указване на собствения обработчик postdrop, който се стартира при изпращане на поща. $ mkdir /tmp/postfix $ cat > /tmp/postfix/main.cf < /tmp/postfix/postdrop <> /tmp/postfix/pwned EOF $ chmod -R 0755 /tmp/postfix $ apparmor_parser -K -o sudo.pf < /sys/kernel/security/apparmor/.replace Парола: $ env -i MAIL_CONFIG=/tmp/postfix /usr/bin/sudo whatever sudo: PERM_SUDOERS: setresuid(-1, 1, -1): Операцията не е разрешена sudo: не може да се отвори /etc/sudoers: Операцията не е разрешена sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Операцията не е разрешена sudo: грешка при инициализация на audit плагин sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groups=1001(jane),100(users)

Като други методи за повишаване на привилегиите се споменават уязвимости в кода на AppArmor, работещ в ядрото на Linux. Показано е как да се получат права root чрез уязвимости, причинени от двойно изпълнение на функцията free() и достъп до вече освободена област от паметта (use-after-free) в кода за зареждане и смяна на профили на AppArmor. Например, AppArmor съхранява профила в структурата aa_loaddata, паметта за която е разпределена в slab-cache kmalloc-192, като поради състояние на гонка не е изключено да се получи достъп до паметта, която е заемала структурата след нейното освобождаване. Тази проблема може да се използва за получаване на контрол върху освободената памет и преразпределение на освободената страница памет за мапинг на съдържанието на файла /etc/passwd и презаписване на реда с паролата на root.

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

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