The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в pam_oath, позволяющая получить права root в системе

04.10.2024 21:58

В PAM-модуле pam_oath, входящем в состав пакета oath-toolkit и применяемого при двухфакторной аутентификации с использованием одноразовых паролей (OTP), выявлена уязвимость (CVE-2024-47191), позволяющая непривилегированному пользователю получить root-доступ в системе.

Модуль pam_oath выполняется с правами root и изначально был рассчитан на размещение OATH-ключей в файле /etc/users.oath, доступ к которому имеет только пользователь root. В версии oath-toolkit 2.6.7 была добавлена поддержка размещения файлов с ключами в домашних каталогах пользователей (~/.config/users.oath). Непривилегированные пользователи получили возможность изменения файлов со своими ключами, но pam_oath при обращении к этим файлам не сбрасывал привилегии и продолжил использование небезопасных методов работы с файлами, рассчитанные на то, что файлы размещены в каталоге, недоступном для изменения.

Уязвимость вызвана тем, что после каждой успешной аутентификации по одноразовому паролю, pam_oath выполнял перезапись файла с ключами чтобы не допустить использование одного пароля несколько раз. Операция перезаписи сводилась к созданию в том же каталоге lock-файла, записи нового содержимого в файл с расширением ".new" и замене старого файла на новый вариант. При этом файл с расширением ".new" создавался с теми же правами, что и целевой файл, но запись в него производилась процессом с правами root и без проверки существования файла.

Если файл размещался в системном каталоге проблем не возникало, но после появления поддержки размещения файлов с ключами в домашних каталогах, возникла легко эксплуатируемая уязвимость. Для атаки достаточно создать символическую ссылку "~/.config/oath.secrets.new" и направить её на любой системный файл, который будет перезаписан после успешной аутентификации.

Для получения доступа root можно направить символическую ссылку на файл /etc/shadow. В этом случае pam_oath запишет в /etc/shadow актуальный список ключей и синхронизирует владельца и права доступа с файлом users.oath. Так как файл users.oath принадлежит пользователю, то в качестве владельца /etc/shadow будет выставлен этот пользователь, после чего атакующий сможет отредактировать файл /etc/shadow и записать в него новые параметры входа для учётной записи root.

Уязвимость проявляется начиная с выпуска oath-toolkit 2.6.7 и устранена (1,2,3) в версии 2.6.12. Отследить устранение уязвимости в дистрибутивах можно на данных страницах: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch. Уязвимость затрагивает только конфигурации, в которых разрешено размещение файлов с ключами в домашних каталогах, например, при использовании в настройках PAM строки "auth [user_unknown=ignore success=ok] pam_oath.so usersfile=${HOME}/user.oath".

Дополнительно можно упомянуть выявленную на днях уязвимость (CVE-2024-9313) в PAM-модуле из состава пакета Authd, развиваемого проектом Ubuntu. Уязвимость позволяет пользователю, управляемому через брокер Authd, выдать себя за любого другого пользователя, управляемого этим же брокером, и успешно пройти аутентификацию через su, sudo или ssh под другим пользователем. Проблема устранена в версии Authd 0.3.5.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Локальная root-уязвимость в pam-python
  3. OpenNews: Критическая уязвимость в обработчике крахов приложений, применяемом в Ubuntu
  4. OpenNews: Критическая уязвимость в PolKit, позволяющая получить root-доступ в большинстве дистрибутивов Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61987-pam_oath
