Baseline 2026-10-09, HEAD cc713b5 (git archive HEAD copy for source scans; gitleaks read .git read-only)
Tools: gitleaks v8.30.1, trivy 0.75.0, osv-scanner v2.6.0, semgrep 1.180.0 (p/default p/typescript p/nodejs p/secrets p/dockerfile), pnpm audit (pnpm 9.15 registry endpoint)
gitleaks-history.json  : 20 findings / 1367 commits (16 private-key [test fixtures + doc snippets], 3 generic-api-key [i18n labels, doc table], 1 curl-auth-user [test-Nextcloud example]) -> 0 real secrets
pnpm-audit-all.json    : 171 vulns (critical 7, high 85, moderate 74, low 5), 151 advisories, 1268 deps
pnpm-audit-prod.json   : 151 vulns (critical 5, high 73, moderate 68, low 5)
osv-scanner.json       : 43 vulnerable package@version of 1262 (pnpm-lock.yaml)
trivy-fs.json          : pnpm-lock 151 (C5 H73 M68 L5), Cargo.lock 2 MEDIUM, misconfig 2 LOW (no HEALTHCHECK api+web Dockerfile), secrets 7 HIGH = test key fixtures
trivy-image-api.json   : api:beta Node.js C6 H116 M98 L7 ; alpine os-pkgs M1 ; secrets 0
trivy-image-web.json   : web:beta Node.js C2 H19 M21 L1 ; alpine os-pkgs M1 ; secrets 0
semgrep.json           : 58 findings (ERROR 9, WARNING 46, MEDIUM 3); 7 ERROR = test key fixtures, 59 scan errors (43 PartialParsing, 16 Timeout)

nach Ausnahmelisten (2026-10-09, Task 1)
Quelle: voller Lauf von .gitea/scripts/security-scan.sh in gitea/runner-images:ubuntu-latest (Netz gitea, Docker-Daemon des Hosts, GITHUB_REF=refs/heads/main), HEAD 3d00be8 plus ein Wegwerf-Klon mit einem Kanarienvogel-Token (die Treffer des Kanarienvogels sind unten abgezogen). Rohdaten (JSON) bleiben ausserhalb von Git (baseline/.gitignore).
gitleaks               : 0 Treffer ueber die gesamte Historie (vorher 20; alle 20 waren geprueft harmlos, jetzt einzeln freigegeben in .gitleaks.toml); Kanarienvogel wird gefunden (1 Treffer, github-pat)
pnpm audit --prod      : critical 5, high 73, moderate 68, low 5 (unveraendert zur Grundlinie)
osv-scanner            : 56 verwundbare package@version (pnpm-lock.yaml + Cargo.lock; die Grundlinie zaehlte nur pnpm-lock.yaml: 43)
semgrep                : 34 Treffer (ERROR 2, WARNING 29, MEDIUM 3), 4 Scanfehler (alle PartialParsing: ci.yml, beide Dockerfiles, 0 Zeitueberschreitungen); vorher 58 Treffer / 59 Fehler. Der Kanarienvogel (detected-github-token) ist abgezogen. .semgrepignore entfernt Testschluessel, Tests, Testdaten und Planungsnotizen
trivy fs               : critical 5, high 73, medium 70, low 5, misconfig 2 (kein HEALTHCHECK), secrets 0 (vorher 7 = Testschluessel); Kanarienvogel wird gefunden (secrets=1, github-pat)
trivy image api:beta   : critical 6, high 116, medium 99, low 7 (Node-Pakete plus Alpine), secrets 0
trivy image web:beta   : critical 2, high 19, medium 22, low 1 (Node-Pakete plus Alpine), secrets 0
Nachweis: checks/task1-runner-full.txt (nur Zeilen SECURITY-SUMMARY und rc=0, mit Kanarienvogel); Offline-Lauf im Runner-Abbild: Exit 0, alle Werkzeuge uebersprungen.

ZAP-Grundpruefung (2026-10-09, Task 3)
zap (alpha, direkt gegen die Anwendung, ohne Proxy): hoch 0, mittel 2, niedrig 6, info 3 (11 Meldungsarten, 28 URLs, passiv, 0 POST). Mittel: fehlende Content-Security-Policy, fehlender Schutz gegen Einrahmen (Clickjacking). Niedrig: fehlende Kopfzeilen X-Content-Type-Options, Permissions-Policy, Cross-Origin-Embedder/Opener/Resource-Policy; Kopfzeile X-Powered-By. Lauf ueber die oeffentliche Adresse steht aus (vom Pruefrechner nicht erreichbar). Lokaler Beweis: checks/task3-zap-local.txt (POST=0 in beiden Laeufen). Rohberichte bleiben in security-reports/ (nicht in Git).

nach Behebung (2026-10-09, Task 6)
Quelle: Abschlusslauf von .gitea/scripts/security-scan.sh in gitea/runner-images:ubuntu-latest (Netz gitea, Docker-Daemon des Hosts, GITHUB_REF=refs/heads/main), frischer Klon von HEAD fceec19, lokal gebaute Abbilder; Exit 0. Nachweis: checks/final-run.txt.
gitleaks               : 0 Treffer ueber die gesamte Historie
pnpm audit --prod      : critical 0, high 9, moderate 3, low 0 (vorher C5 H73 M68 L5)
osv-scanner            : 20 verwundbare package@version (8 npm: xlsx, node-forge, nodemailer, sharp, deepmerge-ts, vitest, @vitest/mocker, tinypool; 12 crates: glib, anyhow, event-listener, h2, quick-xml x2, proc-macro-error, unic-* x5); vorher 56
semgrep                : 33 Treffer (ERROR 1, WARNING 29, MEDIUM 3), 4 Scanfehler (PartialParsing); Regel gcm-no-tag-length: 0 (vorher 1)
trivy fs               : critical 0, high 9, medium 4, low 0, misconfig 2 (kein HEALTHCHECK), secrets 0
trivy image api        : critical 0, high 6, medium 4, low 0 (nodemailer, xlsx, node-forge, deepmerge-ts); Groesse 1,12 GB (vorher 1,66 GB)
trivy image web        : critical 0, high 3, medium 1, low 0 (sharp); Groesse 359 MB
zap                    : nicht neu gemessen; Lauf ueber die oeffentliche Adresse steht aus
Werkzeugordner-Wiederverwendung (Volume mit Werkzeugen): zweiter Lauf meldet "semgrep ... bereit (vorhanden)" statt neuer Installation.
