Repository navigation
docs(security): record the undici findings of npm's bundled undici (CVE-2026-109869, CVE-2026-109383, CVE-2026-87018) - #24
Open
knittingcode wants to merge 11 commits into
Open
knittingcode wants to merge 11 commits into
knittingcode wants to merge 11 commits into
Conversation
The scan of main reports CVE-2026-109869 (HIGH) for undici 6.29.0 in the npm 11.21.1 that the web image installs. Record the advisory, the undici copies in the images, the reachability (only node-gyp uses it; installs run with --ignore-scripts; no runtime image is affected) and that no npm or Node.js release ships a fixed undici yet. No exception is added; the finding stays reported for the development image.
The CVE-2026-109869 entry said to update npm once it bundles undici >= 6.29.1, which also matches the vulnerable 8.0.0 to 8.12.1. State the fixed version per release line, name the likely fix path (node-gyp 13.1.0 requires undici ^8.4.1; npm 11.21.1 and 12.2.1 still bundle node-gyp 12.4.0 and 13.0.0 with ^6.25.0) and when to re-check. Record that npm audit and npm run do not load npm's undici and that no frontend dependency would run node-gyp even without --ignore-scripts.
This was referenced Oct 24, 2026
Resolve the conflict in docs/security/container-vulnerabilities.md by keeping both new sections: the CVE-2026-109869 (undici) section of this branch, then the CVE-2026-92392 (curl/libcurl) section from main.
No npm release since 11.21.1 and 12.2.1 (2026-10-15); Node.js 24.22.1 still bundles npm 11.19.1 and Node.js 26.12.1 npm 11.20.0, checked against the npm registry and nodejs.org/dist/index.json.
This was referenced Oct 28, 2026
…the web image The scan of main at 1badf76 (run 40745073009) reports CVE-2026-109383, CVE-2026-109869 and CVE-2026-87018 in the undici 6.29.0 that npm 11.21.1 bundles in the report-only web dev image. Extend the undici section to all three advisories with their GHSA ids, scores and affected ranges, state where the copy comes from, why no exception is listed, that node-gyp passes no function-valued tls option, and the newest Node.js releases (24.22.2, 26.13.0) as of 2026-10-28.
…es undici 8 node-gyp 13.0.1 (2026-07-02), 13.0.2 and 13.1.0 all require undici ^8.4.1; 13.0.0 still requires ^6.25.0 (npm registry metadata, checked 2026-10-29). The re-evaluation trigger named only 13.1.0.
… Database The NVD published CVE-2026-109869, CVE-2026-109383 and CVE-2026-87018 on 2026-10-15, before the npm 11.21.1 remediation of 2026-10-21 (e3a03ba); only the GitHub Advisory Database dates (2026-10-23, 2026-10-27) are later. 'Published after the remediation' was therefore only half true.
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.
Summary
Documents the three HIGH undici findings that the container scan reports for the report-only
web-devimage (CVE-2026-109869, CVE-2026-109383, CVE-2026-87018) indocs/security/container-vulnerabilities.md. Documentation only; no image, dependency, scanner or exception change. Despite thefix/branch name, the branch changes only this document.Motivation
The Trivy step of main 1badf76 (run 40745073009, push, success) reports, for the development web image only (
3 HIGH/CRITICAL findings in web-dev, 0 suppressed by an exception):The same run reports 0 HIGH/CRITICAL for api-prod, edge-prod (1 suppressed: the ADR-021 go-jose exception) and db. CVE-2026-109869 was first reported by main run 40101147084; the other two advisories were published on 2026-10-27, and 40745073009 is the first scan of main after that (the run before it, 40669720894 on 999d4d1, failed at BE-03 and skipped the scan).
Vulnerability evidence (GitHub advisory API, 2026-10-28; none withdrawn)
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:Hfetch()crash on more than five content codingsAV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:NAgentdrops a function-valuedtlsoption (customcheckServerIdentity)AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HWhere the vulnerable undici comes from: it is the copy that the npm CLI bundles,
/usr/local/lib/node_modules/npm/node_modules/undici.docker/web/Dockerfilereplaces the npm of the Node image with npm 11.21.1 (NPM_VERSION, checksum-pinned), and the npm 11.21.1 registry tarball containspackage/node_modules/undici6.29.0 (verified 2026-10-28; tarball SHA-256 equals the pinnedNPM_SHA256). It is not a project dependency. The other copies are fixed: Node.js 24.22.1 core undici 7.30.1 (deps/undici/src/package.jsonat tag v24.22.1, also 7.30.1 in v24.22.2) and the project's undici 8.12.3 via jsdom 30.1.3 (frontend/package-lock.json). The edgespa-buildstage uses the npm 11.19.1 of Node 24.22.1 (undici 6.28.0); that stage is discarded and not in any image.Impact and reachability
lib/download.js) imports undici (a search of the 11.21.1 tarball forrequire('undici')/from 'undici'finds no other importer). The Dockerfiles install withnpm ci --ignore-scripts; even without the flag node-gyp would not run (the only frontend package with an install script isfsevents, macOS only).npm auditandnpm runload npm but not its undici; Vite, Vitest, tsc and ESLint do not load npm's modules.createDispatcherpasses only a CA (connect,requestTls,proxyTls), no function-valuedtlsoption, so CVE-2026-109383 does not apply; the two DoS findings would only end a header download from a malicious server.prodis the Caddy base plus the built SPA; api and db contain no Node.js).Implementation
docs/security/container-vulnerabilities.md:undicibundled with npm (web, development only)", covers all three advisories in one table (GHSA, CVSS, ranges, issue, first main scan), the copies table, where the open copy comes from, reachability, remediation status and the re-evaluation trigger. It stays between the brotli and curl sections, before the go-jose section of fix(security): remediate dependency advisories and guard Caddy exposure (ADR-021) #42.security/trivyignore.yaml. No entry was added to that file.^6.25.0); node-gyp 13.1.0 requires^8.4.1. Newest Node.js: 24.22.2 (2026-10-27, npm 11.19.1) and 26.13.0 (2026-10-28, npm 11.20.0); none bundles a fixed npm.Commits: 87c0082 / 02b8ecd merges of main (#39; #38, #42), 6a80916 fact re-check, 112fbcd
docs(security): document the three undici findings of npm 11.21.1 in the web image.Testing performed
02b8ecdchore(merge): bring main (#38, #42) into the branch: normal merge,docs/security/container-vulnerabilities.mdauto-merged with no conflict;git diff --checkclean.guard-tracked-files.sh,guard-dockerfile-frontend.sh,guard-trivyignore.shandguard-edge-config.shall exit 0 (the trivyignore guard reads only the rows under## Exceptions, which this PR does not change).#web-node-24221-development-and-test-onlyand the new section anchor follow GitHub's heading slugs.112fbcd(workflow CI, pull_request, merged into main 1badf76): run 40752277331, success; every step of Repository guard and Dev environment succeeded, none skipped. TOTAL lines: guard regression 36/36, Dockerfile frontend guard 73/73, scan exception guard 87/87, edge configuration guard 221/221; allocator unit 288/288, allocator integration 140/140 (24 scenarios); backend 18/18 (BE-1853 of 53 negative controls detected); frontend 5/5; application stack 124/124; production-like stack 39/39; container scan 20/20. The scan reports3 HIGH/CRITICAL findings in web-dev(CVE-2026-109383, CVE-2026-109869, CVE-2026-87018, undici 6.29.0), 0 for api-prod, edge-prod (1 suppressed, CVE-2026-116587), db and api-dev, and 1 for edge-dev (CVE-2026-116587), matching the document.Security considerations
The three findings stay open in the development web image until npm ships a fixed undici; they are not reachable in the configured install path and not present in any runtime image. No exception is added, so nothing is suppressed. No secrets or local configuration are included.
Known limitations
spa-buildstage (npm 11.19.1, undici 6.28.0) is not scanned, because it is not in any image.