Skip to content

fix(security): tomcat 10.1.59 + openssl 3.5.8-r0 + nanoid 3.3.18 (unblocks nightly + CI) - #123

Merged
WolfTasks merged 4 commits into
mainfrom
worktree-tomcat-cve-fix
Sep 6, 2026
Merged

fix(security): tomcat 10.1.59 + openssl 3.5.8-r0 + nanoid 3.3.18 (unblocks nightly + CI)#123
WolfTasks merged 4 commits into
mainfrom
worktree-tomcat-cve-fix

Conversation

@WolfTasks

@WolfTasksWolfTasks commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Problem

Der Nightly Security Scan schlägt seit dem 2026-09-03 fehl (grün am 02.09., rot am 03./04./05.09.). Job trivy-repo-scan, Step "Trivy filesystem scan (gate HIGH,CRITICAL)".

Ursache sind drei CRITICAL Auth-Bypass-CVEs in org.apache.tomcat.embed:tomcat-embed-core:10.1.55, alle am 03.09. offengelegt — also genau der Fall, für den die nächtliche Kadenz gebaut wurde: neue CVEs gegen unveränderte Dependencies.

CVEBeschreibungAlert
CVE-2026-68525FORM-Auth-Bypass → unautorisierter Ressourcenzugriff#174
CVE-2026-65905Auth-Bypass via Replay im DIGEST-Authenticator#173
CVE-2026-65182Security-Constraint-Bypass (improper access control)#172

