Nel componente systemd-coredump, che gestisce i file core generati dopo il crash dei processi, è stata individuata una vulnerabilità (CVE-2022-4415) che consente a un utente locale non privilegiato di determinare il contenuto della memoria di processi privilegiati avviati con il flag suid root. È stata confermata la presenza del problema nella configurazione predefinita nelle distribuzioni openSUSE, Arch, Debian, Fedora e SLES.
La vulnerabilità è causata dall'assenza di un'adeguata gestione del parametro sysctl fs.suid_dumpable in systemd-coredump, che, con il valore predefinito impostato su 2, consente la generazione di core dump per i processi con il flag suid. Si presume che ai file core scritti dal kernel per i processi suid debbano essere assegnati permessi che consentano la lettura solo all'utente root. L'utilità systemd-coredump, che viene invocata dal kernel per salvare i file core, li salva sotto l'identità di root, ma offre anche accesso ai file core basato su ACL, consentendo la lettura in base all'identificativo del proprietario che ha avviato originariamente il processo.
Questa caratteristica consente di caricare file core senza considerare che il programma possa cambiare l'identificativo utente e funzionare con privilegi elevati. L'attacco consiste nel fatto che l'utente può avviare un'applicazione suid e inviarle il segnale SIGSEGV, dopodiché può caricare il contenuto del file core, che include un'istantanea della memoria del processo durante il crash.
Ad esempio, un utente può avviare «/usr/bin/su» e in un altro terminale terminarne l'esecuzione con il comando «kill -s SIGSEGV `pidof su`», dopo di che systemd-coredump salverà il file core nella directory /var/lib/systemd/coredump, impostando per esso un'ACL che consente la lettura all'utente corrente. Poiché l'utilità suid ‘su’ legge nella memoria il contenuto di /etc/shadow, l'attaccante può accedere alle informazioni sugli hash delle password di tutti gli utenti nel sistema. L'utilità sudo non è vulnerabile all'attacco, poiché vieta la generazione di file core tramite ulimit.
Secondo quanto dichiarato dagli sviluppatori di systemd, la vulnerabilità si manifesta a partire dalla versione systemd 247 (novembre 2020), ma secondo il ricercatore che ha scoperto il problema, anche la versione 246 è vulnerabile. La vulnerabilità si presenta se systemd è compilato con la libreria libacl (di default in tutte le popolari distribuzioni). Attualmente, la correzione è disponibile sotto forma di patch. Puoi seguire la correzione nelle distribuzioni alle seguenti pagine: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch. Come misura alternativa di protezione, puoi impostare sysctl fs.suid_dumpable a 0, che disabilita l'invio dei dump al gestore systemd-coredump.
Fonte: opennet.ru
