Skip to content
QuenchWorks

pnpm 9.15.9

Runtime · Build tool · standard · v9.15.9

F 103nonrootcosign 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
59.9 MB
Last rebuilt
2026-06-28

Security report (Trivy)

F· 0/100103 fixable · rebuild clears them

Vulnerability detail

pnpm 9.15.9 · 81 CVE
CVESeverityPackageInstalledFixed inTitle
CVE-2026-59873CRITICALtar6.2.17.5.19tar: node-tar: Denial of Service via crafted gzip bomb
CVE-2026-59873CRITICALtar7.5.167.5.19tar: node-tar: Denial of Service via crafted gzip bomb
CVE-2025-64756HIGHglob10.4.511.1.0, 10.5.0glob: glob: Command Injection Vulnerability via Malicious Filenames
CVE-2025-69262HIGHpnpm9.15.910.27.0pnpm: pnpm: Remote code execution via command injection in tokenHelper environment variable substitution
CVE-2025-69263HIGHpnpm9.15.910.26.0pnpm: pnpm Lockfile Integrity Bypass
CVE-2026-13149HIGHbrace-expansion2.0.15.0.7, 1.1.16, 2.1.2brace-expansion: Brace-expansion: Denial of Service due to exponential-time complexity
CVE-2026-13149HIGHbrace-expansion5.0.65.0.7, 1.1.16, 2.1.2brace-expansion: Brace-expansion: Denial of Service due to exponential-time complexity
CVE-2026-14257HIGHnpm11.17.0-r212.0.1-r2brace-expansion: Brace-expansion: Denial of Service via memory exhaustion in expand() function
CVE-2026-14257HIGHbrace-expansion2.0.15.0.8, 3.0.3, 2.1.3, 1.1.17brace-expansion: Brace-expansion: Denial of Service via memory exhaustion in expand() function
CVE-2026-14257HIGHbrace-expansion5.0.65.0.8, 3.0.3, 2.1.3, 1.1.17brace-expansion: Brace-expansion: Denial of Service via memory exhaustion in expand() function
CVE-2026-14456HIGHlibcrypto33.6.3-r33.6.3-r5openssl: OpenSSL: Denial of Service via unbounded memory growth in QUIC server
CVE-2026-14456HIGHlibssl33.6.3-r33.6.3-r5openssl: OpenSSL: Denial of Service via unbounded memory growth in QUIC server
CVE-2026-23745HIGHtar6.2.17.5.3node-tar: tar: node-tar: Arbitrary file overwrite and symlink poisoning via unsanitized linkpaths in archives
CVE-2026-23950HIGHtar6.2.17.5.4node-tar: tar: node-tar: Arbitrary file overwrite via Unicode path collision race condition
CVE-2026-24842HIGHtar6.2.17.5.7node-tar: tar: node-tar: Arbitrary file creation via path traversal bypass in hardlink security check
CVE-2026-26960HIGHtar6.2.17.5.8node-tar: node-tar: Arbitrary file read/write via malicious archive hardlink creation
CVE-2026-26996HIGHminimatch9.0.510.2.1, 9.0.6, 8.0.5, 7.4.7, 6.2.1, 5.1.7, 4.2.4, 3.1.3minimatch: minimatch: Denial of Service via specially crafted glob patterns
CVE-2026-27903HIGHminimatch9.0.510.2.3, 9.0.7, 8.0.6, 7.4.8, 6.2.2, 5.1.8, 4.2.5, 3.1.3minimatch: minimatch: Denial of Service due to unbounded recursive backtracking via crafted glob patterns
CVE-2026-27904HIGHminimatch9.0.510.2.3, 9.0.7, 8.0.6, 7.4.8, 6.2.2, 5.1.8, 4.2.5, 3.1.4minimatch: Minimatch: Denial of Service via catastrophic backtracking in glob expressions
CVE-2026-29786HIGHtar6.2.17.5.10node-tar: hardlink path traversal via drive-relative linkpath
CVE-2026-31802HIGHtar6.2.17.5.11tar: tar: File overwrite via drive-relative symlink traversal
CVE-2026-50015HIGHpnpm9.15.910.34.0, 11.4.0pnpm: pnpm: Arbitrary file write/delete due to lack of path validation in patch files
CVE-2026-50016HIGHpnpm9.15.910.34.0, 11.4.0pnpm: pnpm: Arbitrary code execution due to path traversal in dependency aliases
CVE-2026-55487HIGHpnpm9.15.910.34.2, 11.5.3pnpm: pnpm: Supply chain compromise via manipulated package source strings
CVE-2026-55697HIGHpnpm9.15.910.34.2, 11.5.3pnpm: pnpm: Arbitrary code execution via improper handling of config dependencies
CVE-2026-55698HIGHpnpm9.15.910.34.2, 11.5.3pnpm: pnpm: Arbitrary code execution via malicious package-manager lockfile
CVE-2026-58043HIGHnodejs-2222.23.1-r022.23.2-r0nodejs: Node.js: Unauthorized filesystem access due to Permission Model enforcement flaw
CVE-2026-59871HIGHnpm11.17.0-r212.0.0-r1node-tar: node-tar: Denial of Service due to incorrect PAX path handling
CVE-2026-59873HIGHnpm11.17.0-r212.0.0-r1tar: node-tar: Denial of Service via crafted gzip bomb
CVE-2026-59874HIGHnpm11.17.0-r212.0.0-r1tar: Node-tar: Denial of Service via malformed tar archive header
CVE-2026-59874HIGHtar6.2.17.5.18tar: Node-tar: Denial of Service via malformed tar archive header
CVE-2026-59874HIGHtar7.5.167.5.18tar: Node-tar: Denial of Service via malformed tar archive header
CVE-2026-69152HIGHbrace-expansion2.0.11.1.18, 2.1.4, 3.0.6, 5.0.9brace-expansion: DoS via unbounded intermediate arrays, bypassing the CVE-2026-14257 mitigation
CVE-2026-69152HIGHbrace-expansion5.0.61.1.18, 2.1.4, 3.0.6, 5.0.9brace-expansion: DoS via unbounded intermediate arrays, bypassing the CVE-2026-14257 mitigation
CVE-2026-69192HIGHip-address10.2.010.3.1ip-address: ip-address: Inconsistent IP address parsing leads to Server-Side Request Forgery (SSRF) and trust-boundary bypass
CVE-2026-69192HIGHip-address9.0.510.3.1ip-address: ip-address: Inconsistent IP address parsing leads to Server-Side Request Forgery (SSRF) and trust-boundary bypass
CVE-2026-73566HIGHnode-gyp13.0.0-r113.0.1-r1tar: node-tar: Denial of Service via crafted long-path tar archive
CVE-2026-73566HIGHnpm11.17.0-r212.0.1-r2tar: node-tar: Denial of Service via crafted long-path tar archive
CVE-2026-73566HIGHtar6.2.17.5.21tar: node-tar: Denial of Service via crafted long-path tar archive
CVE-2026-73566HIGHtar7.5.167.5.21tar: node-tar: Denial of Service via crafted long-path tar archive
CVE-2026-82392HIGHpnpm9.15.910.34.5, 11.11.0pnpm: pnpm: Arbitrary Code Execution via Path Traversal
CVE-2026-82393HIGHpnpm9.15.910.34.5, 11.11.0pnpm: pnpm: Arbitrary file write and code execution via path traversal in tarball dependency manifest
GHSA-72r4-9c5j-mj57HIGHpnpm9.15.910.34.4, 11.7.0pnpm: `patch-remove` could delete project-selected files outside the patches directory
GHSA-fr4h-3cph-29xvHIGHpnpm9.15.910.34.4, 11.7.0pnpm: Hoisted install imports lockfile alias outside node_modules
GHSA-qrv3-253h-g69cHIGHpnpm9.15.910.34.4, 11.8.0pnpm: Path traversal in configDependencies env lockfile allows symlink creation outside node_modules/.pnpm-config
CVE-2024-47829MEDIUMpnpm9.15.910.0.0pnpm: pnpm uses the md5 path shortening function causes packet paths to coincide, which causes indirect packet overwriting
CVE-2026-15157MEDIUMundici6.27.06.28.0, 7.29.0, 8.9.0undici: undici: HTTP header injection via unvalidated blob-like body type property
CVE-2026-16728MEDIUMundici6.27.06.28.0, 7.29.0, 8.9.0undici: undici: Response desynchronization via retry interceptor with mismatched Content-Length
CVE-2026-16729MEDIUMundici6.27.06.28.0, 7.29.0, 8.9.0undici: Undici: Cookie attribute injection allows bypassing security protections
CVE-2026-23888MEDIUMpnpm9.15.910.28.1pnpm: pnpm: Arbitrary file write via path traversal in binary fetcher leading to remote code execution
CVE-2026-23889MEDIUMpnpm9.15.910.28.1pnpm: pnpm: Arbitrary file write via path traversal on Windows
CVE-2026-23890MEDIUMpnpm9.15.910.28.1pnpm: pnpm: Arbitrary code execution via path traversal in bin linking
CVE-2026-24056MEDIUMpnpm9.15.910.28.2pnpm: pnpm symlink traversal in file:/git dependencies
CVE-2026-24131MEDIUMpnpm9.15.910.28.2pnpm: pnpm: Arbitrary file permission modification via directory traversal
CVE-2026-33750MEDIUMbrace-expansion2.0.15.0.5, 3.0.2, 2.0.3, 1.1.13brace-expansion: brace-expansion: Denial of Service via zero step value in brace pattern
CVE-2026-42338MEDIUMip-address9.0.510.1.1ip-address: ip-address: Cross-site scripting via improper HTML escaping of untrusted input
CVE-2026-48995MEDIUMpnpm9.15.910.33.4, 11.0.7pnpm: pnpm: Supply chain compromise from unverified dependencies
CVE-2026-50014MEDIUMpnpm9.15.910.34.0, 11.4.0pnpm: pnpm: Arbitrary Code Execution via Malicious Lockfile
CVE-2026-50017MEDIUMpnpm9.15.910.34.0, 11.4.0pnpm: pnpm: Information disclosure of authentication credentials via malicious .npmrc file
CVE-2026-50021MEDIUMpnpm9.15.911.4.0, 10.34.1pnpm: pnpm: Integrity bypass allows installation of altered packages via modified lockfile
CVE-2026-50573MEDIUMpnpm9.15.910.34.0, 11.4.0pnpm: pnpm: Package integrity check bypass allows installation of malicious content
CVE-2026-53655MEDIUMtar6.2.17.5.16node-tar: node-tar: File smuggling due to inconsistent tar archive parsing
CVE-2026-54272MEDIUMip-address10.2.010.2.1ip-address: ip-address: Server-Side Request Forgery via IPv4-mapped/NAT64 IPv6 address misclassification
CVE-2026-55180MEDIUMpnpm9.15.910.34.2, 11.5.3pnpm: pacquet: pnpm and pacquet: Information disclosure of environment secrets via improper environment variable expansion
CVE-2026-55699MEDIUMpnpm9.15.910.34.2, 11.5.3pnpm: pnpm: Denial of Service due to improper handling of malicious package manifest bin keys
CVE-2026-56847MEDIUMnodejs-2222.23.1-r022.23.2-r0nodejs: Node.js: Permission Model flaw allows trace logs to bypass filesystem write restrictions
CVE-2026-56850MEDIUMnodejs-2222.23.1-r022.23.2-r0nodejs: Node.js: mTLS client identities can be reused due to HTTPS Agent connection flaw
CVE-2026-58055MEDIUMlibnghttp2-141.69.0-r01.70.0-r0nghttp2: nghttp2: HTTP Request/Response Smuggling and Response-Queue Poisoning via ambiguous HTTP/1.1 Upgrade requests
CVE-2026-59871MEDIUMtar6.2.17.5.18node-tar: node-tar: Denial of Service due to incorrect PAX path handling
CVE-2026-59871MEDIUMtar7.5.167.5.18node-tar: node-tar: Denial of Service due to incorrect PAX path handling
CVE-2026-59875MEDIUMnpm11.17.0-r212.0.0-r1node-tar: node-tar: Denial of Service via crafted archive with NUL bytes in metadata
CVE-2026-59875MEDIUMtar6.2.17.5.17node-tar: node-tar: Denial of Service via crafted archive with NUL bytes in metadata
CVE-2026-59875MEDIUMtar7.5.167.5.17node-tar: node-tar: Denial of Service via crafted archive with NUL bytes in metadata
CVE-2026-6791MEDIUMglibc2.43-r92.43-r10glibc: Glibc: Denial of Service via stack exhaustion during tilde expansion
CVE-2026-6791MEDIUMglibc-locale-posix2.43-r92.43-r10glibc: Glibc: Denial of Service via stack exhaustion during tilde expansion
CVE-2026-6791MEDIUMld-linux2.43-r92.43-r10glibc: Glibc: Denial of Service via stack exhaustion during tilde expansion
CVE-2026-69198MEDIUMip-address10.2.010.2.2ip-address: ip-address: Server-Side Request Forgery (SSRF) and trust-boundary bypass
CVE-2026-85091MEDIUMzlib1.3.2-r31.3.3-r0zlib versions 1.3.1.2 through 1.3.2 contain a heap buffer overflow vul ...
CVE-2025-5889LOWbrace-expansion2.0.12.0.2, 1.1.12, 3.0.1, 4.0.1brace-expansion: juliangruber brace-expansion index.js expand redos
CVE-2026-54876LOWlibcrypto33.6.3-r33.6.3-r4openssl: OpenSSL: Memory leak leads to Denial of Service in OCSP response checking
CVE-2026-54876LOWlibssl33.6.3-r33.6.3-r4openssl: OpenSSL: Memory leak leads to Denial of Service in OCSP response checking
4
Critical
51
High
45
Medium
3
Low
0
Unknown

