Skip to content
Heist/ feed
Back to feed
High

Nx: Zip-Slip in the self-hosted remote cache

Type: advisorySources: OSV

Nx is a monorepo solution for TypeScript and polyglot codebases. From version 20.8.0 until 22.7.7 and 23.0.2, the Nx self-hosted HTTP remote cache extracts downloaded cache artifacts without constraining where files are written. A malicious or on-path (MITM) remote cache server can return a crafted tar archive whose entries escape the cache directory and write to arbitrary locations on the machine running Nx, which can be escalated to remote code execution. Nx's default local cache and Nx Cloud are not affected; only workspaces configured to use a self-hosted remote cache are affected. This issue is fixed in versions 22.7.7 and 23.0.2.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-71476
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 02:54 UTC · Revision 1

Source evidence

Nx: Zip-Slip in the self-hosted remote cache

core-osv · Original source

Published 6 Aug 2026, 20:07 UTC

Nx is a monorepo solution for TypeScript and polyglot codebases. From version 20.8.0 until 22.7.7 and 23.0.2, the Nx self-hosted HTTP remote cache extracts downloaded cache artifacts without constraining where files are written. A malicious or on-path (MITM) remote cache server can return a crafted tar archive whose entries escape the cache directory and write to arbitrary locations on the machine running Nx, which can be escalated to remote code execution. Nx's default local cache and Nx Cloud are not affected; only workspaces configured to use a self-hosted remote cache are affected. This issue is fixed in versions 22.7.7 and 23.0.2.

