Skip to content
QuenchWorks

pnpm 11.28.5

Runtime · Build tool · standard · v11.28.5

D 11nonrootcosign signedSPDX SBOMSLSA provenanceamd64 · arm64

Node base image with pnpm preinstalled via corepack, used as the build stage for pnpm projects. Lines 10/11.

Version line

The latest line lives at the base page; older lines have their own page so you can pin and verify exactly that version.

Signed
cosign keyless
SBOM
SPDX, on digest
Provenance
SLSA build
Architectures
amd64, arm64
Runs as
nonroot (uid 1001)
Image size
61.0 MB
Last rebuilt
2026-10-22

Security report (Trivy)

D· 0/10011 fixable · rebuild clears them

Vulnerability detail

pnpm 11.28.5 · 11 CVE
CVESeverityPackageInstalledFixed inTitle
CVE-2026-105482HIGHnodejs-2222.23.2-r122.23.4-r0nodejs: nodejs: dns.resolve truncates hostnames containing a NUL character
CVE-2026-106069HIGHnodejs-2222.23.2-r122.23.4-r0nodejs: nodejs: TLS certificate hostname bypass via non-canonical IP hostnames
CVE-2026-109383HIGHundici6.29.06.29.1, 7.30.1, 8.12.2undici: undici: Certificate validation bypass via dropped TLS options in Agent
CVE-2026-109869HIGHundici6.29.06.29.1, 7.30.1, 8.12.2undici: undici: Denial of Service via unhandled stream error on excessive content encodings
CVE-2026-87018HIGHundici6.29.06.29.1, 7.30.1, 8.12.2undici: undici: Denial of Service via TLS renegotiation with mismatched certificate
CVE-2026-105481MEDIUMnodejs-2222.23.2-r122.23.4-r0nodejs: nodejs: Response desynchronization via improper HTTP keep-alive connection reuse
CVE-2026-106072MEDIUMnodejs-2222.23.2-r122.23.4-r0nodejs: nodejs: Authentication bypass via non-canonical IPv4 hostname verification
CVE-2026-106074MEDIUMnodejs-2222.23.2-r122.23.4-r0nodejs: nodejs: predictable random values via snapshot entropy cache reuse
CVE-2026-109924MEDIUMundici6.29.06.29.1, 7.30.1, 8.12.2undici: undici: Denial of Service via memory exhaustion in EventSource client
CVE-2026-109932MEDIUMundici6.29.06.29.1, 7.30.1, 8.12.2undici: undici: Denial of Service via unbounded WebSocket PONG buffering
CVE-2026-106073LOWnodejs-2222.23.2-r122.23.4-r0nodejs: Node.js: Filesystem read permission bypass via fs.realpathSync()
0
Critical
5
High
5
Medium
1
Low
0
Unknown

Security report (Trivy) · pnpm 11.28.5

Published versions

2 tags

Each tag is a multi-arch index (amd64 + arm64) pinned by digest. Tagged by version, never :latest.

VersionSizePublishedDigest
12.10.1latest78.1 MB2026-10-22sha256:e105f6afa031…
11.28.561.0 MB2026-10-22sha256:c079f65184a9…

Use it as a base image

Reference it in the FROM line of your Dockerfile. Nonroot, read-only root filesystem, built for amd64 and arm64.

FROM ghcr.io/quenchworks/images/pnpm:11.28.5

Or pull it directly

docker pull ghcr.io/quenchworks/images/pnpm:11.28.5
Version line
11.28.5
Latest line
12.10.1, 11.28.5
Architectures
amd64, arm64
Runs as
nonroot (uid 1001)
Root filesystem
read-only
License
MIT

Verify the supply chain

This image is cosign-signed and carries an SPDX SBOM and a SLSA build-provenance attestation on the same digest. Check all three before you build on it:

# 1. signature — built and signed by QuenchWorks CI
cosign verify ghcr.io/quenchworks/images/pnpm:11.28.5 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

# 2. SLSA build provenance — which workflow built it, from what
cosign verify-attestation --type https://slsa.dev/provenance/v1 ghcr.io/quenchworks/images/pnpm:11.28.5 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

# 3. SPDX SBOM — the package inventory
cosign verify-attestation --type https://spdx.dev/Document/v2.3 ghcr.io/quenchworks/images/pnpm:11.28.5 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

See the SBOM & provenance guide for reading the SBOM and using these checks in CI.

Best-practice Dockerfile for 11.28.5

pnpm leads: enabled here through corepack on the pnpm base, it resolves and locks the dependency set, builds, then a clean node base receives only the production node_modules and the built output.

ghcr.io/quenchworks/images/pnpm:11.28.561.0 MBrebuilt 6 days ago
# Build stage: pnpm resolves, locks, and builds (dev deps included here).
FROM ghcr.io/quenchworks/images/pnpm:12.9.1 AS build
USER root
WORKDIR /app
ENV PNPM_HOME=/tmp/pnpm
COPY package.json pnpm-lock.yaml ./
RUN ["pnpm", "install", "--frozen-lockfile"]
COPY . .
RUN ["pnpm", "run", "build"]
# Re-resolve to production-only for the runtime stage.
RUN ["pnpm", "install", "--prod", "--frozen-lockfile"]
# Runtime stage: prod node_modules + built dist on a slim node base, nonroot.
FROM ghcr.io/quenchworks/images/node:26.10.0 AS runtime
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
COPY --from=build /app/package.json ./package.json
USER 1001
EXPOSE 3000
CMD ["node", "dist/server.js"]

This Dockerfile is pinned to the 11.28.5 line. For the line-by-line walkthrough and ecosystem variants (npm/Yarn, pip/uv/Poetry, Maven/Gradle), see the Build a Node appguide.

Upstream project: https://pnpm.io