В популярном сервере tac_plus обнаружена критическая уязвимость, которая даёт возможность удалённо выполнить код задолго до проверки логина и пароля. Сервер обслуживает протокол TACACS+ и отвечает за централизованную проверку доступа администраторов к маршрутизаторам, коммутаторам и другому сетевому оборудованию. В стандартной конфигурации tac_plus запускается с правами root. Исправление уже вышло, но архивный форк Facebook остаётся уязвимым.
Проблема находится в старом коде, восходящем к Developer's Kit Cisco 1990-х годов. TACACS+ работает поверх TCP, обычно на порту 49, и объединяет три функции: аутентификацию администратора, определение разрешённых действий и логирование команд. Компрометация такого узла особенно опасна, потому что через него может проходить управление множеством сетевых устройств.
Ошибка относится к классу форматных строк. Сервер помещает полученное от клиента поле port в сообщение об ошибке и передаёт эту строку функции логирования как управляющий формат вместо обычных данных. Специальные последовательности во входных данных могут заставить процесс читать или изменять память и выполнить произвольный код.
Для попадания в уязвимый участок требуется два TACACS+ пакета. Первый — корректный запрос AUTHEN/START, который сохраняет контролируемые данные. Второй — намеренно повреждённый пакет, который переводит сервер на ошибочный путь обработки. Проверка имени пользователя и пароля к этому моменту ещё не проводилась.
Исследователи подчёркивают: доступ к TCP/49 не гарантирует автоматический взлом. Если между клиентом и сервером настроен длинный случайный общий секрет, злоумышленнику требуется получить или подобрать его. При отсутствии эффективного секрета или при слабом ключе уязвимость оценивается в 9,8 балла CVSS, при длинном случайном ключе — в 8,1 балла.
Слабая криптографическая защита старого TACACS+ усугубляет ситуацию. Сервер способен вернуть до аутентификации заранее предсказуемое сообщение, преобразованное с помощью общего секрета. Получив один такой ответ, атакующий может проверять варианты слабого ключа локально, не отправляя каждый пароль серверу. В декабре 2025 года IETF определила TLS 1.3 как современный транспорт для протокола, отказавшись от старой схемы обфускации.
Исследователи также проверили сценарий, при котором вредоносные данные передаются TACACS+ серверу через доверенное сетевое устройство. Они смогли воспроизвести поведение в лаборатории с чрезмерно длинным именем пользователя, но не проверяли это на серийном оборудовании разных производителей. Возможность атаковать сервер через доступную из интернета форму входа зависит от конкретной реализации TACACS+ клиента.
Уязвимый код присутствует в версиях Shrubbery Networks tac_plus вплоть до F4.0.4.31. 21 сентября разработчики выпустили F4.0.4.32 с исправлением обеих найденных ошибок форматной строки. Форк Facebook F4.0.4.28-7fb содержит основной уязвимый участок, но его репозиторий был архивирован в августе 2025 года и обновления не ожидаются. Существует также неизвестное число производных сборок и встроенных версий, основанных на старом коде Cisco.
Cisco PSIRT сообщил, что современные продукты Cisco не используют уязвимые версии кода и не затронуты этой проблемой. Публичных подтверждений эксплуатации новой уязвимости в реальных атаках нет.
Интерес злоумышленников к инфраструктуре TACACS+ давно вышел за пределы теории. Операторы Salt Typhoon перехватывали TACACS+ трафик на скомпрометированных маршрутизаторах, извлекали общие секреты из конфигураций и меняли параметры AAA для перемещения по сетям. Эти атаки не использовали новую уязвимость tac_plus, но показывают ценность централизованных систем аутентификации для кибершпионажа.
В августе исследователи также описали кампанию Fire Ant, участники которой проникали непосредственно в процессы tac_plus. Вредоносный набор TacTap внедрял библиотеку в сервер, перехватывал сеансы аутентификации и собирал учётные данные администраторов.
Администраторам Shrubbery tac_plus рекомендуется перейти на F4.0.4.32. Для архивного форка Facebook и других производных сборок потребуется самостоятельное исправление или переход на поддерживаемую реализацию. До обновления следует разрешить доступ к TCP/49 только доверенным адресам сетевого оборудования и использовать длинный случайный уникальный общий секрет. В долгосрочной перспективе безопаснее переходить на TACACS+ поверх TLS 1.3, поскольку старый механизм защиты трафика больше не соответствует современным требованиям безопасности.