Ключевые слова: pam_oath, pam
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.10, Аноним (10), 22:49, 04/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > после чего атакующий сможет отредактировать файл /etc/shadow и записать в него новые параметры входа для учётной записи root.

    а там не надо делать что-то на подобии pwd_mkdb?

     
     
  • 2.12, Аноним (12), 23:03, 04/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это просто текстовый файл. pwd_mkdb - это просто обёртка в стандартной библиотеке. Можно читать самостоятельно и самостоятельно парсить, там даже формат очень простой.
     

  • 1.13, Аноним (12), 23:09, 04/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Фикс, похоже, заключается в том, чтобы добавить O_EXCL помимо O_CREAT в open(). По POSIX, комбинация O_EXCL | O_CREAT должна выдать ошибку, если путь уже существует, даже если это симлинк.
     
  • 1.14, IdeaFix (ok), 23:17, 04/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чот какой-то болтосвар...
     
  • 1.15, Ivan_83 (ok), 23:42, 04/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А где растисты с их: "а вот было бы на расте, такого бы никогда не случилось, в расте уязвимостей нет, kоkоkо"? )
     
     
  • 2.16, растист (?), 00:43, 05/10/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.18, Аноним (18), 00:50, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    у них есть волшебная мантра с "unsafe"
     
  • 2.28, Аноним (28), 02:13, 05/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     

     ....ответы скрыты (3)

  • 1.17, Аноним (18), 00:49, 05/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1) а что, система(pam_oath) даже не проверяет содержимое файла парсингом, тупо копирует неизвестные данные "справа налево" с сохранением атрибутов файла?
    2) почему pam_oath имеет доступ к файлу /etc/shadow (да и вообще в /etc/) ?
    3) если бы подобное реализовал я, ну как минимум из под ограниченного пользователя подобное(службы) надо создавать.
    А так - похоже на лютый студенческий скрипто-костылинг.
     
     
  • 2.20, мяв (?), 01:17, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    1) даже, если б проверяла, что мешает пропихнуть файл в промежуток между проверкой и перемещением? ничего. довольно, к слову, попудю́
    2) потому что службы PAM'у нужен рут. он просто грузит .so-файлы модулей.
    3) похоже на лютое студенческое незнание матчасти!
     
     
  • 3.21, мяв (?), 01:18, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    тьфу, забыла дописать)
    1) ... довольно популярная ошибка. даже в ман'ах о ней пишут.
     
  • 3.26, Аноним (-), 02:08, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > 1) даже, если б проверяла, что мешает пропихнуть файл в промежуток между
    > проверкой и перемещением? ничего. довольно, к слову, попудю́

    Это называется TOCTOU если что. (Time Of Check VS Time Of Use). Но тут до этого не дошло и факап проще оказался.

     

  • 1.19, Аноним (19), 00:55, 05/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    самое забавное что за последний год я что-то не припомню чистой проьблемы с памятью, вечно то ресур не освободят какой то проверку не проведут то файл нулями забъют (привет синие экраны на винде во всем мире). А молятся все на раст... и плавать что это еще 1 компилятор нестабильный к тому же. Без настолько провереных десятилетиями статических анализаторов и готового парка библиотек.  
     
     
  • 2.22, мяв (?), 01:23, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    причем, единый компилятор.
    вместо того, что б написать стандарт и реализовать, они реалтзуют и описывают. но продвигают, как "стандарт".
    поттеринг так же делал с его uapi.
     
     
  • 3.23, Самый Лучший Гусь (?), 01:27, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так компилятор и есть стандарт просто реальзованый в настоящем коде. Куда лучше чем у С/С++
     
     
  • 4.25, Аноним (-), 01:54, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Так компилятор и есть стандарт просто реальзованый в настоящем коде. Куда лучше чем у С/С++

    Замечательный просто - когда самые базовые системные аспекты профачены даже в 2024, и на каждый такой факап телепают именно синтаксис ЯП и тулчейн. Обратно несовместимым способом.

     
  • 3.27, Аноним (-), 02:11, 05/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > поттеринг так же делал с его uapi.

    Что за uapi у Поттеринга? Вроде uapi это про ядро линуха и делается оно ядерщиками. Но в общем то официальный апи у ядра - вон те сисколы и проч, типа posix. Но есьт и хренова куча более внутренних ифейсов, и ессно - весьма изменчивых.

    Кстати Поттеринг и ко недавно все же устали кажется от факапов dbus'еров и кажется в настроении больше юзать внутренний ифейс, который они юзают когда dbus в ОС нету. Dbus все же с рядом тупняков. То что брокер после апдейта перезаутсить нельзя - это вообще лол. Но поттер в этом не виноват, системда как раз отлично перезапускает сам себя и состояние корректно сериализует-десериализует.

     

  • 1.24, Аноним (-), 01:53, 05/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > отредактировать файл /etc/shadow и записать в него новые
    > параметры входа для учётной записи root.

    - У нас дыра в безопасности!
    - Ну хоть что-то у нас в безопасности...

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру