Nel modulo PAM pam_oath, parte del pacchetto oath-toolkit e utilizzato per l'autenticazione a due fattori con password usa e getta (OTP), è stata scoperta una vulnerabilità (CVE-2024-47191) che consente a un utente non privilegiato di ottenere accesso root al sistema.
Il modulo pam_oath viene eseguito con i privilegi di root ed è stato originariamente progettato per memorizzare le chiavi OATH nel file /etc/users.oath, accessibile solo all'utente root. Nella versione 2.6.7 di oath-toolkit è stato aggiunto il supporto per la memorizzazione dei file con le chiavi nelle directory home degli utenti (~/.config/users.oath). Gli utenti non privilegiati hanno ottenuto la possibilità di modificare i file con le proprie chiavi, ma pam_oath, durante l'accesso a questi file, non ha ridotto i privilegi e ha continuato a utilizzare metodi di lavoro con i file non sicuri, previsti per file situati in una directory non modificabile.
La vulnerabilità è causata dal fatto che, dopo ogni autenticazione riuscita con una password usa e getta, pam_oath sovrascriveva il file con le chiavi per evitare l'uso ripetuto di una stessa password. L'operazione di sovrascrittura consisteva nel creare un file di lock nella stessa directory, scrivere nuovi contenuti in un file con estensione «.new» e sostituire il file vecchio con la nuova versione. In questo processo, il file con estensione «.new» veniva creato con gli stessi diritti del file di destinazione, ma la scrittura avveniva tramite un processo con diritti di root e senza controllare l'esistenza del file.
Se il file era ubicato nella directory di sistema non c'erano problemi, ma dopo l'introduzione del supporto per la memorizzazione dei file con le chiavi nelle directory home, è emersa una vulnerabilità facilmente sfruttabile. Per attaccare bastava creare un link simbolico «~/.config/oath.secrets.new» e indirizzarlo verso qualsiasi file di sistema che sarebbe stato sovrascritto dopo un'autenticazione riuscita.
Per ottenere accesso root si può indirizzare il link simbolico verso il file /etc/shadow. In questo caso, pam_oath scriverà in /etc/shadow l'aggiornato elenco delle chiavi e sincronizzerà il proprietario e i diritti di accesso con il file users.oath. Poiché il file users.oath appartiene all'utente, il proprietario di /etc/shadow sarà questo utente, dopo di che l'attaccante potrà modificare il file /etc/shadow e registrare nuove credenziali per l'account root.
La vulnerabilità si manifesta a partire dal rilascio di oath-toolkit 2.6.7 ed è stata risolta (1,2,3) nella versione 2.6.12. È possibile monitorare la risoluzione della vulnerabilità nelle distribuzioni alle seguenti pagine: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch. La vulnerabilità interessa solo le configurazioni in cui è consentito l'archiviazione di file con chiavi nelle directory home, ad esempio quando si utilizza nella configurazione PAM la riga «auth [user_unknown=ignore success=ok] pam_oath.so usersfile=${HOME}/user.oath».
Inoltre, si può menzionare la vulnerabilità recentemente scoperta (CVE-2024-9313) nel modulo PAM del pacchetto Authd, sviluppato dal progetto Ubuntu. La vulnerabilità consente a un utente gestito tramite il broker Authd di spacciarsi per qualsiasi altro utente gestito dallo stesso broker e di superare con successo l'autenticazione tramite su, sudo o ssh come un altro utente. Il problema è stato risolto nella versione Authd 0.3.5.
Fonte: opennet.ru
