Compania Qualys a identificat 9 vulnerabilități în sistemul de management al accesului mandat AppArmor, cele mai periculoase dintre acestea permițând unui utilizator local fără privilegii să obțină drepturi de root în sistem, să iasă din containerele izolate și să ocolească restricțiile impuse prin AppArmor. Vulnerabilitățile au primit numele de cod CrackArmor. Identificatorii CVE nu au fost deocamdată atribuiți. Exemplele de acces crescut la privilegii au fost demonstrate în Ubuntu 24.04 și Debian 13.
Problemele sunt prezente în modulul LSM AppArmor începând cu nucleul Linux 4.11, lansat în 2017, și se manifestă în distribuțiile care utilizează AppArmor, cum ar fi Ubuntu, Debian, openSUSE și SUSE (începând cu openSUSE/SUSE 16, SELinux este activat implicit, dar AppArmor rămâne opțional). Patch-urile pentru remedierea vulnerabilităților au fost transmise dezvoltatorilor nucleului Linux și vor fi disponibile utilizatorilor în următoarele zile ca parte a actualizărilor 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 și 5.10.253. Corecția este inclusă și în actualizările de astăzi pentru pachetele de nucleu pentru Ubuntu. De asemenea, în Ubuntu au fost lansate actualizări pentru pachetele sudo, sudo-ldap și util-linux (care include utilitarul su), în care au fost rezolvate problemele ce permiteau exploatarea vulnerabilității din AppArmor. În Debian, actualizarea este în curs de pregătire.
Problemele sunt cauzate de prezența în AppArmor a unei vulnerabilități fundamentale de tip «mandatar confundat» («confused-deputy»), care permite utilizatorilor fără privilegii să încarce, să înlocuiască și să șteargă profilele AppArmor. Această vulnerabilitate poate fi utilizată direct pentru a dezactiva protecția programelor și serviciilor împotriva atacurilor locale și la distanță (prin scrierea în pseudo-fișiere /sys/kernel/security/apparmor/.load, .replace și .remove, de exemplu, pentru a ridica restricțiile în cupsd și rsyslogd), provocând un refuz de serviciu (prin aplicarea profilelor restrictive) și ocolind restricțiile spațiilor de nume (prin încărcarea unui nou profil AppArmor «userns», de exemplu, pentru /usr/bin/time, permițând crearea de spații de nume utilizator nelimitate).
Posibilitatea de a înlocui profilele AppArmor permite, de asemenea, obținerea privilegiilor de root prin asocierea de profile noi, care blochează accesul la anumite apeluri de sistem, cu utilitare privilegiate, cum ar fi su și sudo. În special, se pot obține privilegii root blocând operația setuid (CAP_SETUID) pentru utilitarul sudo, combinată cu manipularea variabilei de mediu MAIL_CONFIG pentru a schimba directorul cu setările pentru poștă. server Postfix.
Esenta metodei este că, atunci când apar probleme, utilitarul sudo trimite un e-mail administratorului, lansând /usr/sbin/sendmail. Blocând resetarea privilegiilor, se poate realiza pornirea acestui proces cu privilegii root, iar prin setarea variabilei de mediu MAIL_CONFIG înainte de a lansa sudo, se pot oferi altor setări utilitarului sendmail, inclusiv specificarea propriului handler postdrop, care este lansat la trimiterea e-mailului. $ 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 Password: $ env -i MAIL_CONFIG=/tmp/postfix /usr/bin/sudo whatever sudo: PERM_SUDOERS: setresuid(-1, 1, -1): Operation not permitted sudo: unable to open /etc/sudoers: Operation not permitted sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Operation not permitted sudo: error initializing audit plugin sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groups=1001(jane),100(users)
Printre alte metode de ridicare a privilegiilor se menționează vulnerabilitățile din codul AppArmor, care funcționează la nivelul nucleului Linux. Este arătat cum se pot obține privilegii root prin exploatarea vulnerabilităților cauzate de executarea dublă a funcției free() și accesarea unei zone de memorie deja eliberate (use-after-free) în codul de încărcare și înlocuire a profilului AppArmor. De exemplu, AppArmor păstrează profilul în structura aa_loaddata, pentru care memoria este alocată în slab-cache kmalloc-192, existând riscul ca, din cauza unei stare de competiție, să se acceseze o memorie care a fost ocupată de structură după ce aceasta a fost eliberată. Această problemă poate fi utilizată pentru a obține control asupra memoriei eliberate și pentru a redistribui pagina de memorie eliberată pentru a mapa conținutul fișierului /etc/passwd și a rescrie rândul cu parola root.
Sursa: opennet.ro
