Skip to content

fix(traefik): pin 3.7.16 and audit the Traefik, Postgres and Redis images - #123

Merged
agentHits merged 1 commit into
AgentHits-Devfrom
fix/traefik-3-7-16
Oct 28, 2026
Merged

agentHits merged 1 commit into
AgentHits-Devfrom
fix/traefik-3-7-16

Conversation

@agentHits

@agentHits agentHits commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Traefik — единственный компонент серверов, который открыт в интернет (порт 443). Trivy нашёл в закреплённой версии traefik:v3.7.14 6 серьёзных (high) уязвимостей, для которых вышли исправления: в go-jose, golang.org/x/net и Go stdlib. Этот PR поднимает Traefik до 3.7.16 и добавляет в еженедельный аудит образы Traefik, Postgres и Redis: до сих пор их никто не проверял.

Что изменилось

  • Traefik 3.7.14 → 3.7.16. Новая версия используется везде, где форк ставит или обновляет Traefik:
    • PINNED_VERSIONS;
    • установщик install-agenthits.sh;
    • значение по умолчанию в панели;
    • документация.
  • Аудит образов. image-audit.yml каждый понедельник сканирует не только образ панели, но и закреплённые traefik, postgres и redis, каждый отдельной задачей. Тест component-versions-sync.test.ts следит, чтобы их теги совпадали с PINNED_VERSIONS.
  • Исключения.
    • В Traefik 3.7.16 остаётся одна уязвимость: CVE-2026-116587, отказ в обслуживании при разборе JWK в go-jose 4.1.5. Её исправили в go-jose 4.1.6, а более нового Traefik пока нет. Она внесена в .trivyignore.yaml до 2026-11-27.
    • В postgres:18.6 все 26 исправимых находок сидят в gosu 1.19 (собран на Go 1.24.6). gosu нужен только при запуске контейнера, чтобы переключиться на пользователя postgres. В файл исключений пришлось бы вписать каждую из 26 находок, поэтому файл usr/local/bin/gosu пропускается до 2026-11-27. gosu 1.20 вышел 25 октября; когда образ Postgres его подхватит, исключение станет не нужно.
    • После этой даты аудит снова упадёт и напомнит проверить новые релизы.
  • Без исправлений. Находки в пакетах Debian внутри Postgres и Redis исправлений не имеют, поэтому аудит их не учитывает, как и в образе панели.

Что это значит для серверов

  • Сами серверы не обновятся. Traefik 3.7.16 попадёт на сервер только по кнопке Components → Update на карточке сервера. Она коротко перезапускает Traefik: порт 443 недоступен, пока стартует новый контейнер. Если новый Traefik не поднимется за 10 секунд, кнопка вернёт старый.
  • Что меняется в поведении Traefik (по руководству по миграции):
    • с 3.7.15 Traefik отвечает 501 на любой запрос CONNECT, в том числе по HTTP/2 и HTTP/3. По HTTP/1 он отклонял его и раньше, с 3.7.9. Прямой прокси за HTTP-роутером Traefik так работать не будет, его нужно вести через TCP-роутер;
    • изменения провайдера Kubernetes Gateway API к Swarm не относятся.
  • Сертификаты по-прежнему получаются только через порт 443 (tlsChallenge), порт 80 не открывается.

Проверки

  • Trivy 0.76.1:
    • 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, запущенный локально той же командой:
    • Traefik, Postgres и Redis проходят;
    • с прошедшей датой исключения проверка Postgres падает, то есть напоминание сработает.
  • Ручной запуск 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.
  • vitest по 55 файлам, связанным с Traefik и закреплёнными версиями: 1164 из 1164. Biome, actionlint и bash -n install-agenthits.sh без замечаний.
  • Не проверено: обновление Traefik кнопкой Components → Update на живом сервере.

🤖 Generated with Claude Code

…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>
@agentHits
agentHits merged commit 22b8a0b into AgentHits-Dev Oct 28, 2026
11 checks passed
@agentHits
agentHits deleted the fix/traefik-3-7-16 branch October 29, 2026 00:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant