{"id":"CVE-2026-19693","aliases":["CLSA-2026-1792696135","DEBIAN-CVE-2026-19693","EUVD-2026-60194","GHSA-7pqw-9j4j-h8q3","ROOT-APP-NPM-CVE-2026-19693","UBUNTU-CVE-2026-19693"],"status":"published","title":"extract-zip arbitrary file write outside the destination directory via a symlink at the final path component","description":"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.","severity":{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00453,"percentile":0.39797,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-22","CWE-59"],"published":"2026-08-17T13:30:22Z","modified":"2026-10-28T02:30:22Z","fixes":[{"ecosystem":"Root:npm","package":"extract-zip","fixed_in":["1.7.0-aikido.2","2.0.1-aikido.2"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@rootio/extract-zip","fixed_in":["1.7.0-root.io.2","2.0.1-root.io.2"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2.0.1"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.7.0-tuxcare.0"},{"fixed":"1.7.0-tuxcare.2"}]}],"versions":["1.7.0","1.7.0-tuxcare.1"],"bundled":2},{"source":"osv","ecosystem":"Debian:12","package":"node-extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.1+ds-4"]},{"source":"osv","ecosystem":"Debian:13","package":"node-extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.1+ds-4"]},{"source":"osv","ecosystem":"Debian:14","package":"node-extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.1+ds-4"]},{"source":"osv","ecosystem":"npm","package":"extract-zip","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"2.0.1"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.7.0-aikido.2"},{"fixed":"2.0.1-aikido.2"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.7.0-root.io.2"},{"fixed":"2.0.1-root.io.2"}]}]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"node-extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.1+ds-1","2.0.1+ds-3"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"node-extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.1+ds-4"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"node-extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.1+ds-4"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"node-extract-zip","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.1+ds-4"]}],"products":[{"vendor":"max-mapper","product":"extract-zip"}],"references":[{"url":"https://www.npmjs.com/package/extract-zip","tags":["product","web"]},{"url":"https://github.com/max-mapper/extract-zip","tags":["product","package"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-19693","tags":["advisory"]},{"url":"https://github.com/max-mapper/extract-zip/pull/160","tags":["web"]},{"url":"https://github.com/advisories/GHSA-7pqw-9j4j-h8q3"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/19xxx/CVE-2026-19693.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-19693","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-19693","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-19693","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-19693","title":"extract-zip arbitrary file write outside the destination directory via a symlink at the final path component","description":"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.","status":"published","published":"2026-08-17T13:30:22.288Z","modified":"2026-08-27T11:29:02.653Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-59","CWE-22"],"updated_at":"2026-11-02T13:47:28.691429Z"}],"euvd":[{"id":"EUVD-2026-60194","description":"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.","status":"published","published":"2026-08-17T13:30:22Z","modified":"2026-08-27T11:29:02Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T18:01:28.581047Z"}],"ghsa":[{"id":"GHSA-7pqw-9j4j-h8q3","title":"extract-zip allows arbitrary file writes through symlink archive entries","description":"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.","status":"published","published":"2026-08-17T15:30:40Z","modified":"2026-09-08T20:42:53Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:41:14.764963Z"}],"nvd":[{"id":"CVE-2026-19693","description":"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.","status":"published","published":"2026-08-17T14:20:20.737Z","modified":"2026-09-09T15:52:04.827Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-22","CWE-59"],"updated_at":"2026-11-02T14:12:38.647684Z"}],"osv":[{"id":"CVE-2026-19693","title":"extract-zip arbitrary file write outside the destination directory via a symlink at the final path component","description":"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.","status":"published","published":"2026-08-17T13:30:22.288Z","modified":"2026-10-28T02:30:22.027907509Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-22","CWE-59"],"updated_at":"2026-11-02T15:44:58.024074Z"},{"id":"DEBIAN-CVE-2026-19693","description":"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.","status":"published","published":"2026-08-17T14:20:20.737Z","modified":"2026-10-01T03:03:19.825574869Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:53.097669Z"},{"id":"GHSA-7pqw-9j4j-h8q3","title":"extract-zip allows arbitrary file writes through symlink archive entries","description":"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.","status":"published","published":"2026-08-17T15:30:40Z","modified":"2026-09-08T21:10:57.608811Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:46:41.349637Z"},{"id":"UBUNTU-CVE-2026-19693","description":"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.","status":"published","published":"2026-08-17T14:20:00Z","modified":"2026-10-17T12:59:54.526884824Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T16:56:01.334185Z"},{"id":"CLSA-2026-1792696135","title":"TuxCare security update for extract-zip (2 CVEs)","description":"TuxCare rebuilt extract-zip to address 2 CVEs. Fixed in 1.7.0-tuxcare.2.","status":"published","published":"2026-10-22T19:08:55Z","modified":"2026-10-23T02:00:23.091497291Z","updated_at":"2026-11-02T15:43:54.981307Z"},{"id":"ROOT-APP-NPM-CVE-2026-19693","title":"CVE-2026-19693 in extract-zip - Patched by Root","description":"Root has patched CVE-2026-19693 in the extract-zip package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-09-17T12:45:31Z","modified":"2026-09-17T13:15:07.315059757Z","updated_at":"2026-11-02T15:53:27.649662Z"}]}}
