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). Questa vulnerabilità consente a un utente con accesso locale non privilegiato al sistema, in determinate configurazioni PAM, di bypassare l'autenticazione senza inserire il token hardware. Nella pratica, il modulo pam-u2f è generalmente impiegato per l'autenticazione a due fattori o senza password tramite l'uso di token (ad esempio, per confermare le autorizzazioni per l'esecuzione di comandi tramite le utility su e sudo).
La vulnerabilità è causata da un ritorno errato 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 di 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, indicando il successo dell'autenticazione, se un altro modulo PAM nella catena di controlli ha restituito un risultato di autenticazione positivo.
Quando si utilizza il modulo pam-u2f insieme a pam_unix per l'autenticazione a due fattori, la vulnerabilità consente di superare con successo l'autenticazione in caso di verifica corretta della password, senza conferma del secondo fattore. Durante l'autenticazione senza password tramite token hardware, pam-u2f può essere utilizzato insieme al modulo PAM pam_faillock, che limita il numero di tentativi di autenticazione e restituisce PAM_SUCCESS se il limite non è stato raggiunto.
Un esempio di attacco è l'aggiramento del controllo del token durante l'esecuzione di comandi privilegiati da parte di un utente locale, utilizzando strumenti come sudo e su. Durante l'esecuzione di questi comandi, l'attaccante può creare condizioni per restituire il valore PAM_IGNORE dal modulo pam-u2f, ad esempio, esaurendo la memoria disponibile. Il problema è stato risolto nella versione pam-u2f 1.3.1.
Fonte: opennet.ru
