Några dagar sen nyheten släpptes att a kritisk sårbarhet, registrerad som CVE-2024-47191, i pam_oath PAM-modulen i oath-toolkit-paketet, används för tvåfaktorsautentisering med engångslösenord (OTP).
Angående sårbarhet nämns att uppstår på grund av hur pam_oath-modulen hanterar OATH-nyckelfiler. Ursprungligen lagrades dessa filer i /etc/users.oath, endast tillgängliga för rotanvändaren. Men med version 2.6.7 lades alternativet till för användare att lagra dessa filer i sina egna hemkataloger.
detta "liten förändring" tillät oprivilegierade användare att ändra sina egna filer av nycklar, men pam_oath justerade inte sina privilegier vid åtkomst till dessa filer, fortsatte osäkra metoder som antog att filerna fanns i en skyddad katalog. Det är värt att nämna att denna sårbarhet endast påverkar konfigurationer som tillåter att nyckelfiler lagras i hemkataloger, till exempel när PAM är konfigurerad.
Sårbarheten är att pam_oath skriver över nyckelfilen efter varje lyckad autentisering för att förhindra upprepad användning av samma engångslösenord. Denna process innebär att skapa en låsfil, skriva det uppdaterade innehållet till en temporär fil med tillägget .new, och sedan ersätter detta den ursprungliga filen med den nya. Den här .new-filen skapas och skrivs dock av en process med root-privilegier, men dess tidigare existens och säkerhet är inte korrekt verifierad.
Attacken kräver att "usersfile"-konfigurationen har en fil eller sökvägskomponent som finns på en sårbar plats. Den vanliga konfigurationen med en skrivlässkyddad konfiguration usersfile=/etc/users.oath är inte sårbar.
Det nämns att om nyckelfiler finns i systemkatalogen, som sådan innebär denna process inga problem. Men med stöd för användarhemkataloger introduceras en exploateringsbar sårbarhet, sedan En angripare kan skapa en symbolisk länk som kallas oath.secrets.new och peka den till valfri fil på systemet. Som ett resultat, efter framgångsrik autentisering, kan denna systemfil skrivas över, vilket potentiellt ger root-åtkomst till angriparen.
Vi bestämde oss för att utveckla en patch som tar hänsyn till så många användningsfall som möjligt, vilket säkerställer alla operationer samtidigt som bakåtkompatibiliteten bibehålls. Med patchen korsas användarens filsökväg säkert med hjälp av *at-familjen av systemanrop. Behörigheter kommer att tas bort för användarfilens ägare som en extra säkerhetsåtgärd. Låsmekanismen har fixerats för att täcka all åtkomst till användarfiler.
I publikation som beskriver sårbarheten Det nämns också att För att utnyttja sårbarheten kan en angripare skapa en symbolisk länk som pekar på filen /etc/shadow, som lagrar viktig information om systemlösenord. Efter framgångsrik autentisering via pam_oath, filen /etc/shadow kommer att skrivas över med angriparens OATH-nyckellista. Dessutom kommer pam_oath att synkronisera behörigheterna och ägandet av /etc/shadow med de för filen users.oath, vilket betyder att filen /etc/shadow kommer att ägas av den attackerande användaren. Med denna åtkomst kan angriparen modifiera /etc/shadow för att skapa rotåtkomstuppgifter och på så sätt uppnå full kontroll över systemet.
Patchen använder Linux-specifika funktioner (till exempel länkning av filer från /proc/self/fd), så den fungerar inte längre för icke-Linux-system. Patchbeskrivningen och kodkommentarerna innehåller fler ledtrådar om de individuella besluten som tas i denna patch.
Slutligen, om du är intresserad av att lära dig mer om det, bör du veta att sårbarheten dök upp i version 2.6.7 och åtgärdades i version 2.6.12. När det gäller detaljerna för patchen och säkerhetsuppdateringar kan du följa processen i olika distributioner som Debian, ubuntu, RHEL, SUSE/openSUSE y Arch.