Repository navigation
fix(traefik): pin 3.7.16 and audit the Traefik, Postgres and Redis images - #123
Merged
Merged
Conversation
…ages Что: - Закреплённая версия Traefik 3.7.14 → 3.7.16: PINNED_VERSIONS, TRAEFIK_IMAGE в install-agenthits.sh, docs/server-components-update.md, docs/server-hardening.md, docs/agenthits-install.md. TRAEFIK_VERSION в traefik-setup.ts берётся из PINNED_VERSIONS. - image-audit.yml каждый понедельник сканирует не только образ панели, но и закреплённые traefik, postgres и redis, каждый отдельной задачей. component-versions-sync.test.ts сверяет их теги с PINNED_VERSIONS. - В .trivyignore.yaml добавлена CVE-2026-116587 для usr/local/bin/traefik, срок до 2026-11-27. - Для postgres:18.6 до 2026-11-27 пропускается usr/local/bin/gosu. В нём 26 исправимых находок Go stdlib (gosu 1.19 на Go 1.24.6), а файл игнорирования требует запись на каждую. gosu нужен только при старте контейнера, gosu 1.20 вышел 2026-10-25. - CLAUDE.md и docs/server-components-update.md упоминают аудит этих образов. Зачем: - Traefik — единственный компонент серверов, открытый в интернет (порт 443). Trivy нашёл в traefik:v3.7.14 6 исправимых high: go-jose, golang.org/x/net, Go stdlib. В 3.7.16 остаётся одна: go-jose 4.1.5, исправление в 4.1.6, новее релиза нет. - Образы Traefik, Postgres и Redis до сих пор не проверялись. Риски: - С 3.7.15 Traefik отклоняет CONNECT и по HTTP/2 и HTTP/3, с ответом 501. По HTTP/1 он отклонял его и раньше, с 3.7.9. Прямой прокси через HTTP-роутер Traefik так работать не будет, его нужно вести через TCP-роутер. Изменения Gateway API к Swarm не относятся. - На серверы новая версия попадает только через Components → Update. Это короткий перезапуск Traefik: порт 443 недоступен, пока стартует новый контейнер. - Аудит упадёт 2026-11-27, если к этому времени не выйдут исправленные релизы. Так задумано. Проверки: - Команды и результаты: Trivy 0.76.1 (remote) — traefik:v3.7.14 6 high, v3.7.16 1 high, postgres:18.6 1 C + 25 H только в gosu, redis:8.10.2 без исправимых. Шаг сканирования из image-audit.yml, запущенный локально, — traefik, postgres и redis exit 0; postgres с прошедшей датой exit 1. vitest по 55 файлам, связанным с Traefik и закреплёнными версиями, — 1164 из 1164. biome — без замечаний. actionlint — без замечаний. bash -n install-agenthits.sh — ок. - Ограничения: обновление Traefik кнопкой Components → Update на живом сервере не проверялось. What: - The pinned Traefik goes 3.7.14 → 3.7.16: PINNED_VERSIONS, TRAEFIK_IMAGE in install-agenthits.sh, docs/server-components-update.md, docs/server-hardening.md, docs/agenthits-install.md. TRAEFIK_VERSION in traefik-setup.ts comes from PINNED_VERSIONS. - image-audit.yml now scans, every Monday, the pinned traefik, postgres and redis images as well as the panel image, each in its own job. component-versions-sync.test.ts checks their tags against PINNED_VERSIONS. - .trivyignore.yaml gets CVE-2026-116587 for usr/local/bin/traefik, expiring 2026-11-27. - For postgres:18.6, usr/local/bin/gosu is skipped until 2026-11-27. It carries 26 fixable Go stdlib findings (gosu 1.19 on Go 1.24.6), and the ignore file needs an entry for each. gosu only runs when the container starts; gosu 1.20 came out on 2026-10-25. - CLAUDE.md and docs/server-components-update.md mention the audit of these images. Why: - Traefik is the only server component exposed to the internet (port 443). Trivy found 6 fixable high in traefik:v3.7.14: go-jose, golang.org/x/net, Go stdlib. One remains in 3.7.16: go-jose 4.1.5, fixed in 4.1.6, with no newer release. - The Traefik, Postgres and Redis images were not checked before. Risks: - Since 3.7.15 Traefik rejects CONNECT over HTTP/2 and HTTP/3 as well, with 501. Over HTTP/1 it already did since 3.7.9. A forward proxy behind a Traefik HTTP router will not work this way; it has to go through a TCP router. The Gateway API changes do not apply to Swarm. - Servers get the new version only through Components → Update. That briefly restarts Traefik: port 443 is unavailable while the new container starts. - The audit fails on 2026-11-27 if no fixed releases have come out by then. That is intended. Checks: - Commands and results: Trivy 0.76.1 (remote) — traefik:v3.7.14 6 high, v3.7.16 1 high, postgres:18.6 1 C + 25 H only in gosu, redis:8.10.2 no fixable. The scan step of image-audit.yml run locally — traefik, postgres and redis exit 0; postgres with a past date exit 1. vitest on the 55 files about Traefik and pinned versions — 1164 of 1164. biome — clean. actionlint — clean. bash -n install-agenthits.sh — ok. - Limitations: the Traefik update through Components → Update was not tried on a live server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Traefik — единственный компонент серверов, который открыт в интернет (порт 443). Trivy нашёл в закреплённой версии
traefik:v3.7.146 серьёзных (high) уязвимостей, для которых вышли исправления: в go-jose, golang.org/x/net и Go stdlib. Этот PR поднимает Traefik до 3.7.16 и добавляет в еженедельный аудит образы Traefik, Postgres и Redis: до сих пор их никто не проверял.Что изменилось
PINNED_VERSIONS;install-agenthits.sh;image-audit.ymlкаждый понедельник сканирует не только образ панели, но и закреплённыеtraefik,postgresиredis, каждый отдельной задачей. Тестcomponent-versions-sync.test.tsследит, чтобы их теги совпадали сPINNED_VERSIONS..trivyignore.yamlдо 2026-11-27.postgres:18.6все 26 исправимых находок сидят вgosu1.19 (собран на Go 1.24.6).gosuнужен только при запуске контейнера, чтобы переключиться на пользователя postgres. В файл исключений пришлось бы вписать каждую из 26 находок, поэтому файлusr/local/bin/gosuпропускается до 2026-11-27.gosu1.20 вышел 25 октября; когда образ Postgres его подхватит, исключение станет не нужно.Что это значит для серверов
501на любой запросCONNECT, в том числе по HTTP/2 и HTTP/3. По HTTP/1 он отклонял его и раньше, с 3.7.9. Прямой прокси за HTTP-роутером Traefik так работать не будет, его нужно вести через TCP-роутер;Проверки
traefik:v3.7.14— 6 high;traefik:v3.7.16— 1 high, в исключениях;postgres:18.6— 1 critical и 25 high, все вgosu;redis:8.10.2— ни одной исправимой.image-audit.yml, запущенный локально той же командой:image-audit.ymlна ветке этого PR (run 40744408627): все четыре задачи зелёные — панель (agenthits-devпосле fix(image): drop unused binaries, bump bundled tools, scan the image with Trivy #118), Traefik, Postgres и Redis.bash -n install-agenthits.shбез замечаний.🤖 Generated with Claude Code