The OpenNET Project / Index page

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

Уязвимость в pam-u2f, позволяющая обойти аутентификацию на базе аппаратного токена

17.01.2025 15:52

Разработчики проекта openSUSE выявили уязвимость (CVE-2025-23013) в PAM-модуле pam-u2f, применяемом при аутентификации через токены YubiKey, Yubico Security Key, YubiHSM и другие FIDO-устройства, поддерживающие протокол U2F (Universal 2nd Factor). Уязвимость позволяет пользователю, имеющему непривилегированный локальный доступ к системе, в определённых конфигурациях PAM пройти аутентификацию без вставки аппаратного токена. На практике модуль pam-u2f как правило подключается для двухфакторной или беспарольной аутентификации с использованием токенов (например, для подтверждения полномочий выполнения команд через утилиты su и sudo).

Уязвимость вызвана некорректным возвращением функцией pam_sm_authenticate() значения PAM_IGNORE. Данное значение возвращается в случае ошибки выполнения вызовов gethostname(), pam_modutil_drop_priv(), pam_modutil_regain_priv() или resolve_authfile_path(), а также при проблемах выделения памяти в strdup() или calloc(). Проблема в том, что библиотека libpam, получив от PAM-модуля результат с кодом PAM_IGNORE, вернёт итоговый код PAM_SUCCESS, обозначающий успешное прохождение аутентификации, если в цепочке проверок какой-то другой PAM-модуль вернул успешный результат аутентификации.

При использовании модуля pam-u2f в связке с pam_unix для двухфакторной аутентификации, уязвимость позволяет успешно пройти аутентификацию в случае успешной проверки пароля, без подтверждения второго фактора. При выполнении беспарольной аутентификации по аппаратному токену pam-u2f может применяться в связке с PAM-модулем pam_faillock, ограничивающим число попыток аутентификации и возвращающим PAM_SUCCESS, если лимит не исчерпан.

В качестве примера атаки называется обход проверки токена при выполнении локальным пользователем привилегированных команд, используя утилиты sudo и su. Во время запуска этих команд атакующий может создать условия для возвращения модулем pam-u2f значения PAM_IGNORE, например, через исчерпание доступной памяти. Проблема устранена в версии pam-u2f 1.3.1.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Уязвимость в pam_oath, позволяющая получить права root в системе
  3. OpenNews: Локальная root-уязвимость в pam-python
  4. OpenNews: PAM-модуль для аутентификации через распознавание лица пользователя
  5. OpenNews: Атака EUCLEAK, позволяющая клонировать YubiKey 5 и другие ключи на чипах Infineon
  6. OpenNews: Уязвимости в PCP и Nix, позволяющие поднять привилегии в системе
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62575-pam
Ключевые слова: pam, pam-u2f
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (11) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 16:32, 17/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не опасно, можно не напрягаться.
     
     
  • 2.4, Аноним (4), 16:45, 17/01/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Отверстием могут воспользоваться только те чьё это отверстие.
     
     
  • 3.8, нах. (?), 16:50, 17/01/2025 [^] [^^] [^^^] [ответить]  
  • +/
    нет, любой кто подсмотрел твой пароль.

    Именно для предотвращения подобных атак мы и используем токен.

     
  • 3.18, Аноним (18), 19:57, 17/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это смотря в какой компании окажешься ;)
     

  • 1.7, Аноним (-), 16:50, 17/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хм... я правильно понимаю, что, судя по коммиту


    debug_dbg(cfg, "Unable to allocate memory");
    + retval = PAM_BUF_ERR;
    goto done;


    они тупо игнорили ситуацию "не смог аллоцировать память" ?
     
     
  • 2.10, нах. (?), 16:55, 17/01/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    не игнорили, просто возвращали код "нишмагла" не уточняя почему. Им показалось - логично, это ведь не ошибка проверки токена, этодругое. А там в конфиге "suffucient" вместо required (потому что иначе без 2fa вообще не залогинишься), и любой модуль этажом выше мог выдать ок.

    Т.е. ломались именно 2fa, а там где вообще не принято было использовать пароли - все оставалось безопастно.

     

  • 1.12, Ivan_83 (ok), 16:56, 17/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > PAM_IGNORE. Данное значение возвращается в случае ошибки выполнения вызовов gethostname()

    эээ это же достаточно сеть не надолго отключить.
    Зачётно.

     
     
  • 2.17, нах. (?), 18:48, 17/01/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> PAM_IGNORE. Данное значение возвращается в случае ошибки выполнения вызовов gethostname()
    > эээ это же достаточно сеть не надолго отключить.

    да, мне тоже лень в код лазить, но ощущение подсказывает что должно сработать.
    где, где супергерои из nixos, которые заявят что вот у них-то все супернадежно?!

    > Зачётно.

    ну, в принципе, нехватку памяти устроить тоже не надо сверхспособностей.

     

  • 1.16, Аноним (-), 17:18, 17/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Уязвимость позволяет пользователю, имеющему непривилегированный локальный доступ к системе,
    > в определённых конфигурациях PAM пройти аутентификацию без вставки аппаратного токена

    На третий день Зоркий Глаз заметил что втыкать токен для аутентификации было не обязательно :))

     
  • 1.20, Аноним (20), 01:35, 18/01/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PAM — отвратительная вещь.
     

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



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

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