Beim Verifizieren kamen zwei weitere, bereits vorher rote Gates ans Licht (belegt auf PR #118 vom 01.09. und PR #120 vom 03.09., beide main-basiert). Da sie den Merge blockieren, sind sie hier mitgefixt.

Commit 1 — tomcat 10.1.55 → 10.1.59

tomcat-embed-core ist rein transitiv (Spring Boot BOM → spring-boot-starter-tomcat). Dependabots Security-Update ist direct-only und scheiterte mit security_update_dependency_not_found (Run 33745231719) — dasselbe Muster wie seinerzeit bei jackson-databind.

Fix ist ein BOM-Property-Override, konsistent mit den bestehenden für commons-lang3, jackson-bom, logback und postgresql:

extra["tomcat.version"] ="10.1.59"

Zwei Details, die die naheliegende Lösung sonst kaputtgemacht hätten:

  • Die Advisories nennen 10.1.58 als Fix-Version — die existiert auf Maven Central nicht (404, Release übersprungen). 10.1.59 ist der erste verfügbare Release mit den Fixes.
  • Spring Boot 3.5.16 ist bereits das aktuellste 3.5.x und pinnt weiterhin 10.1.55 — ein Framework-Bump wäre ins Leere gelaufen.

Bewusst kein.trivyignore-Eintrag: das sind echte, ausnutzbare Auth-Bypässe in einem aktiv genutzten Pfad (Spring Security über Embedded Tomcat), anders als beim RSC-only react-router-CVE.

Commit 2 — openssl/libssl3 3.5.7-r0 → 3.5.8-r0 (backend-docker)

Der Trivy-Image-Gate blockte auf CVE-2026-14456 (HIGH) in der Alpine-Schicht des eclipse-temurin-Basisimages. Alpine liefert 3.5.8-r0 bereits aus, daher die bestehende apk upgrade-Zeile erweitert statt einem neuen Basis-Digest hinterherzujagen.

Commit 3 — nanoid 3.3.16 → 3.3.18 (frontend-build)

Der npm-audit-Gate blockte auf GHSA-2v37-7h3g-55p8 (high). nanoid ist dev-only transitiv über postcss (^3.3.12), der 3.3.18-Patch passt in die bestehende Range — kein postcss-Major nötig.

Nebeneffekt: package-lock.json trug noch Projektversion 1.0.13, während package.json auf 1.0.15 steht (der v1.0.15-Release hat nur package.json gebumpt). npm hat das normalisiert; package.json selbst ist unangetastet.

Verifikation (lokal)

  • Tomcat weg aus dem Image-Scan: die Trivy-Ergebnisse für diesen PR enthalten kein einziges Tomcat-CVE mehr
  • Fat-JAR enthält tomcat-embed-{core,el,websocket}-10.1.59.jar
  • backend/gradle.lockfile: nur core/el/websocket bewegt, sonst nichts
  • Backend-Testsuite: 382 Tests, 0 failures, 0 errors, 0 skipped (inkl. Testcontainers-Integrationstests, die den echten Embedded-Tomcat booten)
  • Image gebaut, vorher/nachher: openssl-3.5.7-r0openssl-3.5.8-r0, libssl3 analog
  • node .github/scripts/audit-gate.mjs grün, npm run build grün

Nach dem Merge lohnt ein workflow_dispatch auf den Nightly. Die Alerts #172/#173/#174 schließen sich beim nächsten Scan von selbst.

🤖 Generated with Claude Code

Wolfgang Kozianand others added 3 commits September 6, 2026 02:56
Nightly Trivy scan has been failing since 2026-09-03 on three CRITICAL
auth-bypass CVEs in org.apache.tomcat.embed:tomcat-embed-core 10.1.55:
CVE-2026-68525 FORM authentication bypass -> unauthorized resource access
CVE-2026-65905 DIGEST authenticator replay -> authentication bypass
CVE-2026-65182 security constraint bypass (improper access control)
tomcat-embed-core is transitive-only (Spring Boot BOM -> starter-tomcat),
so Dependabot's direct-only security update could not patch it and failed
with security_update_dependency_not_found. Spring Boot 3.5.16 is already
the latest 3.5.x and still pins 10.1.55, so a BOM property override is the
fix -- same pattern as the existing jackson/logback/postgresql overrides.
The advisories name 10.1.58 as the fixed version, but that release was
never published to Maven Central (404); 10.1.59 is the first available
release carrying the fixes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…26-14456)
The backend-docker Trivy gate blocks on CVE-2026-14456 (HIGH) in openssl
and libssl3 3.5.7-r0, shipped by the eclipse-temurin Alpine base layer.
Alpine already ships the patched 3.5.8-r0, so extend the existing
`apk upgrade` line rather than chasing a new base-image digest.
Verified by building the image locally:
before: openssl-3.5.7-r0 / libssl3-3.5.7-r0
after: openssl-3.5.8-r0 / libssl3-3.5.8-r0
Pre-existing failure, not introduced by the tomcat bump — backend-docker
was already red on PRs #118 and #120.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The frontend npm-audit gate blocks on GHSA-2v37-7h3g-55p8 (high): custom
generators can loop indefinitely when size is zero. nanoid is a dev-only
transitive of postcss (`^3.3.12`), so the 3.3.18 patch fits the existing
range — no postcss major bump needed.
`node .github/scripts/audit-gate.mjs` passes locally and `npm run build`
is green.
Also normalises a pre-existing drift: package-lock.json still carried
project version 1.0.13 while package.json is at 1.0.15 (the v1.0.15
release bumped package.json only). package.json itself is untouched.
Pre-existing failure, not introduced by the tomcat bump — frontend-build
was already red on PR #120.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@WolfTasksWolfTasks changed the title fix(security): bump tomcat-embed 10.1.55 -> 10.1.59 (3 CRITICAL CVEs, unblocks nightly scan)fix(security): tomcat 10.1.59 + openssl 3.5.8-r0 + nanoid 3.3.18 (unblocks nightly + CI)Sep 6, 2026
…GH CVEs)
The frontend-docker Trivy gate blocks on nine HIGH CVEs in the nginx
Alpine base layer:
libuuid 2.42.1-r0 -> 2.42.3-r1 CVE-2026-78408/78409/78410, -76642,
CVE-2026-53612/53613/53614
libssl3 3.5.7-r0 -> 3.5.8-r0 CVE-2026-14456
libcrypto3 3.5.7-r0 -> 3.5.8-r0 CVE-2026-14456CVE-2026-14456 is the same openssl flaw already patched in
backend/Dockerfile; Alpine names the packages differently in the nginx
image (libcrypto3 rather than openssl).
Extends the existing `apk upgrade` line, consistent with the libexpat /
c-ares / curl entries already there.
This gate was previously masked: frontend-docker depends on
frontend-build, which was failing on the nanoid advisory, so the job was
skipped rather than run. It was already red on PR #118.
Verified by running the exact apk upgrade line against the pinned base
image digest — all targets reached (libuuid resolves to 2.42.3-r1, newer
than the 2.42.3-r0 named in the advisories).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@WolfTasks
WolfTasks merged commit 2a43fd2 into mainSep 6, 2026
11 checks passed
@WolfTasks
WolfTasks deleted the worktree-tomcat-cve-fix branch September 6, 2026 01:26
WolfTasks pushed a commit that referenced this pull request Sep 6, 2026
Ships the security fixes from PR #123:
- tomcat-embed 10.1.55 -> 10.1.59 (CVE-2026-68525 / -65905 / -65182, all
CRITICAL auth bypasses)
- backend image: openssl/libssl3 -> 3.5.8-r0 (CVE-2026-14456)
- frontend image: libssl3/libcrypto3 -> 3.5.8-r0, libuuid -> 2.42.3-r1
(9 HIGH CVEs)
- nanoid 3.3.16 -> 3.3.18 (GHSA-2v37-7h3g-55p8)
Bumps package-lock.json alongside package.json; bumping package.json
alone is what left the lockfile stranded at 1.0.13 through the v1.0.14
and v1.0.15 releases.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto 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

@WolfTasks