UID2-7656: suppress CVE-2026-56408 in .trivyignore - #427
Closed
swibi-ttd wants to merge 1 commit into
Closed
Conversation
unknown package is present but not reachable from this service — see UID2-7656 for the impact assessment. Reachability alone determines suppress-vs-fix.
Contributor
Author
|
Superseded by the newer suppression PR from run 20260811-110031, which carries every CVE this run did plus CVE-2026-40984 (UID2-7662) — the finding that was failing the Vulnerability Scan step here. Merge the newer PR instead; merging both would conflict on the same .trivyignore append. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Suppresses CVE-2026-56408 (HIGH,
libexpat (Alpine base image, transitive via eclipse-temurin:21-jre-alpine-3.23)) — present in the image but not reachable from this service. Expiry 2026-11-11 (3 months). No code fix.Why: Integer overflow (CWE-190) in native libexpat's copyString(), reachable only by parsing XML through the libexpat C library. libexpat is present solely as a transitive OS dependency of the eclipse-temurin:21-jre-alpine-3.23 base image (font/fontconfig chain); no repo installs or links it. All five services are pure-Java Vert.x apps that parse XML via the JVM's JAXP/Xerces stack, not native libexpat, and contain no JNI bindings or loadLibrary calls to it. The advisory's local XML-parsing vector cannot be exercised through our build/run configuration, so the vulnerable path is unreachable despite the library being present.
Evidence: Dockerfile FROM eclipse-temurin:21-jre-alpine-3.23; libexpat not apk-added, only libpng/libcrypto3/libssl3/gnutls. Pure-Java Vert.x jar; no expat/JNI/loadLibrary refs in any *.java. XML (logback.xml/conf) parsed by JVM JAXP, not native libexpat. Same eclipse-temurin alpine base; libexpat transitive only. No expat/XML_Parse/JNI references in source; JVM handles all XML parsing. Same alpine base (adds only gcompat for Corretto crypto). No native libexpat path; pure-Java XML via JAXP. Nitro builder is a separate ubuntu:22.04 build stage, not the scanned runtime image. Same alpine base; libexpat not explicitly installed. No expat/JNI refs; JVM parses config/logback XML, not libexpat. Same alpine base; no apk libexpat, no native XML path in source. Nitro builder uses ubuntu:22.04 (build-only, not scanned runtime).
Reachability alone determines suppress-vs-fix — a fixed version existing upstream does not make an unreachable path exploitable. Change the expiry in review if you want a different window.
Full triage report
CVE-2026-56408 — libexpat integer overflow in copyString
What the CVE is
libexpat before 2.8.2 contains an integer overflow (CWE-190) in the internal
copyString()routine. It is reached when the native libexpat C library parses XML input; the OSV/NVD vector isCVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:L(local, high attack complexity). Fixed in libexpat 2.8.2 (Alpine2.8.2-r0).What was scanned
The findings come from the container images built by each repo's
Dockerfile, all of which areFROM eclipse-temurin@sha256:...=eclipse-temurin:21-jre-alpine-3.23. libexpat2.8.1-r0ships in that base image as a transitive OS dependency (font-rendering chain: fontconfig → freetype/expat). No repo declares or installs it.How it affects our services — code search
apk addlibexpat. They add onlylibpng libcrypto3 libssl3 musl musl-utils gnutls(admin/core/optout),gcompat(operator), or nothing extra (validator).expat,libexpat,XML_Parse,JNI,System.loadLibrary, andnativeacross*.java/*.c/*.cpp/*.h/*.xmlreturned zero matches.logback.xml,conf/*.xml) is parsed by the JVM's JAXP/Xerces implementation — pure Java — never by native libexpat.FROM ubuntu:22.04and are build-only stages; they are not the alpine runtime artifacts the scanner inspected.Because these services never invoke libexpat through any JNI/native binding, the advisory's XML-parsing overflow path is not reachable in the way we build and run the artifacts.
Decision
not_affected for all five repos (uid2-admin, uid2-core, uid2-operator, uid2-optout, uid2-validator). The package is present in the base image (the scan is correct) but unreachable — consistent with the standing rule that Alpine base-image OS libraries are presumed unreachable for pure-Java services absent a demonstrated native path, which does not exist here.
Recommended action
Suppress this finding in each repo's root
.trivyignore. A fixed package (2.8.2-r0) exists and will arrive naturally when the base image is bumped, but the fix does not change the not_affected verdict; suppression is appropriate because the path is not exploitable in our services. Confidence: high.Opened by uid2-vul-scan-agent (general_use_claude-opus-4-8), verdict confidence high. Please sanity-check the reachability argument before approving.