docs: Gate 1 for #0051 — the backlog is three piles, not one

Now that the pipeline sees the whole estate, the numbers in the issue are
obsolete and the work decomposes. A hundred and fifteen critical findings in
running images have a fix version and are an update exercise. Sixty-eight have
none, concentrated on eight images, and each needs a decision with an expiry
rather than a patch. Sixty-two sit on three build artefacts that run nowhere and
are almost entirely unfixable — for those, remediation is the wrong answer; they
belong out of the registry or out of the target set.

Concentration matters for scoping: forty-one running images carry critical
findings, but nineteen of them carry eighty percent.

The pass is deliberately critical-first. Twenty-six hundred high findings in
running images are a category, not an undertaking, and saying so belongs in the
closeout rather than in a footnote.
This commit is contained in:
Thore Cimbal
2026-08-21 12:00:00 +00:00
parent 5027caf2b5
commit 24ae5b9d2b
3 changed files with 125 additions and 5 deletions
+5 -3
View File
@@ -58,7 +58,7 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
| Issue | Priorität | Status | Title |
|---|---|---|---|
| [0051](docs/issues/0051-cve-remediation-pass.md) | high | open | CVE-Remediation-Pass: Schwachstellen-Report abarbeiten |
| [0051](docs/issues/0051-cve-remediation-pass.md) | high | in-progress | CVE-Remediation-Pass: Schwachstellen-Report abarbeiten |
| [0065](docs/issues/0065-gitops-25-k3s-api-security-hardening.md) | high | open | K3s API security hardening |
| [0058](docs/issues/0058-gitops-14-web-application-firewall-waf.md) | medium | open | Web Application Firewall (WAF) |
| [0059](docs/issues/0059-gitops-16-pod-security-admission-restricted.md) | medium | open | Pod Security Admission (Restricted) |
@@ -82,9 +82,11 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
| [0072](docs/issues/0072-gitops-34-dsgvo-datenschutz-compliance-konkretisieren.md) | low | open | DSGVO/Datenschutz-Compliance konkretisieren |
## Active design docs (0)
## Active design docs (1)
_none active_
| Design | Gate | Title |
|---|---|---|
| [2026-08-21-cve-remediation](docs/design/2026-08-21-cve-remediation.md) | gate-1 | Design: Den CVE-Bestand abarbeiten (#0051) |
## ADRs (27)
+118
View File
@@ -0,0 +1,118 @@
---
type: design
status: gate-1
date: 2026-08-21
size: L
related:
- "docs/issues/0051-cve-remediation-pass.md"
- "docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md"
- "docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md"
---
# Design: Den CVE-Bestand abarbeiten (#0051)
## Gate 1 — Product
### Problem
Seit dem 2026-08-21 sieht die Pipeline den vollen Bestand (#0106, 100 % Deckung
statt 52 %). Damit ist zum ersten Mal messbar, wie groß der Rückstand wirklich
ist — und die Zahlen im Issue, die auf 29 Images beruhten, sind überholt.
**Gemessen am 2026-08-21 über 56 Ziele** (Einzelbefunde; MEDIUM/LOW führt der
Exporter bewusst nur als Zähler, nicht als Serien):
| | CRITICAL | davon mit Fix-Version | HIGH |
|---|---|---|---|
| **im Betrieb** (51 Ziele) | **183** | **115** (63 %) | 2688 |
| **nur in der Registry** (3 Ziele) | **62** | **2** (3 %) | 760 |
| **gesamt** | **245** | 117 (47 %) | 3448 |
**Für wen.** Für den Betreiber, der wissen muss, ob eine gemeldete Lücke etwas
bedeutet — und für den, der sie schließen soll, ohne 3693 Zeilen zu lesen.
### ⚠️ Der Bestand zerfällt in drei Haufen, die verschiedene Arbeit sind
Das ist der eigentliche Ertrag der Ist-Bewertung: „Remediation-Pass" ist keine
Aufgabe, sondern drei.
**A — 115 CRITICAL im Betrieb mit verfügbarer Fix-Version.** Ein
Aktualisierungs-Vorhaben. Hängt unmittelbar an der Update-Kadenz (#0052);
Updaten ist hier der Hebel, nicht Einzelbehandlung.
**B — 68 CRITICAL im Betrieb ohne Fix-Version**, konzentriert auf **acht**
Images: `postgres:17.9-bookworm` (19), `goauthentik/server` (18),
`coturn:4.17.2` (12), `synapse` (5) und vier kleinere. Kein Update hilft. Jeder
Fall braucht eine **Entscheidung** — mitigiert, nicht erreichbar, hingenommen —
und die gehört mit Begründung und Review-Datum nach `.trivyignore`, wie es die
Abnahme des Issues bereits verlangt.
**C — 62 CRITICAL auf drei Bau-Artefakten, die nirgends laufen.**
`element-desktop-build:bullseye` (39), `windows-vm` (22), `axion-backup:v1` (1).
Davon sind **2** behebbar. ⚠️ **Hier ist Remediation die falsche Antwort.** Diese
Images kamen erst durch die Registry-Auswahl aus ADR-0026 („die letzten drei
Fassungen je Repo") in die Menge; sie werden nicht betrieben und teils gar nicht
mehr gebaut. Zu entscheiden ist, ob sie aus der Registry verschwinden oder aus
der Zielmenge — nicht, ob ihre CVEs geschlossen werden.
**Konzentration:** 41 laufende Images tragen CRITICAL-Befunde, aber **19 davon
tragen 80 %**. Der Haufen A ist damit kleiner, als die Zahl 115 vermuten lässt.
### Abnahmekriterien
1. **Kein CRITICAL in einem laufenden Image ohne Entscheidung.** Zählbar:
*behoben* **oder** Eintrag in `.trivyignore` mit Begründung **und**
Review-Datum. Heute: 183 ohne Entscheidung.
2. **Haufen C ist entschieden, nicht gepatcht.** Zählbar: 0 CRITICAL aus
Images, die nirgends laufen — erreicht durch Entfernen aus der Registry oder
durch eine begründete Einschränkung der Zielmenge. Heute: 62.
3. **Das Ergebnis ist am Dashboard ablesbar, nicht nur behauptet:**
`trivy_vuln_info{severity="CRITICAL"}` über laufende Ziele sinkt messbar, und
der Stand vorher/nachher steht mit Datum im Abschluss.
4. **Die Methode steht als Runbook** (`/betrieb/sicherheit`), damit der nächste
Durchgang nicht wieder bei der Sortierung anfängt.
5. **Kein Suppress ohne Ablauf.** Zählbar: jeder `.trivyignore`-Eintrag trägt ein
Review-Datum; keiner ohne.
### Nicht-Ziele
- **HIGH in diesem Durchgang.** 2688 im Betrieb sind kein Vorhaben, sondern eine
Kategorie. Dieser Durchgang ist **CRITICAL-first**; HIGH bekommt seinen eigenen,
sobald die Methode steht. ⚠️ Das ist eine bewusste Verengung und keine
Vollständigkeit — sie gehört in den Abschluss geschrieben.
- **MEDIUM/LOW.** Der Exporter führt sie nur als Zähler; für Einzelbehandlung
fehlt schon die Datengrundlage.
- **Die Update-Kadenz selbst** (#0052). Dieser Durchgang nutzt sie, baut sie nicht.
- **Die Zielmenge ändern** (#0106 ist abgeschlossen) — außer als ausdrückliche
Entscheidung zu Haufen C.
- `game-operating`, Homelab.
### ⚠️ Zwei Dinge, die Gate 1 nicht allein entscheiden kann
1. **Haufen C:** Registry aufräumen oder Zielmenge verengen? Das erste ist
sauberer und trifft die Ursache; das zweite ist billiger, macht die
Zielmenge aber wieder zu etwas, das jemand pflegt — genau wovon ADR-0026
weg wollte. **Meine Empfehlung: aufräumen.**
2. **Authentik** trägt 27 CRITICAL und 477 HIGH und ist damit der größte
Einzelposten im Betrieb. Ein Update ist der Hebel, aber es ist der
Anmeldeweg der ganzen Plattform. Ob das in diesen Durchgang gehört oder ein
eigenes Vorhaben mit eigener Rückfallebene braucht, ist eine Risikofrage,
keine technische.
### Ankündigung
Zum ersten Mal steht der vollständige Schwachstellenstand der Plattform als Zahl
da, und er zerfällt sauber in drei Teile: was ein Update erledigt, was eine
Entscheidung braucht, und was gar nicht hierher gehört, weil es niemand
betreibt. Dieser Durchgang arbeitet die kritischen Befunde der laufenden Anlage
ab — jeder einzelne endet entweder behoben oder als begründeter Eintrag mit
Ablaufdatum, damit kein Suppress zur stillen Dauerlösung wird. Was danach im
Dashboard steht, ist eine Aussage über die Plattform statt über die Länge einer
Liste.
### Keine Oberfläche
Kein UI-Anteil; das Ergebnis ist im bestehenden Dashboard
*Security / CVE-Übersicht* ablesbar.
> **STOP — Freigabe für Gate 1.**
+2 -2
View File
@@ -1,12 +1,12 @@
---
type: issue
id: "0051"
status: open
status: in-progress
created: 2026-08-14
milestone: M5
priority: high
area: security
related: [docs/issues/0025-deploy-uebergabe-cve-alarme-aggregiert-receiver.md, docs/aar/2026-08-01-cve-pipeline-gitops47.md, docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md]
related: [docs/issues/0025-deploy-uebergabe-cve-alarme-aggregiert-receiver.md, docs/aar/2026-08-01-cve-pipeline-gitops47.md, docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md, docs/design/2026-08-21-cve-remediation.md]
gitlab_iid: "37"
---
# CVE-Remediation-Pass: Schwachstellen-Report abarbeiten