CVE-2026-19693 (GCVE-0-2026-19693)

Vulnerability from cvelistv5 – Published: 2026-08-17 13:30 – Updated: 2026-08-27 11:29 Unsupported When Assigned
VLAI
Title
extract-zip arbitrary file write outside the destination directory via a symlink at the final path component
Summary
extract-zip through 2.0.1 containment-checks only the parent directory of each archive entry and never the entry's own final path component, so an archive containing two entries with identical names - a symlink whose target is outside the destination, followed by a regular file - writes through the planted symlink and yields an arbitrary file write outside the destination directory.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-08-17 16:00 UTC
CWE
  • CWE-59 - Improper Link Resolution Before File Access ('Link Following')
  • CWE-22 - Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Impacted products
Vendor Product Version CPE status
max-mapper extract-zip Affected: 1.0.0 , ≤ 2.0.1 (semver)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-19693",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-08-17T16:00:39.088818Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-08-17T16:00:48.858Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://www.npmjs.com/package/extract-zip",
          "defaultStatus": "unaffected",
          "packageName": "extract-zip",
          "packageURL": "pkg:npm/extract-zip",
          "platforms": [
            "Linux",
            "macOS"
          ],
          "product": "extract-zip",
          "repo": "https://github.com/max-mapper/extract-zip",
          "vendor": "max-mapper",
          "versions": [
            {
              "lessThanOrEqual": "2.0.1",
              "status": "affected",
              "version": "1.0.0",
              "versionType": "semver"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Seal Security"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003e\u003ccode\u003eextract-zip\u003c/code\u003e through 2.0.1 containment-checks only the \u003cem\u003eparent directory\u003c/em\u003e of each archive entry and never the entry\u0027s own final path component, so an archive containing two entries with identical names - a symlink whose target is outside the destination, followed by a regular file - writes through the planted symlink and yields an arbitrary file write outside the destination directory.\u003c/p\u003e"
            }
          ],
          "value": "extract-zip through 2.0.1 containment-checks only the parent directory of each archive entry and never the entry\u0027s own final path component, so an archive containing two entries with identical names - a symlink whose target is outside the destination, followed by a regular file - writes through the planted symlink and yields an arbitrary file write outside the destination directory."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-132",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-132 Symlink Attack"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "attackComplexity": "LOW",
            "attackVector": "NETWORK",
            "availabilityImpact": "HIGH",
            "baseScore": 8.1,
            "baseSeverity": "HIGH",
            "confidentialityImpact": "NONE",
            "integrityImpact": "HIGH",
            "privilegesRequired": "NONE",
            "scope": "UNCHANGED",
            "userInteraction": "REQUIRED",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H",
            "version": "3.1"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-59",
              "description": "CWE-59 Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
              "lang": "en",
              "type": "CWE"
            },
            {
              "cweId": "CWE-22",
              "description": "CWE-22 Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-27T11:29:02.653Z",
        "orgId": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
        "shortName": "seal"
      },
      "references": [
        {
          "name": "extract-zip on npm",
          "tags": [
            "product"
          ],
          "url": "https://www.npmjs.com/package/extract-zip"
        },
        {
          "name": "max-mapper/extract-zip on GitHub",
          "tags": [
            "product"
          ],
          "url": "https://github.com/max-mapper/extract-zip"
        }
      ],
      "source": {
        "discovery": "INTERNAL"
      },
      "tags": [
        "unsupported-when-assigned"
      ],
      "title": "extract-zip arbitrary file write outside the destination directory via a symlink at the final path component",
      "x_generator": {
        "engine": "Vulnogram 1.0.2"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
    "assignerShortName": "seal",
    "cveId": "CVE-2026-19693",
    "datePublished": "2026-08-17T13:30:22.288Z",
    "dateReserved": "2026-08-13T07:30:18.584Z",
    "dateUpdated": "2026-08-27T11:29:02.653Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-19693",
      "date": "2026-09-21",
      "epss": "0.0028",
      "percentile": "0.207"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "collectionURL": "https://www.npmjs.com/package/extract-zip",
                "defaultStatus": "unaffected",
                "packageName": "extract-zip",
                "packageURL": "pkg:npm/extract-zip",
                "platforms": [
                  "Linux",
                  "macOS"
                ],
                "product": "extract-zip",
                "repo": "https://github.com/max-mapper/extract-zip",
                "vendor": "max-mapper",
                "versions": [
                  {
                    "lessThanOrEqual": "2.0.1",
                    "status": "affected",
                    "version": "1.0.0",
                    "versionType": "semver"
                  }
                ]
              }
            ],
            "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df"
          }
        ],
        "cveTags": [
          {
            "sourceIdentifier": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
            "tags": [
              "unsupported-when-assigned"
            ]
          }
        ],
        "descriptions": [
          {
            "lang": "en",
            "value": "extract-zip through 2.0.1 containment-checks only the parent directory of each archive entry and never the entry\u0027s own final path component, so an archive containing two entries with identical names - a symlink whose target is outside the destination, followed by a regular file - writes through the planted symlink and yields an arbitrary file write outside the destination directory."
          }
        ],
        "id": "CVE-2026-19693",
        "lastModified": "2026-09-09T15:52:04.827",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 8.1,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "REQUIRED",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.8,
              "impactScore": 5.2,
              "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
              "type": "Secondary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-19693",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-08-17T16:00:39.088818Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-08-17T14:20:20.737",
        "references": [
          {
            "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
            "url": "https://github.com/max-mapper/extract-zip"
          },
          {
            "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
            "url": "https://www.npmjs.com/package/extract-zip"
          }
        ],
        "sourceIdentifier": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
        "vulnStatus": "Deferred",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-22"
              },
              {
                "lang": "en",
                "value": "CWE-59"
              }
            ],
            "source": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
            "type": "Secondary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Important",
      "current_release_date": "2026-09-09T17:08:06+00:00",
      "cve": "CVE-2026-19693",
      "id": "CVE-2026-19693",
      "initial_release_date": "2026-08-17T13:30:22.288000+00:00",
      "product_status:known_affected": "40",
      "product_status:known_not_affected": "73",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "extract-zip: extract-zip: Arbitrary file write via symlink in archive",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-19693.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-09-15T02:12:40Z",
      "cve": "CVE-2026-19693",
      "id": "CVE-2026-19693",
      "initial_release_date": "2026-08-18T17:04:05Z",
      "product_status:known_affected": "56",
      "product_status:known_not_affected": "481",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-19693",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-19693.json",
      "version": "5"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-19693",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-08-17T16:00:39.088818Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-08-17T16:00:44.064Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "collectionURL": "https://www.npmjs.com/package/extract-zip",
              "defaultStatus": "unaffected",
              "packageName": "extract-zip",
              "packageURL": "pkg:npm/extract-zip",
              "platforms": [
                "Linux",
                "macOS"
              ],
              "product": "extract-zip",
              "repo": "https://github.com/max-mapper/extract-zip",
              "vendor": "max-mapper",
              "versions": [
                {
                  "lessThanOrEqual": "2.0.1",
                  "status": "affected",
                  "version": "1.0.0",
                  "versionType": "semver"
                }
              ]
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Seal Security"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003e\u003ccode\u003eextract-zip\u003c/code\u003e through 2.0.1 containment-checks only the \u003cem\u003eparent directory\u003c/em\u003e of each archive entry and never the entry\u0027s own final path component, so an archive containing two entries with identical names - a symlink whose target is outside the destination, followed by a regular file - writes through the planted symlink and yields an arbitrary file write outside the destination directory.\u003c/p\u003e"
                }
              ],
              "value": "extract-zip through 2.0.1 containment-checks only the parent directory of each archive entry and never the entry\u0027s own final path component, so an archive containing two entries with identical names - a symlink whose target is outside the destination, followed by a regular file - writes through the planted symlink and yields an arbitrary file write outside the destination directory."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-132",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-132 Symlink Attack"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV3_1": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 8.1,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "REQUIRED",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H",
                "version": "3.1"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-59",
                  "description": "CWE-59 Improper Link Resolution Before File Access (\u0027Link Following\u0027)",
                  "lang": "en",
                  "type": "CWE"
                },
                {
                  "cweId": "CWE-22",
                  "description": "CWE-22 Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-27T11:29:02.653Z",
            "orgId": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
            "shortName": "seal"
          },
          "references": [
            {
              "name": "extract-zip on npm",
              "tags": [
                "product"
              ],
              "url": "https://www.npmjs.com/package/extract-zip"
            },
            {
              "name": "max-mapper/extract-zip on GitHub",
              "tags": [
                "product"
              ],
              "url": "https://github.com/max-mapper/extract-zip"
            }
          ],
          "source": {
            "discovery": "INTERNAL"
          },
          "tags": [
            "unsupported-when-assigned"
          ],
          "title": "extract-zip arbitrary file write outside the destination directory via a symlink at the final path component",
          "x_generator": {
            "engine": "Vulnogram 1.0.2"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "22e2d327-25fe-45d7-9f0c-dcd23b7108df",
        "assignerShortName": "seal",
        "cveId": "CVE-2026-19693",
        "datePublished": "2026-08-17T13:30:22.288Z",
        "dateReserved": "2026-08-13T07:30:18.584Z",
        "dateUpdated": "2026-08-27T11:29:02.653Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…