Repository navigation
fix(deps): patch the fixable web and docs-site npm advisories - #125
Conversation
Lockfile-only updates within the declared ranges, each to the first patched release or the newest compatible one: - source-map-js 1.2.1 -> 1.2.2 in web and docs-site (GHSA-68fv-2mgg-jv7q) - proxy-addr 2.0.7 -> 2.0.8 in docs-site (GHSA-jqcg-44mw-7w3h) - @modelcontextprotocol/sdk 1.30.0 -> 1.32.1 in docs-site (GHSA-6qxp-vccf-f47h) - hono 4.13.5 -> 4.13.13 in docs-site (GHSA-hxh3-vqpv-xpqv; supersedes #120) shadcn moves from dependencies to devDependencies. The site uses it only through `@import 'shadcn/tailwind.css'`, which Tailwind resolves at build time, and the built output contains none of it. The lockfile diff is mostly the dev flag on its subtree. This is a classification correction, not a fix: the braces advisory (GHSA-vfj7-8cjw-p6xm, no patched release) is still reached through vinext -> vite-plugin-commonjs -> vite-plugin-dynamic-import -> fast-glob -> micromatch -> braces, and the docs-site audit still reports it. Validated with Node 26 / npm 11: web build and synchronized bundle check, `npm audit --prefix web --audit-level=high` (0 vulnerabilities), the community docs-site check (17 pages), and the optional vinext build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: al2wang <lightever131@gmail.com>
vinext and its Vite plugin chain only build the optional React deployment. Neither supported deployment loads them at run time: - the public GitHub Pages site is generated by `build:pages`, which imports gray-matter, marked and sanitize-html and never vinext; - the optional Worker deployment serves `dist/`, whose server output imports only Node built-ins (externals manifest empty), and it starts and serves its routes under the documented `wrangler dev` command from a copy with no node_modules. So vinext moves to devDependencies, where the production audit no longer counts it. This is a classification, not a fix: braces (GHSA-vfj7-8cjw-p6xm, no patched release) is still installed for builds through vinext -> vite-plugin-commonjs -> vite-plugin-dynamic-import -> fast-glob -> micromatch, and a full audit including build tools still reports it with the other build-tool findings. To keep the classification honest, `tests/test-community-docs-site.sh` now reinstalls the site with `--omit=dev`, fails if vinext is present, rebuilds the static site and requires the output to match the full build. It fails against main's manifest. PUBLISHING.md states the deployment contract this relies on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: al2wang <lightever131@gmail.com>
|
Update: one recommended disposition, which supersedes the four options in the description. No exception is needed.
Deployment test (clean copies of the artifacts, no
New regression: Audits on the final lockfiles:
Recommendation:
I have not filed the upstream issue, since that is outside this repository; I can draft it if you want. Local checks: community tree, doc links, DCO, CI workflow (with Ruby), community candidate and verification suites all pass. The secret history scan passes on a clone with all 27 remote branches plus this commit, which is CI's |
|
Two clarifications to the disposition above. No new request; this PR is already waiting on @sl-7qx.
|
Two build-tool advisories have patched releases reachable through the docs-site's existing override mechanism: - sharp 0.35.4 -> 0.35.5 (GHSA-wq5f-xc86-pv6w, high: librsvg memory bug, possible RCE when decoding SVG on glibc Linux). miniflare pins sharp exactly, and the repository already overrides that pin; the override moves to the patched release, which ships librsvg 2.63.2. - tinypool 2.1.0 -> 2.1.2 under oxfmt (GHSA-5gmw-xhrv-c9v3 and GHSA-85c8-ppgw-ccpr, critical: prototype-pollution gadgets that let polluted worker or run() options load attacker code). oxfmt 0.61.0 pins tinypool exactly; the first oxfmt on the patched release is a 0.x minor seven releases newer, so a patch-level override is the smaller change. Only sharp, its per-platform @img packages and tinypool change; nothing is added or removed. sharp loads at 0.35.5 with librsvg 2.63.2, oxfmt formats through its worker pool, the vinext build passes, and neither package is required during that build. The docs-site check passes with the audit selected. A full audit now reports three unique advisories: braces (high, no patched release) and two moderates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: al2wang <lightever131@gmail.com>
|
@sl-7qx, this consolidates my earlier comments into one decision-ready summary. Head What this PR fixes: in-range, lockfile-level updates for
Both are patch releases. Only those packages and sharp's platform binaries change. sharp loads with librsvg 2.63.2, and oxfmt formats through its worker pool. Why the Audit status on
The one remaining high,
Correction: I said earlier that the remaining findings are tracked through Dependabot. That was unsupported.
Decision requested:
Per-advisory records (exact path, operation, reachability, residual risk) are below. Advisory recordsR1 — braces, GHSA-vfj7-8cjw-p6xm / CVE-2026-93687 (high, CVSS 7.5)
R2 — sharp, GHSA-wq5f-xc86-pv6w (high, CVSS 8.9; upstream librsvg CVE-2026-96889)
R3 — tinypool, GHSA-5gmw-xhrv-c9v3 / CVE-2026-104848 (critical, CVSS 9.5)
R4 — tinypool, GHSA-85c8-ppgw-ccpr / CVE-2026-104849 (critical, CVSS 9.5)
Moderates (below the
|
postcss-selector-parser 7.1.5 -> 7.1.6 (GHSA-rj75-hqrm-r3gf / CVE-2026-104844, moderate: quadratic-time parsing of flat selectors can exhaust CPU). It is the only copy, required by shadcn with `^7.1.0`, so this is an in-range lockfile update; no other package changes. The docs-site check passes with the audit selected: the vinext build, the static build and the production-only rebuild. A full audit now reports two unique advisories: braces (high, no patched release) and sprintf-js (moderate, no patched release; reached through gray-matter's js-yaml 3 -> argparse 1 chain, and gray-matter 4.0.3 is the latest). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: al2wang <lightever131@gmail.com>
|
@sl-7qx, what has changed since my last summary ( 1. New commit 2. Remaining findings on
3. Proposed handling under the existing SECURITY.md (its windows are written for S-Code's own vulnerabilities; applying them to third-party findings is my proposal):
4. Where third-party findings would be tracked (proposal). Both advisories are already public. SECURITY.md's private channel exists to keep S-Code's own vulnerabilities undisclosed, so it doesn't fit here. I propose one public issue per unfixed advisory, labelled 5. Dependabot: the exact administrator check. The last alert is #11 (GHSA-hxh3-vqpv-xpqv, created 2026-10-01T04:00Z), and nothing has been created since. Someone with admin rights on
One possible lead, unconfirmed: the repository now lives under the |
weiddeng
left a comment
There was a problem hiding this comment.
Reviewed current head ecce9e7. The dependency updates and overrides resolve to the intended patched versions, and the production-only documentation rebuild validates the vinext/shadcn development-dependency classification. The focused documentation verification and required CI are green. The disclosed upstream-unfixed build-time advisories should remain tracked, but they do not block these available fixes.
Patches every fixable npm advisory in
webanddocs-site, moves two build-only tools todevDependencieswith a regression that enforces it, and records the two advisories that have no upstream fix.Fixed (in-range lockfile updates)
source-map-js1.2.1 → 1.2.2 inwebanddocs-site(GHSA-68fv-2mgg-jv7q, high)proxy-addr2.0.7 → 2.0.8 indocs-site(GHSA-jqcg-44mw-7w3h, critical)@modelcontextprotocol/sdk1.30.0 → 1.32.1 indocs-site(GHSA-6qxp-vccf-f47h, high)hono4.13.5 → 4.13.13 indocs-site(GHSA-hxh3-vqpv-xpqv; supersedes build(deps): bump hono from 4.13.5 to 4.13.12 in /docs-site #120)postcss-selector-parser7.1.5 → 7.1.6 indocs-site(GHSA-rj75-hqrm-r3gf, moderate)Fixed (patch-level overrides through the existing
overridesmechanism)miniflare.sharp0.35.4 → 0.35.5 (GHSA-wq5f-xc86-pv6w, high)oxfmt.tinypool2.1.0 → 2.1.2 (GHSA-5gmw-xhrv-c9v3 and GHSA-85c8-ppgw-ccpr, critical)Reclassified (not remediation)
shadcnandvinextmove todevDependencies. Neither supported deployment needs them at runtime: the GitHub Pages site builds from production dependencies alone, and the Workerdist/imports only Node built-ins.tests/test-community-docs-site.shnow rebuilds the Pages site from a production-only install, and fails ifvinextis present or the output differs.docs-site/PUBLISHING.mdrecords this deployment contract.Audit on the head
web: 0 vulnerabilities.docs-siteproduction audit (the CI gate,--omit=dev --audit-level=high): 4 moderate entries (sprintf-js), 0 high.docs-sitefull audit: 13 entries from 2 unique advisories, neither with a patched release:bracesGHSA-vfj7-8cjw-p6xm (high, dev-only, build time);sprintf-jsGHSA-hp3w-g68c-fv3c (moderate, build time viagray-matter).Open maintainer decisions
Nothing is suppressed in this PR, and no exception mechanism is added. The handling of the two unfixed advisories, where they are tracked, and the Dependabot alert gap are proposals in the comments. None of them has been accepted yet.
🤖 Generated with Claude Code