Security report (Trivy) · pnpm 9.15.9

Published versions

14 tags

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

VersionSizePublishedDigest
11.22.0latest61.3 MB2026-08-26sha256:dada76c73a92…
11.21.060.7 MB2026-08-10sha256:349ca2785aca…
11.19.060.6 MB2026-08-02sha256:5e71ddcd82f2…
11.18.060.8 MB2026-07-30sha256:6651a33a5602…
11.17.061.4 MB2026-07-26sha256:c1672159e7ea…
11.16.064.4 MB2026-07-23sha256:86e9955c2253…
11.15.164.3 MB2026-07-21sha256:1f4da2495d09…
11.13.060.3 MB2026-07-15sha256:406b8ffd5605…
11.12.060.4 MB2026-07-12sha256:7393ab80db39…
11.11.060.3 MB2026-07-09sha256:c6d0616e4093…
11.10.060.3 MB2026-07-05sha256:ac595ece57bf…
11.9.060.3 MB2026-07-04sha256:43e60aeafb92…
10.34.460.4 MB2026-06-28sha256:fae7eaeb4c99…
9.15.959.9 MB2026-06-28sha256:e5ba85caf5cf…

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:9.15.9

Or pull it directly

docker pull ghcr.io/quenchworks/images/pnpm:9.15.9
Version line
9.15.9
Latest line
11.22.0, 11.21.0, 11.19.0, 11.18.0, 11.17.0, 11.16.0, 11.15.1, 11.13.0, 11.12.0, 11.11.0, 11.10.0, 11.9.0, 10.34.4, 9.15.9
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:9.15.9 \
  --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:9.15.9 \
  --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:9.15.9 \
  --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 9.15.9

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:9.15.959.9 MBrebuilt 77 days ago
# Build stage: pnpm resolves, locks, and builds (dev deps included here).
FROM ghcr.io/quenchworks/images/pnpm:9.15.9 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.7.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 9.15.9 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