Het bedrijf Qualys heeft 9 kwetsbaarheden ontdekt in het mandaat voor toegangsbeheer AppArmor. De meest ernstige hiervan stellen een lokale, niet-geprivilegieerde gebruiker in staat om rootrechten op het systeem te verkrijgen, uit geĆÆsoleerde containers te ontsnappen en beperkingen opgelegd via AppArmor te omzeilen. De kwetsbaarheden hebben de codenaam CrackArmor gekregen. CVE-identificatienummers zijn nog niet toegewezen. Succesvolle voorbeelden van privilege-escalatie zijn gedemonstreerd in Ubuntu 24.04 en Debian 13.
De problemen zijn aanwezig in de LSM-module AppArmor sinds de Linux-kernel 4.11, die in 2017 werd uitgebracht, en doen zich voor in distributies die AppArmor gebruiken, zoals Ubuntu, Debian, openSUSE en SUSE (vanaf openSUSE/SUSE 16 is SELinux standaard ingeschakeld, maar wordt AppArmor als optie behouden). Patches om de kwetsbaarheden te verhelpen zijn aan de Linux-kernelontwikkelaars doorgestuurd en zullen binnen enkele dagen aan gebruikers beschikbaar worden gesteld als onderdeel van de updates 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 en 5.10.253. De oplossing is ook opgenomen in de huidige pakketupdates met de kernel voor Ubuntu. Tegelijkertijd zijn er updates uitgebracht voor de pakketten sudo, sudo-ldap en util-linux (inclusief de su-hulpprogramma), die tekortkomingen hebben verholpen waarmee de kwetsbaarheid in AppArmor kon worden uitgebuit. De update voor Debian is in voorbereiding.
De problemen worden veroorzaakt door de aanwezigheid van een fundamentele kwetsbaarheid van het type 'verwarde plaatsvervanger' ('confused-deputy') in AppArmor, die het mogelijk maakt voor niet-geprivilegieerde gebruikers om willekeurige AppArmor-profielen te laden, te vervangen en te verwijderen. Deze kwetsbaarheid kan direct worden gebruikt om de bescherming van programma's en services tegen lokale en externe aanvallen te ondermijnen (door pseudo-bestanden /sys/kernel/security/apparmor/.load, .replace en .remove te schrijven, bijvoorbeeld om beperkingen op cupsd en rsyslogd op te heffen), het veroorzaken van een denial-of-service (door het toepassen van verboden profielen) en het omzeilen van namespace-beperkingen (door het laden van een nieuw AppArmor-profiel 'userns', bijvoorbeeld voor /usr/bin/time, dat onbeperkte user namespaces mogelijk maakt).
De mogelijkheid om AppArmor-profielen te vervangen stelt ook in staat om root-rechten te verkrijgen door nieuwe profielen te koppelen aan geprivilegieerde hulpprogramma's zoals su en sudo, die de toegang tot bepaalde systeemoproepen blokkeren. In het bijzonder kunnen root-rechten worden verkregen door de setuid-operatie (CAP_SETUID) voor het hulpprogramma sudo te blokkeren in combinatie met manipulatie van de omgevingsvariabele MAIL_CONFIG om de directory met mailinstellingen te veranderen. de server Postfix.
De essentie van de methode is dat wanneer er problemen optreden, het hulpprogramma sudo een e-mail naar de beheerder stuurt door /usr/sbin/sendmail uit te voeren. Door de privilegevereffening te blokkeren, kan dit proces met root-rechten worden uitgevoerd, en door voorafgaand aan de uitvoering van sudo de omgevingsvariabele MAIL_CONFIG in te stellen, kunnen andere instellingen aan het hulpprogramma sendmail worden doorgegeven, waaronder de specificatie van de eigen postdrop-handler die wordt uitgevoerd bij het verzenden van e-mail. $ 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 Wachtwoord: $ env -i MAIL_CONFIG=/tmp/postfix /usr/bin/sudo whatever sudo: PERM_SUDOERS: setresuid(-1, 1, -1): Operatie niet toegestaan sudo: kan /etc/sudoers niet openen: Operatie niet toegestaan sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Operatie niet toegestaan sudo: fout bij het initialiseren van auditplugin sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groepen=1001(jane),100(users)
Andere methoden om privileges te verhogen omvatten kwetsbaarheden in de AppArmor-code die op kernel-niveau van Linux draait. Er wordt getoond hoe root-rechten kunnen worden verkregen door kwetsbaarheden veroorzaakt door het dubbel uitvoeren van de functie free() en toegang tot al vrijgegeven geheugen (use-after-free) in de code voor het laden en vervangen van AppArmor-profielen. Bijvoorbeeld, AppArmor slaat het profiel op in de structuur aa_loaddata, waarvoor geheugen wordt toegewezen in de slab-cache kmalloc-192, waarbij de kans bestaat dat als gevolg van racecondities toegang wordt verkregen tot het geheugen dat door de structuur werd ingenomen nadat deze was vrijgegeven. Dit probleem kan worden gebruikt om controle over het vrijgegeven geheugen te verkrijgen en de vrijgegeven geheugenpagina opnieuw toe te wijzen voor het mappen van de inhoud van het bestand /etc/passwd en het herschrijven van de regel met het rootwachtwoord.
Bron: opennet.ru
