**Версия:** pve-access-control 7.4.3-alt5 (p10), 7.4.3-alt3 (c10f2) **CVE-2023-54391**, CVSS 9.3 CRITICAL, CWE-304 **Адвайзори вендора:** PSA-2026-00043-1 от 2026-09-01 — https://forum.proxmox.com/threads/proxmox-virtual-environment-security-advisories.149331/page-4#post-867929 ## Суть Эндпоинт логина `POST /api2/json/access/ticket` принимает параметр `tfa-challenge`. Его наличие отключает проверку пароля, а само значение не валидируется для пользователей без настроенного второго фактора. Один запрос без учётных данных возвращает полноценный тикет `root@pam` с полной картой прав. Далее доступен весь API, включая терминал на ноде. Эксплуатируется в дикой природе, PoC публичный. ## Где `/usr/share/perl5/PVE/AccessControl.pm`, нумерация по 7.4.3-alt5. Файл совпадает с апстримным 7.4.3, ALT-патчей в этом коде нет. Строка 2021, `user_get_tfa` — ранний выход: ```perl if (!$keys) { return if !$realm_tfa; die "missing required 2nd keys\n"; } ``` Для пользователя с пустым `keys` в `user.cfg` (по умолчанию `root@pam` и все LDAP/AD-синхронизированные) в реалме без `tfa` возвращает `undef`. Строка 793, `authenticate_2nd_new_do` — `if (!defined($tfa_cfg)) { return undef; }`, выход до строки 839, где стоит `verify_ticket($tfa_challenge, 0, $username)`. Челлендж не проверяется. Строка 739, `authenticate_user` — ветка `if ($tfa_challenge)` возвращает результат до `$plugin->authenticate_user()` на строке 745, то есть пароль не проверяется. ## Апстрим Исправлено в libpve-access-control 8.0.4 (2023-07-20), коммит `032e7d6d441f89a48cadfd7f47e957c8a561c022`. Блок `if (!$keys)` удалён из `user_get_tfa`, проверка перенесена в `authenticate_2nd_new_do`. Тогда это прошло как функциональный багфикс, поэтому бэкпорта в ветку 7 не было. Прямой cherry-pick может не встать: в alt3 сделан `revert 'use TFA authentication api v2'` (#48619), затронувший эту же подсистему. В файле остались трёхаргументный `user_get_tfa($username, $realm, $new_format)`, ветвление `if ($new_format)` и `authenticate_2nd_old` — апстрим удалил их в 8.x. ## Патч Stop-gap из адвайзори — проверка в начало ветки второго фактора, до всех ранних выходов: ```diff if ($tfa_challenge) { + verify_ticket($tfa_challenge, 0, $username); # This is the 2nd factor, use the password for the OTP response. my $tfa_challenge = authenticate_2nd_new($username, $realm, $password, $tfa_challenge); ``` Вызов `verify_ticket($tfa_challenge, 0, $username)` в файле уже есть на строках 839 и 885, сигнатура `prototype($;$$)` третий аргумент поддерживает — на 2FA-логины не влияет. ## Проверка затронутости ```bash grep -c 'verify_ticket($tfa_challenge, 0, $username)' /usr/share/perl5/PVE/AccessControl.pm # 2 = уязвимо, 3 = исправлено ``` ## Просьба 1. Выпустить исправленный пакет для p10 и c10f2. 2. Завести errata на packages.altlinux.org.
Created attachment 22159 [details] Stop-gap из PSA-2026-00043-1: валидация tfa-challenge перед ранними выходами
Created attachment 22160 [details] AccessControl.pm из pve-access-control-7.4.3-alt5
Перевешиваю с qa-team на ментейнера (в p10 пакет фактически ведёт darisishe@: 7.4.3-alt4/alt5). Проверил приложенный stop-gap патч (attachment 22159 [details]): он корректный — дословно совпадает с официальным из PSA-2026-00043-1 (вызов verify_ticket($tfa_challenge, 0, $username) перед ранними выходами в ветке tfa-challenge). Готового пакетного фикса для ветки 7.x у вендора нет и не будет (PVE 7 EOL), фикс только в libpve-access-control 8.0.4+, поэтому для p10 и c10f2 правильный путь — пересборка именно с этим stop-gap, а не cherry-pick апстримного 8.0.4 (мешает revert TFA api v2 из alt3). После применения контроль: grep -c 'verify_ticket($tfa_challenge, 0, $username)' /usr/share/perl5/PVE/AccessControl.pm должен выдать 3. Sisyphus/p11 (9.1.1) не уязвимы.
Добрый день я правильно понял что вы возьмете в работу? надо чуть подождать пока фикс будет?
не уверен - p10 EOL и зависит от ментейнера
Результат проверки актуальности Состояние: CVE-2023-54391: обход аутентификации в pve-access-control-7.4.3-alt5 (p10). Sisyphus и p11 (9.1.1) не уязвимы. Stop-gap патч из PSA-2026-00043-1 для ветки 7.x ещё не выпущен. Рекомендация: оставить открытым в Branch p10.
pve-access-control-7.4.3-alt6 -> p10: Tue Oct 27 2026 Sergey Konev <darisishe@altlinux> 7.4.3-alt6 - CVE-2023-54391: validate TFA challenge before authentication (Closes: #60480)