[Bug]: 12 packages in pnpm-lock.yaml have high or critical security advisories#23907

opened9h agobyDDragonVibes

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

Build, CI, or release tooling. The affected packages sit under apps/server, apps/web, apps/marketing, scripts, and the deploy tooling, but the fix is in pnpm-lock.yaml and the package manifests.

Steps to reproduce

  1. Check out main. I used 1c8e79ec18, and 51273020db gives the same result.
  2. Run osv-scanner scan source --lockfile pnpm-lock.yaml.

Expected behavior

The lockfile resolves no package version that has a published high or critical advisory, where a fixed release exists.

Actual behavior

The scan reports 12 packages with 16 high or critical advisories between them. Eight of the packages have a fixed release. PR #23906 moves those eight onto the fixed release. The four that are left have no fixed release, or need a major-version upgrade.

Severity is the CVSS score that OSV reports. The "Where T3 Code uses it" column comes from the lockfile's dependency paths. I did not test whether any advisory is exploitable through T3 Code itself.

Fixed in #23906

PackageFrom → toAdvisoryCVECVSSIssueWhere T3 Code uses it
@modelcontextprotocol/sdk1.29.0 → 1.32.0GHSA-22jm-h49p-29qwCVE-2026-1117678.6Experimental tasks are not bound to the session that created them.apps/server. It is a peer of @anthropic-ai/claude-agent-sdk, which the Claude provider uses.
GHSA-46jr-4wx8-v453CVE-2026-1117687.5One HTTP request within the default size limit can exhaust server memory during validation.
GHSA-6qxp-vccf-f47hCVE-2026-1048507.5The OAuth client can send credentials to an authorization server that the MCP server chooses.
GHSA-rvq5-wwqv-78pqCVE-2026-1117716.8Server bearer auth accepts tokens issued for another service.
GHSA-6prh-2h8m-c8cwCVE-2026-1117696.5HTTP client transports and OAuth requests follow cross-origin redirects and re-send credentials.
dompurify3.4.16 → 3.4.17GHSA-cg2g-xh64-v4q7none assigned9.2SAFE_FOR_TEMPLATES bypass. Split template expressions survive in attached shadow-root content.apps/web. MermaidDiagram.tsx sanitizes diagram SVG, and diagrams can come from untrusted PR text.
GHSA-mrv2-3pqr-j5jrnone assigned7.6IN_PLACE: a hook that removes a parent or a sibling leaves event handlers armed on the detached subtree.
GHSA-c6gr-qvv4-5v3fnone assignednot scoredThe SMIL attributeName=href guard is skipped when PARSER_MEDIA_TYPE is application/xhtml+xml.
seroval1.5.4 → 1.7.0GHSA-p6vx-979v-rg4cCVE-2026-1048469.8fromJSON() Promise thenable assimilation calls plugin-produced callables. This bypasses an earlier fix.apps/web, through @tanstack/router-core.
GHSA-jp82-f5mq-hwhpCVE-2026-1048457.5An unchecked TypedArray length in JSON deserialization can exhaust memory.
shell-quote1.10.0 → 1.12.0GHSA-pqg4-j6r4-53mvCVE-2026-1024229.2quote() command injection through a line terminator in a token after a { comment } token.Dev tooling, through react-devtools-core (React Native) and @alchemy.run/sigil.
proxy-addr2.0.7 → 2.0.8GHSA-jqcg-44mw-7w3hCVE-2026-907119.1IP spoofing through an IPv4-mapped IPv6 trust subnet.express, which only the MCP SDK pulls in.
sharp0.35.4 → 0.35.5GHSA-wq5f-xc86-pv6wCVE-2026-1141118.9Vulnerable bundled librsvg (CVE-2026-96889).apps/marketing image builds, scripts/export-android-icons.ts, and alchemy's Cloudflare runtime.
source-map-js1.2.1 → 1.2.2GHSA-68fv-2mgg-jv7qCVE-2026-937498.7Event-loop denial of service through indexed source-map section offsets.Build tooling, through magicast under astro.
path-to-regexp6.1.0 → 6.3.0GHSA-9wv6-86v2-598jCVE-2024-45296, CVE-2026-48677.7Generated regular expressions backtrack (ReDoS).Deploy config, through @vercel/config → @vercel/routing-utils. That package pins 6.1.0 exactly, so the PR adds a pnpm override.

Still open

PackageAdvisoryCVECVSSIssueReached throughWhy it is not in #23906
braces 3.0.3GHSA-vfj7-8cjw-p6xmCVE-2026-936878.7Stack exhaustion from deeply nested patterns.micromatchNo fixed release yet.
node-forge 1.4.0GHSA-86w9-cpqp-85rvCVE-2026-33894, CVE-2026-853938.7RSA PKCS#1 v1.5 signature verification accepts extra nested DigestAlgorithm elements.@expo/cli, @expo/code-signing-certificatesNo fixed release yet.
http-cache-semantics 4.2.0GHSA-ch52-4w7c-c8xpCVE-2026-937488.7max-stale handling can disclose cached responses across users.astro, cacheable-requestNo fixed release yet.
uuid 7.0.3GHSA-w5hq-g745-h8pqCVE-2026-41907, CVE-2026-419887.5Missing buffer bounds check in v3, v5, and v6 when buf is passed.xcode (Expo config plugins)The first fixed release is 11.1.1, a major-version jump inside Expo's tooling. That needs its own change.

Impact

Minor bug or occasional failure. I did not see any failure. The risk is the advisories above. Most of the affected paths are build or dev tooling. The runtime paths are the MCP SDK on the server, and DOMPurify and seroval in the web client.

Version or commit

main @ 51273020db

Environment

macOS 26 (Apple Silicon), Node 24.22.1, pnpm 12.14.0, osv-scanner (Homebrew).

Logs or stack traces

shell
1$ osv-scanner scan source --lockfile pnpm-lock.yaml
2# high or critical, by package (CVSS):
3@modelcontextprotocol/sdk@1.29.0 8.6 dompurify@3.4.16 9.2
4seroval@1.5.4 9.8 shell-quote@1.10.0 9.2
5proxy-addr@2.0.7 9.1 sharp@0.35.4 8.9
6source-map-js@1.2.1 8.7 path-to-regexp@6.1.0 7.7
7braces@3.0.3 8.7 node-forge@1.4.0 8.7
8http-cache-semantics@4.2.0 8.7 uuid@7.0.3 7.5

Workaround

None needed beyond #23906. After that PR, the same scan reports 4 high or critical packages instead of 12. The 4 are the "Still open" rows above.