osv:CVE-2026-71476
Complete source record
{
  "id": "0d659d97b0bc360e1ac097479337a8db616f4ed5f9b61152313768641e1c04a4",
  "url": "https://osv.dev/vulnerability/CVE-2026-71476",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Nx: Zip-Slip in the self-hosted remote cache",
    "summary": "Nx is a monorepo solution for TypeScript and polyglot codebases. From version 20.8.0 until 22.7.7 and 23.0.2, the Nx self-hosted HTTP remote cache extracts downloaded cache artifacts without constraining where files are written. A malicious or on-path (MITM) remote cache server can return a crafted tar archive whose entries escape the cache directory and write to arbitrary locations on the machine running Nx, which can be escalated to remote code execution. Nx's default local cache and Nx Cloud are not affected; only workspaces configured to use a self-hosted remote cache are affected. This issue is fixed in versions 22.7.7 and 23.0.2.",
    "evidence": "osv:CVE-2026-71476",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-71476",
      "aliases": [
        "CVE-2026-71476",
        "GHSA-vp3h-ghgh-jr7g"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/nrwl/nx",
              "type": "GIT",
              "events": [
                {
                  "introduced": "b3c1404b02a54aa5b8f58e5321d891996b1ef515"
                },
                {
                  "fixed": "e72ee0dd79748aa57a4535ef48a2bee025e4b590"
                },
                {
                  "introduced": "d9d260c1eeea2a160ba39a704fd4821fbc9e0e22"
                },
                {
                  "fixed": "fea2cabbccaa35e8fa38e1fb148941ca77ab019b"
                },
                {
                  "fixed": "2b20c2da39d263c32ae05767577589481a309fee"
                },
                {
                  "fixed": "a82807621e4176e37909d2c1afede661b45cc30"
                },
                {
                  "fixed": "ad296578fe980a4aad66f8af0add21f6ddf907d9"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "20.8.0"
                      },
                      {
                        "fixed": "22.7.7"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "23.0.0"
                      },
                      {
                        "fixed": "23.0.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "2b20c2da39d263c32ae05767577589481a309fee"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "a82807621e4176e37909d2c1afede661b45cc30"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ad296578fe980a4aad66f8af0add21f6ddf907d9"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "22.7.6",
            "22.7.0-beta.0",
            "23.1.0-beta.4",
            "23.1.0-beta.3",
            "23.0.1",
            "23.1.0-beta.2",
            "23.0.0",
            "23.1.0-beta.1",
            "23.1.0-beta.0",
            "22.7.5",
            "22.7.4",
            "22.7.3",
            "22.7.2",
            "22.7.1",
            "22.7.0",
            "22.7.0-rc.2",
            "22.7.0-rc.1",
            "22.7.0-rc.0",
            "22.7.0-beta.17",
            "22.7.0-beta.16",
            "22.7.0-beta.15",
            "22.7.0-beta.14",
            "22.7.0-beta.13",
            "22.7.0-beta.12",
            "22.7.0-beta.11",
            "22.7.0-beta.10",
            "22.7.0-beta.9",
            "22.7.0-beta.8",
            "22.7.0-beta.7",
            "22.7.0-beta.6",
            "22.7.0-beta.5",
            "22.7.0-beta.4",
            "22.7.0-beta.3",
            "22.7.0-beta.2",
            "22.7.0-beta.1",
            "22.6.0",
            "22.6.0-rc.2",
            "22.6.0-rc.1",
            "22.6.0-rc.0",
            "22.6.0-beta.14",
            "22.6.0-beta.13",
            "22.6.0-beta.12",
            "22.6.0-beta.11",
            "22.6.0-beta.10",
            "22.6.0-beta.9",
            "22.6.0-beta.8",
            "22.6.0-beta.7",
            "22.6.0-beta.6",
            "22.6.0-beta.5",
            "22.6.0-beta.4",
            "22.6.0-beta.3",
            "22.6.0-beta.2",
            "22.6.0-beta.1",
            "22.6.0-beta.0",
            "22.5.0",
            "22.5.0-beta.5",
            "22.5.0-beta.4",
            "22.5.0-beta.3",
            "22.5.0-beta.2",
            "22.5.0-beta.1",
            "22.4.1",
            "22.5.0-beta.0",
            "22.4.0",
            "22.4.0-beta.5",
            "22.4.0-beta.4",
            "22.4.0-beta.3",
            "22.4.0-beta.2",
            "22.4.0-beta.1",
            "22.4.0-beta.0",
            "22.3.0",
            "22.3.0-beta.3",
            "22.3.0-beta.2",
            "22.3.0-beta.1",
            "22.2.3",
            "22.3.0-beta.0",
            "22.2.2",
            "22.2.1",
            "22.2.0",
            "22.2.0-beta.4",
            "22.2.0-beta.3",
            "22.2.0-beta.2",
            "22.2.0-beta.1",
            "22.2.0-beta.0",
            "22.1.1",
            "22.1.0",
            "22.1.0-rc.5",
            "22.1.0-rc.4",
            "22.1.0-rc.3",
            "22.1.0-rc.2",
            "22.1.0-rc.1",
            "22.1.0-rc.0",
            "22.1.0-beta.8",
            "22.1.0-beta.7",
            "22.1.0-beta.6",
            "22.1.0-beta.5",
            "22.1.0-beta.4",
            "22.1.0-beta.3",
            "22.1.0-beta.2",
            "22.1.0-beta.1",
            "22.0.1",
            "22.1.0-beta.0",
            "22.0.0",
            "22.0.0-rc.0",
            "22.0.0-beta.9",
            "22.0.0-beta.8",
            "22.0.0-beta.7",
            "22.0.0-beta.6",
            "22.0.0-beta.5",
            "22.0.0-beta.4",
            "22.0.0-beta.3",
            "22.0.0-beta.2",
            "22.0.0-beta.1",
            "22.0.0-beta.0",
            "21.6.1",
            "21.6.1-rc.0",
            "21.6.1-beta.4",
            "21.6.1-beta.3",
            "21.6.1-beta.2",
            "21.6.1-beta.1",
            "21.5.1",
            "21.6.1-beta.0",
            "21.5.1-beta.5",
            "21.5.1-beta.4",
            "21.5.1-beta.3",
            "21.5.0-beta.2",
            "21.4.0",
            "21.5.0-beta.1",
            "21.5.0-beta.0",
            "21.4.0-beta.12",
            "21.4.0-beta.11",
            "21.4.0-beta.10",
            "21.4.0-beta.9",
            "21.4.0-beta.8",
            "21.4.0-beta.7",
            "21.4.0-beta.6",
            "21.4.0-beta.5",
            "21.4.0-beta.4",
            "21.4.0-beta.3",
            "21.4.0-beta.2",
            "21.4.0-beta.1",
            "21.3.0",
            "21.4.0-beta.0",
            "21.3.0-rc.0",
            "21.3.0-beta.7",
            "21.3.0-beta.6",
            "21.3.0-beta.5",
            "21.3.0-beta.4",
            "21.3.0-beta.3",
            "21.3.0-beta.2",
            "21.3.0-beta.1",
            "21.2.1",
            "21.3.0-beta.0",
            "21.2.0",
            "21.2.0-beta.5",
            "21.2.0-beta.4",
            "21.2.0-beta.3",
            "21.2.0-beta.2",
            "21.2.0-beta.1",
            "21.1.0",
            "21.1.0-beta.2",
            "21.0.3",
            "21.1.0-beta.1",
            "21.1.0-beta.0",
            "21.0.4-beta.0",
            "21.0.2",
            "21.0.1",
            "21.0.0",
            "21.0.0-rc.4",
            "21.0.0-rc.3",
            "21.0.0-rc.2",
            "21.0.0-rc.1",
            "21.0.0-rc.0",
            "21.0.0-beta.12",
            "21.0.0-beta.11",
            "21.0.0-beta.10",
            "21.0.0-beta.9",
            "21.0.0-beta.8",
            "20.8.0",
            "21.0.0-beta.7",
            "21.0.0-beta.6",
            "21.0.0-beta.5",
            "21.0.0-beta.3",
            "21.0.0-beta.4"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-71476.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:25.253261613Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71476.json",
        "https://github.com/nrwl/nx/security/advisories/GHSA-vp3h-ghgh-jr7g",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-71476",
        "https://github.com/nrwl/nx/commit/2b20c2da39d263c32ae05767577589481a309fee",
        "https://github.com/nrwl/nx/commit/a82807621e4176e37909d2c1afede661b45cc30",
        "https://github.com/nrwl/nx/commit/ad296578fe980a4aad66f8af0add21f6ddf907d9",
        "https://github.com/nrwl/nx/pull/36116"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-22",
          "CWE-59"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71476.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-71476",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 492055,
  "published_at": "2026-08-06T20:07:09.019+00:00"
}