Skip to content

security: pnpm 11.1.3 is affected by 14 advisories (8 high) — bump to >= 11.8.0 #486

Description

@EricAndrechek

Problem

The repo pins pnpm 11.1.3, which is affected by 14 published advisories — 8 high, 6 medium. Surfaced by CodeRabbit on #485; the numbers below are from the GitHub Advisory Database (gh api "/advisories?ecosystem=npm&affects=pnpm"), not from the review.

Severity Advisory Vulnerable Patched
high GHSA-qrv3-253h-g69c >= 11.0.0, < 11.8.0 11.8.0
high GHSA-72r4-9c5j-mj57 >= 11.0.0, < 11.7.0 11.7.0
high GHSA-fr4h-3cph-29xv >= 11.0.0, < 11.7.0 11.7.0
high GHSA-w466-c33r-3gjp >= 11.0.0, < 11.5.3 11.5.3
high GHSA-gj8w-mvpf-x27x >= 11.0.0, < 11.5.3 11.5.3
high GHSA-5wx6-mg75-v57r >= 11.0.0, < 11.5.3 11.5.3
high GHSA-rxhj-4m44-96r4 >= 11.0.0, < 11.4.0 11.4.0
high GHSA-hwx4-2j3j-g496 >= 11.0.0, < 11.4.0 11.4.0
medium GHSA-4gxm-v5v7-fqc4 >= 11.0.0, < 11.5.3 11.5.3
medium GHSA-3qhv-2rgh-x77r >= 11.0.0, < 11.5.3 11.5.3
medium GHSA-cjhr-43r9-cfmw >= 11.0.0, < 11.4.0 11.4.0
medium GHSA-p4xf-rf54-rj3x >= 11.0.0, < 11.4.0 11.4.0
medium GHSA-q6j5-fjx5-2mc3 >= 11.0.0, < 11.4.0 11.4.0
medium GHSA-54hh-g5mx-jqcp >= 11.0.0, < 11.4.0 11.4.0

Corrected 2026-08-18. This table originally listed ten advisories. The real
count against 11.1.3 is fourteen (8 high, 6 medium) — flagged during review
of the fixing PR and re-derived from
gh api "/advisories?ecosystem=npm&affects=pnpm" --paginate with range matching
against 11.1.3. The original included GHSA-v23m-ccfg-pq9h, whose range is
>= 11.3.0, < 11.5.3 and therefore does not cover 11.1.3, and omitted five
that do: GHSA-hwx4-2j3j-g496 (high), GHSA-cjhr-43r9-cfmw,
GHSA-p4xf-rf54-rj3x, GHSA-q6j5-fjx5-2mc3, GHSA-54hh-g5mx-jqcp (medium).
"8 high" came out right only because the wrongly-included high and the omitted
high cancelled. The remediation is unchanged: the floor is still 11.8.0.

Minimum safe version: 11.8.0.

Why this matters here specifically

pnpm-workspace.yaml sets allowBuilds: for esbuild, sharp, and workerd — so postinstall scripts do run in CI. GHSA-5wx6-mg75-v57r is precisely "Manifest identity spoof satisfies allowBuilds and runs attacker code", which makes that combination the sharp end of this list rather than a theoretical one.

pnpm runs in every CI job via setup-env, and in publish-npm.yml — the workflow that holds id-token: write for npm trusted publishing.

Scope

Eight declaration lines across six files, plus the lockfile:

package.json:5                             "packageManager": "pnpm@11.1.3"
.github/workflows/publish-npm.yml:53       version: "11.1.3"   (dev job)
.github/workflows/publish-npm.yml:107      version: "11.1.3"   (release job)
.github/actions/setup-env/action.yml:202   version: "11.1.3"
docs/src/content/docs/development.md:21    prerequisites table + corepack line
docs/src/content/docs/development.md:40    "verify your setup" snippet
README.md:124                              "pnpm 11+" floor
AGENTS.md:114                              "pnpm (>= 11.1)" floor

Corrected 2026-08-18. Line numbers for publish-npm.yml were 89/172; they are
53/107. Three more declaration sites were missed — development.md's verify-setup
snippet is the notable one, since running it would have confirmed a vulnerable
install as correct.

pnpm-lock.yaml needs regenerating, and pnpm 11.8+ may bump lockfileVersion — which is why this wants its own PR and its own full CI run rather than riding along with something else.

Note minimumReleaseAge: 10080 in pnpm-workspace.yaml means the 7-day cooldown applies to the bump itself unless the target release is already older than that.

Not fixed in #485

#485 is release tooling. The pnpm pin is pre-existing, touches six files plus a regenerated lockfile, and deserves independent CI validation — folding it in would have muddied a PR that had already been through ten review rounds. Filing here instead.

Acceptance

  • All eight lines (six files) on >= 11.8.0 (latest stable preferred)
  • pnpm-lock.yaml regenerated; any lockfileVersion change called out in the PR
  • make ci green
  • gh api "/advisories?ecosystem=npm&affects=pnpm" shows no remaining advisory matching the pinned version

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/infraCI, build, deploy, Docker, releasesecuritySecurity-sensitive issue or fix

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions