Společnost Qualys identifikovala 9 zranitelností v systému řízení přístupu AppArmor, z nichž nejnebezpečnější umožňují místnímu neoprávněnému uživateli získat práva root v systému, vystoupit z izolovaných kontejnerů a obejít omezení určená prostřednictvím AppArmor. Zranitelnosti byly pojmenovány CrackArmor. Identifikátory CVE zatím nebyly přiděleny. Úspěšné příklady zvýšení oprávnění byly demonstrovány v Ubuntu 24.04 a Debianu 13.
Problémy se týkají modulu LSM AppArmor od jádra Linux 4.11, které bylo vydáno v roce 2017, a projevují se v distribucích používajících AppArmor, jako jsou Ubuntu, Debian, openSUSE a SUSE (od verze openSUSE/SUSE 16 je jako výchozí nastaven SELinux, avšak AppArmor zůstal jako možnost). Opravy zranitelností byly zaslány vývojářům jádra Linux a v nejbližších dnech budou uživatelům nabídnuty v rámci aktualizací 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 a 5.10.253. Oprava je také zahrnuta v dnešních aktualizacích balíčků s jádrem pro Ubuntu. Současně byly v Ubuntu vydány aktualizace balíčků sudo, sudo-ldap a util-linux (součástí je utilita su), ve kterých byly opravovány nedostatky umožňující zneužití zranitelnosti v AppArmor. V Debianu je aktualizace ve fázi přípravy.
Problémy jsou způsobeny existencí základní zranitelnosti typu „zmatený zástupce“ (confused-deputy) v AppArmor, která umožňuje neoprávněným uživatelům nahrávat, nahrazovat a odstraňovat libovolné profily AppArmor. Tato zranitelnost může být přímo zneužita k vypnutí ochrany programů a služeb proti místním a vzdáleným útokům (například zápisem do pseudo-souborů /sys/kernel/security/apparmor/.load, .replace a .remove, což umožňuje odstranění omezení v cupsd a rsyslogd), způsobování nedostupnosti služeb (použitím zakazujících profilů) a obcházení omezení namespaces (například nahráním nového profilu AppArmor „userns“ pro /usr/bin/time, což umožňuje vytvářet neomezené uživatelské namespace).
Možnost výměny profilů AppArmor také umožňuje získání root oprávnění prostřednictvím připojení nových profilů k privilegovaným nástrojům, jako jsou su a sudo, které blokují přístup k některým systémovým voláním. Zejména lze získat práva root blokováním operace setuid (CAP_SETUID) pro nástroj sudo v kombinaci s manipulací s proměnnou prostředí MAIL_CONFIG ke změně adresáře s nastaveními pro poštu. serveru Postfix.
Podstata metody spočívá v tom, že při vzniku problémů nástroj sudo odešle administrátorovi e-mail spuštěním /usr/sbin/sendmail. Blokováním snížení oprávnění lze dosáhnout spuštění tohoto procesu s právy root, a nastavením proměnné prostředí MAIL_CONFIG před spuštěním sudo lze nástroji sendmail předat jiná nastavení, včetně určení vlastního zpracovatele postdrop, který se spustí při odesílání 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): Operace není povolena sudo: nelze otevřít /etc/sudoers: Operace není povolena sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Operace není povolena sudo: chyba při inicializaci auditu pluginu sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groups=1001(jane),100(users)
Mezi dalšími způsoby zvýšení oprávnění se zmiňují zranitelnosti v kódu AppArmor, který běží na úrovni jádra Linuxu. Bylo ukázáno, jak získat práva root pomocí zranitelností způsobených dvojím provedením funkce free() a přístupem k již uvolněné oblasti paměti (use-after-free) v kódu načítání a výměny profilů AppArmor. Například AppArmor ukládá profil do struktury aa_loaddata, jejíž paměť je přidělena ve slab-cache kmalloc-192, přičemž v důsledku stavu závodu není vyloučeno, že dojde k přístupu k paměti, kterou zabíraly struktury, po jejím uvolnění. Tento problém lze využít k získání kontroly nad uvolněnou pamětí a přidělení uvolněné stránky paměti k mapování obsahu souboru /etc/passwd a přepsání řádku s heslem root.
Zdroj: opennet.ru
