UID2-7707: suppress CVE-2026-73650 in .trivyignore - #209
Merged
Conversation
unknown package is present but not reachable from this service — see UID2-7707 for the impact assessment. Reachability alone determines suppress-vs-fix.
BehnamMozafari
approved these changes
Aug 18, 2026
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-73650 (HIGH,
svgo) — present in the image but not reachable from this service. Expiry 2026-11-18 (3 months). No code fix.Why: The advisory's attack vector requires an application to run SVGO's removeScripts (removeScriptElement) plugin as a sanitizer over untrusted SVG input and then serve the optimized result to other users. In uid2-examples the vulnerable package is present only as build-time tooling: svgo is pulled in transitively by create-react-app (@svgr/webpack, postcss-svgo) to optimize the demo apps' own bundled SVG assets during
npm run build. No source code imports svgo or invokes optimize(), and the runtime (server.js) is a static express server that never feeds untrusted SVGs through svgo. The removeScripts plugin is off by default and not enabled anywhere. The vulnerable code path is therefore unreachable at runtime. Additionally the flagged svgo@1.3.2 copy is locked inside react-scripts@5's @svgr/webpack@5.5.0 with no in-major fix available. Verdict rests on direct grep/read evidence (lockfiles, absent src imports, Dockerfile/server.js build-vs-runtime split); the only inference is the standard CRA build behavior.Evidence: svgo appears only in the two scanned react-client-side lockfiles (javascript-sdk & google-secure-signals): svgo@3.3.3 (@svgr/plugin-svgo dep), postcss-svgo's svgo@2.8.1, and svgo@1.3.2 bundled in react-scripts@5/@svgr/webpack@5.5.0. No src/ file imports svgo or calls optimize() (grep in both src trees returned nothing). Dockerfile runs
npm run build(CRA) thennpm start-> server.js is plain express serving the static build; svgo runs only at CRA build time on the app's own trusted SVG assets, never against untrusted request input. removeScripts/removeScriptElement plugin is disabled by default and not configured.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-73650 / GHSA-2p49-hgcm-8545 — svgo removeScripts plugin leaves some executable scripts intact
Severity: HIGH (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N)
Package: svgo — installed 1.3.2, fixed in 2.8.3 / 3.3.4 / 4.0.2
Flagged repo: uid2-examples
What the CVE is
SVGO's
removeScriptsplugin (namedremoveScriptElementin v1–3, and disabled by default) is sometimes used as an SVG sanitizer. In vulnerable versions it fails to strip namespaced/prefixed script elements (e.g.<svg:script>) and, in v3/v4, matchesjavascript:URIs case-sensitively. An app that runs this plugin over untrusted SVG input and serves the result can leak stored XSS to viewers.How it maps to our code
The scanner flagged two lockfiles, both React demo apps:
npm/web-integrations/javascript-sdk/react-client-side/package-lock.jsonnpm/web-integrations/google-secure-signals/react-client-side/package-lock.jsonIn both, svgo is present only as build-time tooling pulled in transitively by create-react-app:
svgo@3.3.3via@svgr/plugin-svgosvgo@2.8.1viapostcss-svgosvgo@1.3.2bundled insidereact-scripts@5→@svgr/webpack@5.5.0(the installed=1.3.2 hit)Evidence gathered:
svgo/optimize(across both apps'src/trees returned nothing — no application code imports or invokes svgo.Dockerfilerunsnpm run build(CRA production build) thennpm start;server.jsis a plain express server that serves the static builtindex.html. svgo only executes at build time, optimizing the apps' own trusted SVG assets.removeScripts/removeScriptElementsanitizer plugin is off by default and is not enabled or configured anywhere.Decision
not_affected. The vulnerable code path requires running the removeScripts plugin over untrusted SVG at runtime and serving the output. Here svgo never runs against untrusted input and the plugin is disabled — the path is unreachable. This holds regardless of the available fixes; notably the svgo@1.3.2 copy is locked inside react-scripts@5 with no in-major fix, so an upgrade there would break the CRA build.
Recommended action: suppress (accept) in the repo-root
.trivyignoreuntil react-scripts is upgraded or removed. This matches the existing acceptance entry already present for GHSA-2p49-hgcm-8545.Opened by uid2-vul-scan-agent (general_use_claude-opus-4-8), verdict confidence high. Please sanity-check the reachability argument before approving.