UID2-7619: suppress CVE-2026-69152 in .trivyignore - #205
Closed
swibi-ttd wants to merge 1 commit into
Closed
Conversation
unknown package is present but not reachable from this service — see UID2-7619 for the impact assessment. Reachability alone determines suppress-vs-fix.
Contributor
Author
|
Superseded by #206, which carries the suppressions for both CVE-2026-69152 and CVE-2026-18446 in a single commit. This PR and its sibling were mutually blocked: each was red solely on the other PR's CVE, and |
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-69152 (HIGH,
brace-expansion (npm)) — present in the image but not reachable from this service. Expiry 2026-09-06 (1 month). No code fix.Why: DoS in brace-expansion expand() (unbounded intermediate arrays / padded sequences; maxLength not applied), bypassing the CVE-2026-14257 fix. Exploitation requires the application to call expand() on attacker-controlled brace patterns. In all six repos brace-expansion is a purely transitive dependency of minimatch/glob used by build tooling, linters and test/dev runners (Docusaurus static-site builds, craco/React builds, eslint/jest/nodemon). No repo invokes minimatch/glob/brace-expansion on network- or attacker-supplied input at runtime; the docs sites ship static assets with no server-side expansion. The vulnerable code path is therefore unreachable in production despite the vulnerable versions being present. Fixed versions exist but do not change a not_affected verdict.
Evidence: package.json overrides brace-expansion@5=5.0.8; docusaurus static-site generator (scripts: docusaurus build/start). Pulled transitively via minimatch/glob at build time only; production artifact is static HTML/JS with no expand() on runtime input. package.json overrides brace-expansion@5=5.0.8; docusaurus static-site generator. Build-time-only glob/minimatch dependency; no runtime pattern expansion. preview/package.json overrides brace-expansion@5=5.0.8; docusaurus static-site generator. Same build-only chain as the other docs sites. package.json overrides brace-expansion@1=1.1.16, @5=5.0.8, plus @isaacs/brace-expansion override. craco/React frontend + tsx/nodemon dev API; no minimatch/glob/brace-expansion references in src. Reached only via build/lint/test tooling. yarn.lock has brace-expansion 1.1.16/2.1.2/5.0.7 all pulled only by minimatch under eslint-plugin-import, jest and nodemon (dev tooling). No minimatch/glob/brace-expansion use in src or bin; production start is
node ./build/bin/www. Existing .trivyignore documents the same dev-only chain for CVE-2026-14257. brace-expansion@5=5.0.8 override across web-integrations sub-projects (server-side, javascript-sdk, google-secure-signals, prebid). Demo integration apps; no minimatch/glob/brace-expansion invocation in the example JS sources — reached only via build tooling.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-69152 — brace-expansion DoS (bypass of CVE-2026-14257 fix)
What the CVE is
brace-expansion'sexpand()does not apply itsmaxLengthguard while constructingcomma-alternative intermediate arrays or padded sequences. An attacker who controls the
brace pattern passed to
expand()can force construction of huge intermediate arrays,exhausting memory or blocking the Node.js event loop — a denial of service. This bypasses
the earlier CVE-2026-14257 fix. CVSS 3.1 HIGH (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H).
<1.1.18,<2.1.4,<3.0.6,<5.0.9expand()on attacker-supplied input.Presence in our repos
All six flagged repos are JavaScript/Node projects and all carry a vulnerable
brace-expansion(mostly pinned to5.0.8viaoverrides/resolutions, plus5.0.7 / 2.1.2 / 1.1.16in uid2-tcportal). These pins were introduced to remediate theprior CVE-2026-14257; this new CVE bypasses that fix, so the pinned versions are
present-and-vulnerable. So the package is present everywhere.
Reachability analysis (per repo)
The exploit needs
expand()to run on attacker-controlled patterns. In every repo,brace-expansionis only reached transitively throughminimatch/glob(filesystemglob matching), and only from build tooling, linters, or test/dev runners:
srcsrc/binKey observations:
brace-expansionis usedonly during
docusaurus build, and the deployed artifact is static HTML/JS with noserver that expands patterns at request time.
srccontains nominimatch/glob/brace-expansionreferences; the chainis confined to craco/webpack build, eslint, jest and storybook.
minimatch, whose consumers areeslint-plugin-import, jest and nodemon — all dev tooling. Production start is
node -r dotenv/config ./build/bin/wwwand the app source never calls glob/minimatch.The repo's existing
.trivyignorealready records this same dev-only reasoning for thepredecessor CVE-2026-14257.
glob/minimatch/brace-expansion.
No repo passes network- or attacker-controlled input into
expand().Decision
not_affected across all six repos. The vulnerable code path is not reachable from any
production service or deployed artifact — exposure is limited to build/dev/test tooling.
Under the reachability-only decision logic, the availability of a fixed version does not
change this verdict.
Recommended action: suppress (record the entry in each repo's root
.trivyignore).Optionally, bumping the
brace-expansionoverridespins to the fixed versions(≥5.0.9 etc.) during routine dependency maintenance would clear the finding at source, but
it is not security-required given the lack of reachability.
Confidence: high — consistent across all six repos, corroborated by an existing
.trivyignorenote for the sibling CVE.Opened by uid2-vul-scan-agent (general_use_claude-opus-4-8), verdict confidence high. Please sanity-check the reachability argument before approving.