Те откриха уязвимост в oath-toolkit, която позволява получаването на root права

уязвимост

Преди няколко дни новината беше пусната че а критична уязвимост, регистриран като CVE-2024-47191, в модула pam_oath PAM на пакета oath-toolkit, използван за двуфакторно удостоверяване с помощта на еднократни пароли (OTP).

По отношение на уязвимостта се споменава, че възниква поради начина, по който модулът pam_oath обработва OATH ключови файлове. Първоначално тези файлове бяха съхранени в /etc/users.oath, достъпни само от root потребителя. Въпреки това, с версия 2.6.7 беше добавена опцията за потребителите да съхраняват тези файлове в собствените си домашни директории.

това "малка промяна" позволи на непривилегированите потребители да променят собствените си файлове от ключове, но pam_oath не коригира привилегиите си при достъп до тези файлове, продължавайки несигурни практики, които предполагаха, че файловете са в защитена директория. Струва си да се спомене, че тази уязвимост засяга само конфигурации, които позволяват ключовите файлове да се съхраняват в домашни директории, като например когато е конфигуриран PAM.

Уязвимостта е, че pam_oath презаписва ключовия файл след всяко успешно удостоверяване, за да се предотврати повторното използване на една и съща еднократна парола. Този процес включва създаване на заключващ файл, запис на актуализираното съдържание във временен файл с разширение .new и след това това заменя оригиналния файл с новия. Този .new файл обаче е създаден и написан от процес с root права, но предишното му съществуване и сигурност не са правилно проверени.

Атаката изисква конфигурацията "usersfile" да има файл или компонент на пътя, който се намира на уязвимо място. Общата конфигурация със защитена конфигурация от запис и четене usersfile=/etc/users.oath не е уязвима.

Споменава се, че ако ключовите файлове са в системната директория, като такъв този процес не създава проблеми. Но с поддръжката на началните директории на потребителите се въвежда експлоатируема уязвимост, тъй като Нападателят може да създаде символна връзка, наречена oath.secrets.new, и да я насочи към всеки файл в системата. В резултат на това, при успешно удостоверяване, този системен файл може да бъде презаписан, потенциално предоставяйки root достъп на атакуващия.

Решихме да разработим корекция, която взема предвид възможно най-много случаи на употреба, като гарантира всички операции, като същевременно поддържа обратна съвместимост. С корекцията пътят на потребителския файл се преминава безопасно с помощта на *at семейството от системни извиквания. Привилегиите ще бъдат премахнати за собственика на потребителския файл като допълнителна мярка за сигурност. Заключващият механизъм е коригиран, за да покрие целия достъп до потребителски файлове.

В публикация, описваща подробно уязвимостта Споменава се също, че За да използва уязвимостта, атакуващият може да създаде символна връзка който сочи към файла /etc/shadow, който съхранява критична информация за системните пароли. След успешно удостоверяване чрез pam_oath, файла /etc/shadow ще бъде презаписан със списъка с OATH ключове на атакуващия. Освен това pam_oath ще синхронизира разрешенията и собствеността на /etc/shadow с тези на файла users.oath, което означава, че файлът /etc/shadow ще стане собственост на атакуващия потребител. С този достъп атакуващият може да модифицира /etc/shadow, за да създаде идентификационни данни за root достъп, като по този начин постига пълен контрол над системата.

Корекцията използва специфични за Linux функции (например свързване на файлове от /proc/self/fd), така че вече не работи за системи, различни от Linux. Описанието на корекцията и коментарите на кода съдържат повече улики за отделните решения, взети в тази корекция.

И накрая, ако се интересувате да научите повече за него, трябва да знаете, че уязвимостта се появи във версия 2.6.7 и беше коригирана във версия 2.6.12. Що се отнася до подробностите за корекцията и актуализациите на защитата, можете да следвате процеса в различните дистрибуции като DebianUbuntuRHELSUSE/openSUSE Арка.