{"id":"CVE-2026-85396","title":"rubyzip versions before 3.4.0 contain a path traversal vulnerability in Zip::Entry#extract that fails to properly validate extraction paths using prefix comparison without trailing separators","summary":"rubyzip versions before 3.4.0 contain a path traversal vulnerability in Zip::Entry#extract that fails to properly validate extraction paths using prefix comparison without trailing separators. Attackers can craft archive entries with nam…","severity":"high","cvss":7.5,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","cwe":["CWE-22"],"published":"2026-09-03","updated":"2026-09-24","sourceUpdated":"2026-09-24T20:28:01.780","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-85396","references":[{"url":"https://github.com/geo-chen/oss/blob/main/rubyzip.md","label":"disclosure@vulncheck.com"},{"url":"https://github.com/rubyzip/rubyzip","label":"disclosure@vulncheck.com"},{"url":"https://github.com/rubyzip/rubyzip/blob/v3.3.1/lib/zip/entry.rb","label":"disclosure@vulncheck.com"},{"url":"https://github.com/rubyzip/rubyzip/commit/17edfbf4423b83211b075acc23a7d8640da63449","label":"disclosure@vulncheck.com"},{"url":"https://github.com/rubyzip/rubyzip/releases/tag/v3.4.0","label":"disclosure@vulncheck.com"},{"url":"https://www.vulncheck.com/advisories/rubyzip-before-3.4.0-path-traversal-in-zip-entry-extract-via-sibling-directory-prefix","label":"disclosure@vulncheck.com"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-85396"},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rubyzip/CVE-2026-85396.yml"},{"url":"https://github.com/advisories/GHSA-47m2-wp7j-p9vc"}],"tags":["nvd","ghsa","rubygems"],"epss":0.00564,"epssPercentile":0.46714,"ingestedAt":"2026-09-24T20:51:40.241Z","aliases":["GHSA-47m2-wp7j-p9vc"],"ecosystem":"rubygems","vendor":"rubyzip","product":"rubyzip","affected":["rubyzip < 3.4.0"],"patched":["rubyzip 3.4.0"],"slug":"CVE-2026-85396","body":"## Overview\n\nrubyzip versions before 3.4.0 contain a path traversal vulnerability in Zip::Entry#extract that fails to properly validate extraction paths using prefix comparison without trailing separators. Attackers can craft archive entries with names like ../upload_backup/owned.sh to write files outside the intended extraction directory into sibling paths sharing the destination prefix.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-85396)\n\nAffected packages:\n\n- `rubyzip < 3.4.0`\n\nPatched in:\n\n- `rubyzip 3.4.0`\n\nSource: https://github.com/advisories/GHSA-47m2-wp7j-p9vc","depth":"twilight","depthScore":41,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}