Gli sviluppatori del progetto openSUSE hanno identificato una vulnerabilità (CVE-2025-23013) nel modulo PAM pam-u2f, utilizzato per l'autenticazione tramite token YubiKey, Yubico Security Key, YubiHSM e altri dispositivi FIDO che supportano il protocollo U2F (Universal 2nd Factor). La vulnerabilità consente a un utente con accesso locale non privilegiato al sistema, in determinate configurazioni PAM, di completare l'autenticazione senza inserire il token hardware. In pratica, il modulo pam-u2f è solitamente collegato per l'autenticazione a due fattori o senza password utilizzando i token (ad esempio, per confermare le autorizzazioni nell'esecuzione di comandi tramite gli utility su e sudo).
La vulnerabilità è causata dal ritorno incorretto da parte della funzione pam_sm_authenticate() del valore PAM_IGNORE. Questo valore viene restituito in caso di errore durante le chiamate a gethostname(), pam_modutil_drop_priv(), pam_modutil_regain_priv() o resolve_authfile_path(), nonché in caso di problemi di allocazione della memoria in strdup() o calloc(). Il problema è che la libreria libpam, ricevendo dal modulo PAM un risultato con codice PAM_IGNORE, restituirà il codice finale PAM_SUCCESS, che indica un'autenticazione riuscita, se in una catena di controlli un altro modulo PAM ha restituito un risultato di autenticazione positivo.
Utilizzando il modulo pam-u2f in combinazione con pam_unix per l'autenticazione a due fattori, la vulnerabilità consente di superare con successo l'autenticazione in caso di verifica positiva della password, senza conferma del secondo fattore. Durante l'esecuzione dell'autenticazione senza password tramite un token hardware, pam-u2f può essere utilizzato in combinazione con il modulo PAM pam_faillock, il quale limita il numero di tentativi di autenticazione e restituisce PAM_SUCCESS se il limite non è stato raggiunto.
Un esempio di attacco consiste nell'aggirare il controllo del token durante l'esecuzione di comandi privilegiati da parte di un utente locale, utilizzando gli utility sudo e su. Durante l'esecuzione di questi comandi, l'attaccante può creare condizioni tali da far restituire al modulo pam-u2f il valore PAM_IGNORE, ad esempio, esaurendo la memoria disponibile. Il problema è stato risolto nella versione pam-u2f 1.3.1.
Fonte: opennet.ru
