Spoločnosť Qualys identifikovala 9 zraniteľností v systéme správy prístupu AppArmor, z ktorých najnebezpečnejšie umožňujú lokálnemu neoprávnenému používateľovi získať práva roota v systéme, uniknúť z izolovaných kontajnerov a obísť obmedzenia nastavené prostredníctvom AppArmor. Zraniteľnosti dostali kódové meno CrackArmor. CVE identifikátory zatiaľ neboli pridelené. Úspešné príklady zvýšenia privilégií boli demonštrované v Ubuntu 24.04 a Debian 13.
Problémy sú prítomné v LSM-module AppArmor od kernelu Linux 4.11, vydaného v roku 2017, a prejavujú sa v distribúciách, ktoré používajú AppArmor, ako sú Ubuntu, Debian, openSUSE a SUSE (od openSUSE/SUSE 16 je predvolene aktívny SELinux, ale AppArmor je ponechaný ako možnosť). Opravy zraniteľností boli zaslané vývojárom kernelu Linux a v najbližších dňoch budú ponúknuté používateľom v rámci aktualizácií 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 a 5.10.253. Oprava je tiež zahrnutá v dnešných aktualizáciách balíkov s kernelom pre Ubuntu. Okrem toho boli v Ubuntu vydané aktualizácie balíkov sudo, sudo-ldap a util-linux (ktorý obsahuje utilitu su), v ktorých boli opravené nedostatky, ktoré umožňovali zneužitie zraniteľnosti v AppArmor. V Debian je aktualizácia v procese prípravy.
Problémy sú spôsobené prítomnosťou v AppArmor fundamentálnej zraniteľnosti triedy „zmýlený zástupca“ („confused-deputy“), ktorá umožňuje neoprávneným používateľom nahrávať, nahrádzať a odstraňovať ľubovoľné profily AppArmor. Táto zraniteľnosť môže byť priamo použitá na vypnutie ochrany programov a služieb pred lokálnymi a vzdialenými útokmi (prostredníctvom zápisu do pseudo súborov /sys/kernel/security/apparmor/.load, .replace a .remove, napríklad na odstránenie obmedzení v cupsd a rsyslogd), vyvolanie odmietania služby (prostredníctvom uplatnenia zakázaných profilov) a obídenie obmedzení priestorov mien (prostredníctvom nahrávania nového profilu AppArmor „userns“, napríklad pre /usr/bin/time, ktorý umožňuje vytvárať neobmedzené user namespace).
Možnosť nahradenia profilov AppArmor tiež umožňuje získať root privilegium prostredníctvom pripojenia k privilegovaným nástrojom, ako sú su a sudo, nových profilov, ktoré blokujú prístup k niektorým systémovým volaniam. Konkrétne práva root sa dajú získať zablokovaním operácie setuid (CAP_SETUID) pre nástroj sudo v kombinácii s manipuláciou s premennou prostredia MAIL_CONFIG na zmenu adresára s konfiguráciami pre poštu servera Postfix.
Podstata metódy spočíva v tom, že pri výskyte problémov nástroj sudo pošle správu administrátorovi, spustením /usr/sbin/sendmail. Zablokovaním zníženia privilégií je možné dosiahnuť spustenie tohto procesu s právami root, a ak pred spustením nástroja sudo nastavíte premennú prostredia MAIL_CONFIG, môžete nástroju sendmail poskytnúť iné nastavenia, vrátane uvedenia vlastného spracovateľa postdrop, ktorý sa spúšťa pri odosielaní pošty. $ 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 Heslo: $ env -i MAIL_CONFIG=/tmp/postfix /usr/bin/sudo whatever sudo: PERM_SUDOERS: setresuid(-1, 1, -1): Operácia nie je povolená sudo: nemožno otvoriť /etc/sudoers: Operácia nie je povolená sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Operácia nie je povolená sudo: chyba pri inicializácii audit pluginu sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groups=1001(jane),100(users)
Medzi ďalšie spôsoby zvýšenia privilégií patrí zraniteľnosť v kóde AppArmor, ktorý pracuje na úrovni jadra Linuxu. Ukazuje sa, ako získať práva root pomocou zraniteľností spôsobených dvojitým vykonaním funkcie free() a prístupom k už uvoľnenej oblasti pamäte (use-after-free) v kóde načítania a nahradenia profilov AppArmor. Napríklad, AppArmor uchováva profil v štruktúre aa_loaddata, pamäť pre ktorú sa alokuje v slab-cache kmalloc-192, pričom v dôsledku závodného stavu nie je vylúčené, že do pamäte, ktorú zaberala štruktúra, dôjde k prístupu po jej uvoľnení. Tento problém sa dá využiť na získanie kontroly nad uvoľnenou pamäťou a prealokovanie uvoľnenej stránky pamäte na mapovanie obsahu súboru /etc/passwd a prepísanie riadku s heslom root.
Zdroj: opennet.ru
