--- type: issue id: "0052" status: done created: 2026-08-14 milestone: M5 priority: medium area: infrastructure related: [docs/issues/0051-cve-remediation-pass.md] --- # Update-Kadenz festlegen & `:latest`-Tags beseitigen ## Problem / Motivation Regelmäßige Komponenten-Updates sind der wirksamste CVE-Schutz (#0051), passieren bisher aber nur ad-hoc. Zudem ist `coturn:latest` **unpinned** — nicht reproduzierbar und nicht sauber scanbar — und `busybox:1.28` ist veraltet. ## Acceptance - **`coturn`** auf eine gepinnte, aktuelle Version; **`busybox`** aktualisiert; **kein `:latest`-Tag** mehr im gitops-Repo. - **Update-Kadenz** festgelegt (Richtwert monatlich + ad-hoc bei CRITICAL-CVE), dokumentiert auf `/betrieb/upgrades`. - Fork-Updates (ThreadNet-Web, threadnet-call) folgen der Portier-Checkliste (`axion1337-fork.md`). ## Notes Update-Prozess: `/betrieb/upgrades`. Bei DB-Migrationen (Authentik, Wiki.js) vorher Backup (die Backup-Jobs stehen). Rollback ist trivial (GitOps: Commit zurück). ## Erledigt 2026-08-15 **`:latest` ist aus dem Repo verschwunden** (gitops `b4650dc`) — `grep -rE '^\s*image:.*:latest' apps/` findet nichts mehr. ### Der Befund, der die Dringlichkeit belegt Im Cluster lief **coturn 4.10.0**, während `:latest` auf der Registry längst **4.17.2** zeigte. Mit `imagePullPolicy: IfNotPresent` hält der Node das einmal gezogene Image fest — niemand konnte wissen, was tatsächlich lief, und ein Reschedule auf einen frischen Node wäre still über **sieben Minor-Versionen** gesprungen. Nebenwirkung: der Trivy-Report maß gegen ein bewegliches Ziel, seine „12 CRITICAL für coturn:latest" beschrieben nicht zwingend das laufende Image. ### Umgesetzt | Änderung | von | auf | |---|---|---| | coturn | `coturn/coturn:latest` (real 4.10.0) | **`4.17.2`** | | busybox (init-Container) | `1.28` (2018) | **`1.36`** — die im Repo bereits anderswo genutzte Version | Vorher geprüft: Der Tag existiert (Registry-Abfrage — `4.10.0` gibt es dort gar nicht mehr, ein Pin darauf wäre fehlgeschlagen), und die Konfiguration nutzt ausschließlich langlebige Kern-Optionen (`realm`, `use-auth-secret`, `relay-ip`, `cert`/`pkey`), von denen keine im Versionsbereich entfallen ist. ### Verifiziert - Pod läuft, Listener auf 3478 und 5349 (TLS/TCP), keine Fehler im Log. - `turnserver --version` im Container: **4.17.2**. - **Funktionstest von außen:** STUN-Binding-Request an `49.13.132.245:3478` → *Binding Success*, und der Server meldet die externe Adresse des Anfragenden korrekt zurück. Der Relay-Pfad für Anrufe funktioniert also nachweislich, nicht nur der Prozess. ⚠️ Der Wechsel bedeutete einen **coturn-Neustart**; laufende Relay-Verbindungen wurden dabei getrennt. Bei künftigen TURN-Upgrades einplanen. ### Kadenz Der zweite Teil des Issues (Update-Kadenz) steht bereits im Betriebs-Wiki unter `/betrieb/upgrades`, Abschnitt „Kadenz & CVE-Bezug": monatlich als Richtwert, ad-hoc bei CRITICAL-CVE, Fork-Updates über die Portier-Checkliste. **Erwartete Nebenwirkung für #0051:** Der nächste Trivy-Lauf sollte für coturn deutlich weniger CRITICALs zeigen — und erstmals gegen ein festes Ziel messen.