Вышел Gately v0.6.1
30 октября 2026 г.
Эта версия содержит исправление безопасности. Всем, у кого включено управление Docker и используются учётные записи или API-токены только для чтения, рекомендуется обновиться как можно скорее. Также закрыты #35, #37, #38 и #40, и добавлена политика безопасности.
Скачать v0.6.1 · GitHub Release · Бюллетень безопасности GHSA-m6h7-mm5r-r53q
Исправление безопасности: доступ к Docker только для чтения раскрывал секреты контейнеров
В v0.6.0.4 и более ранних версиях учётные записи только для чтения и API-токены с одним лишь правом docker:read могли через GET /api/docker/containers/{id} читать в открытом виде переменные окружения, Command, Entrypoint и аргументы запуска контейнера, а список процессов показывал полные командные строки. Так обычные пароли баз данных и API-ключи оказывались доступны идентичностям только для чтения. Благодарим Yousef Alturki (@YousefAlturki) за ответственное сообщение.
После исправления:
- когда контейнер просматривает идентичность без права записи в Docker, у переменных окружения видны только имена, а значения, Command, Entrypoint, аргументы запуска и аргументы команд в списке процессов показываются как
********; переменные окружения, Cmd, Entrypoint и команды истории сборки в сведениях об образе скрываются так же; - открытые значения теперь отдаёт
GET /api/docker/containers/{id}/secrets, для которого нужно правоdocker:write. Форма редактирования загружает их для администраторов автоматически, а поля, отправленные с заполнителем, сохраняют прежнее значение; - имя контейнера или префикс ID в запросе сначала разрешается в полный ID, поэтому защиту контейнера, в котором работает сам Gately, больше нельзя обойти по имени контейнера. При редактировании и пересоздании во время обновления старый контейнер всегда обрабатывается по полному ID. Это исправляет ошибку, когда при вызове по имени этап очистки удалял новый контейнер, а после сбоя откат был невозможен. Запуск, остановка и удаление контейнера во время пересоздания возвращают 409.
После обновления проверьте, не передавались ли API-токены только для чтения недоверенным сторонам, и при необходимости смените секреты в контейнерах. Как сообщить об уязвимости, описано в SECURITY.md: через закрытые отчёты об уязвимостях GitHub или по электронной почте.
Сеть для выпуска сертификатов
У сертификатов появился параметр «Сеть» (#35): при значении «Только IPv4» или «Только IPv6» обращение к CA, вызовы API DNS-провайдера и проверка вступления TXT-записей в силу используют только это семейство адресов. Если у хоста есть IPv6-адрес, но IPv6 фактически не работает, проверка распространения раньше завершалась по тайм-ауту при запросе к авторитетным DNS-серверам, и выпуск не удавался; достаточно выбрать «Только IPv4». При работе через прокси, например HTTPS_PROXY, это ограничение не распространяется на подключение к самому прокси. Подробнее в разделе SSL-сертификаты · Сеть выпуска.
Защита собственного контейнера Gately
Обновление, массовое обновление и пересоздание после редактирования на странице Docker, а также up или удаление Compose-проекта, к которому относится Gately, сначала останавливают старый контейнер. Процесс Gately завершался вместе с ним, пересоздание не доходило до конца, и контейнер оставался остановленным (#38). Теперь такие операции над собственным контейнером отклоняются: кнопки неактивны и подсказывают обновить его на хосте, а массовое обновление его пропускает. При перезапуске Compose-проекта, к которому относится Gately, собственный контейнер перезапускается последним.
Уведомления и журналы следуют языку интерфейса
Если язык сервера — «Как в системе», Gately по очереди использует язык из GATELY_LANG и LANG. В Docker, fnOS и OpenWrt обычно нет ни той, ни другой переменной, поэтому уведомления приходили на английском (#40). Теперь они следуют языку интерфейса при последнем входе администратора или последнем переключении в верхней панели; входы учётных записей только для чтения его не меняют. «Источник» уведомления переводится, если это имя, сгенерированное программой, а введённые пользователями имена задач остаются как есть. Английские журналы с префиксами вроде [warn] [auth] больше не смешивают китайский и английский.
Настройка сайта по умолчанию
Если у слушателя Веб-служб ещё не настроен сайт по умолчанию, на его карточке появляется кнопка «Настроить сайт по умолчанию» (#37), чтобы сразу задать обработку запросов, не совпавших ни с одним доменом.
Об обновлении
- Docker: скачайте новый образ и пересоздайте контейнер. OpenWrt: установите новый
.apk/.ipkповерх старого, а для страницы LuCI установите ещё иluci-app-gatelyтой же версии. fnOS: вручную установите новый.fpkв Центре приложений. Остальные установки можно обновить онлайн в разделе «Системные настройки».