Vulnerabilità in AppArmor che consentono di ottenere accesso root nel sistema

L'azienda Qualys ha identificato 9 vulnerabilità nel sistema di gestione dei permessi obbligatori AppArmor, le più pericolose delle quali consentono a un utente locale non privilegiato di ottenere i diritti di root nel sistema, uscire da contenitori isolati e aggirare le restrizioni impostate tramite AppArmor. Le vulnerabilità sono state chiamate CrackArmor. Gli identificatori CVE non sono stati ancora assegnati. Esempi di elevazione dei privilegi sono stati dimostrati in Ubuntu 24.04 e Debian 13.

I problemi sono presenti nel modulo LSM di AppArmor a partire dal kernel Linux 4.11, rilasciato nel 2017, e si manifestano nelle distribuzioni che utilizzano AppArmor, come Ubuntu, Debian, openSUSE e SUSE (a partire da openSUSE/SUSE 16, SELinux è abilitato di default, ma AppArmor è rimasto come opzione). Le patch per risolvere le vulnerabilità sono state inviate agli sviluppatori del kernel Linux e nei prossimi giorni saranno proposte agli utenti come parte degli aggiornamenti 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 e 5.10.253. La correzione è stata inclusa anche negli aggiornamenti odierni dei pacchetti del kernel per Ubuntu. Inoltre, in Ubuntu sono stati rilasciati aggiornamenti per i pacchetti sudo, sudo-ldap e util-linux (incluso il comando su), che hanno corretto difetti che rendevano possibile sfruttare la vulnerabilità di AppArmor. In Debian, l'aggiornamento è in fase di preparazione.

I problemi sono causati dalla presenza in AppArmor di una vulnerabilità fondamentale di tipo "confused-deputy", che consente agli utenti non privilegiati di caricare, sostituire e rimuovere profili AppArmor arbitrari. Questa vulnerabilità può essere utilizzata direttamente per disattivare la protezione di programmi e servizi da attacchi locali e remoti (tramite la scrittura dei pseudo-file /sys/kernel/security/apparmor/.load, .replace e .remove, ad esempio, per rimuovere le restrizioni in cupsd e rsyslogd), causare un denial of service (attraverso l'applicazione di profili restrittivi) e aggirare le limitazioni degli spazi dei nomi (caricando un nuovo profilo AppArmor "userns", ad esempio, per /usr/bin/time, che consente di creare spazi dei nomi utente illimitati).

La possibilità di sostituire i profili di AppArmor consente anche di ottenere i privilegi di root associando a utility privilegiate come su e sudo nuovi profili che bloccano l'accesso ad alcune chiamate di sistema. In particolare, è possibile ottenere i diritti di root bloccando l'operazione setuid (CAP_SETUID) per l'utility sudo in combinazione con la manipolazione della variabile d'ambiente MAIL_CONFIG per cambiare la directory delle impostazioni per la posta. server Postfix.

Il metodo consiste nel fatto che, in caso di problemi, l'utility sudo invia una email all'amministratore avviando /usr/sbin/sendmail. Bloccando il ripristino dei privilegi si può ottenere l'avvio di questo processo con diritti di root, e impostando la variabile d'ambiente MAIL_CONFIG prima dell'esecuzione di sudo si possono passare diverse configurazioni all'utility sendmail, incluso l'indicazione del proprio gestore postdrop, avviato durante l'invio della posta. $ 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): Operazione non autorizzata sudo: impossibile aprire /etc/sudoers: Operazione non autorizzata sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Operazione non autorizzata sudo: errore nell'inizializzazione del plugin di audit sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) gruppi=1001(jane),100(users)

Tra gli altri metodi di elevazione dei privilegi vengono menzionate le vulnerabilità nel codice di AppArmor che opera a livello del kernel Linux. È dimostrato come ottenere i diritti di root tramite vulnerabilità causate da un doppio esecuzione della funzione free() e accesso a una zona di memoria già liberata (use-after-free) nel codice di caricamento e sostituzione dei profili di AppArmor. Ad esempio, AppArmor memorizza il profilo nella struttura aa_loaddata, la cui memoria è allocata nel cache slab kmalloc-192; a causa della condizione di gara, non è escluso che si possa accedere alla memoria occupata dalla struttura dopo che essa è stata liberata. Questo problema può essere sfruttato per ottenere il controllo della memoria liberata e riallocare la pagina di memoria liberata per mappare il contenuto del file /etc/passwd e sovrascrivere la riga con la password di root.

Fonte: opennet.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster