openSUSE projekti arendajad on tuvastanud haavatavuse (CVE-2025-23013) PAM-moodulis pam-u2f, mida kasutatakse YubiKey, Yubico Security Key, YubiHSM ja teiste FIDO-seadmete autentimiseks, mis toetavad U2F (Universal 2nd Factor) protokolli. See haavatavus võimaldab kasutajal, kellel on tavakasutaja kohalik juurdepääs süsteemile, teatud PAM-i konfiguratsioonides autentida end ilma füüsilise tokeni sisestamata. Praktiliselt on moodul pam-u2f enamasti kasutatav kahefaasiliseks või paroolivabaks autentimiseks, kasutades tokeneid (näiteks käskude volituste kinnitamiseks utiliitide su ja sudo kaudu).
Haavatavus tuleneb funktsiooni pam_sm_authenticate() vale PAM_IGNORE väärtuse tagastamisest. Seda väärtust tagastatakse, kui esineb viga gethostname(), pam_modutil_drop_priv(), pam_modutil_regain_priv() või resolve_authfile_path() väljakutses, samuti mäluhaldusprobleemide korral strdup() või calloc() funktsioonides. Probleem on selles, et teek libpam, saades PAM-modulilt tulemuse väärtusega PAM_IGNORE, tagastab lõppkoodina PAM_SUCCESS, mis näitab edukat autentimist, kui mingi muu PAM-moodul tagastas autentimise eduka tulemuse.
Pam-u2f mooduli kasutamisel koos pam_unixiga kahefaasiliseks autentimiseks võimaldab haavatavus edukalt autentida juhul, kui parooli kontrollimine õnnestub, ilma et oleks vaja teise teguri kinnitust. Paroolivaba autentimise korral füüsilise tokeni kaudu võib pam-u2f koos kasutada PAM-mooduliga pam_faillock, mis piirab autentimiskatsete arvu ja tagastab PAM_SUCCESS, kui limit ei ole ammendatud.
Ründamise näitena tuuakse välja tokeni kontrollimise mööda minek, kui kohaliku kasutaja poolt käivitatakse privileegide määramise käsud, kasutades utiliite sudo ja su. Selle käivitamise ajal võib ründaja luua tingimused, et moodul pam-u2f tagastaks väärtuse PAM_IGNORE, näiteks mäluressursside ammendamisel. Probleem on lahendatud versioonis pam-u2f 1.3.1.
Allikas: opennet.ru
