Критическая уязвимость в nginx-ui: удалённое выполнение кода через /api/restore
Что случилось
В веб-интерфейсе nginx-ui для управления веб-сервером Nginx обнаружена критическая уязвимость CVE-2026-42238. Endpoint восстановления резервных копий POST /api/restore доступен без аутентификации в течение первых 10 минут после запуска процесса на свежих установках.
Атакующий загружает специальный архив, который перезаписывает файл конфигурации app.ini и базу данных SQLite. Поскольку атакующий контролирует восстановленный app.ini, он может внедрить произвольную команду ОС в настройку TestConfigCmd. После автоматического перезапуска nginx-ui для применения восстановленной конфигурации достаточно одного последующего HTTP-запроса — команда выполняется от имени пользователя, запустившего nginx-ui. В типовых развёртываниях Docker это пользователь root.
Уязвимость исправлена в версии 2.3.8.
Кого касается
Риск затрагивает только свежие установки nginx-ui версий ниже 2.3.8. Уязвимое окно — первые 10 минут после старта процесса — открывается только при первом запуске на новой инсталляции, а не при каждом рестарте.
Наибольшую опасность представляют VPS с публичным IP и открытым портом панели, где nginx-ui устанавливается впервые. Если панель доступна из интернета, атакующий может успеть проэксплуатировать уязвимость до завершения 10-минутного периода. Уже работающие инсталляции, перезапущенные после обновления, не подвержены.
Что делать
Обновление обязательно для всех инсталляций:
- Обновите nginx-ui до версии 2.3.8. При ручной установке: скачайте новый бинарный файл с GitHub-релизов проекта и замените исполняемый файл. При использовании Docker: обновите образ и пересоздайте контейнер.
- Проверьте версию после обновления в веб-интерфейсе или командой
nginx-ui -v. - Если обновление невозможно немедленно, закройте сетевой доступ к порту nginx-ui файрволом — разрешите подключения только с доверенных IP-адресов.
- Дополнительно спрячьте интерфейс за обратным прокси с базовой аутентификацией или VPN-туннелем.
- Проведите аудит: проверьте логи nginx-ui на наличие POST-запросов к
/api/restoreв периоды первичной установки сервиса.