CVE-2026-85396GHSA-47m2-wp7j-p9vc
rubyzip path traversal vulnerability
rubyzip rubyziprubygemsLibraries & packages
CVSS
8.7HighExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.56%Chance of exploitation activity in the next 30 days, higher than 46% of CVEs. Scored 23 Oct 2026FIRST EPSS
What fixes it
- 3.4.0rubyzip, rubygemsGitHub
- 3.4.0rubyzipCVE List
- 3.4.0rubyzip, RubyGemsOSV
bundle update rubyzip --conservative # needs 3.4.0 or later
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
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 names like ../upload_backup/owned.sh to write files outside the intended extraction directory into sibling paths sharing the destination prefix.
Text from CVE List
Affected versions 53
- rubyzip, rubygems< 3.4.0GitHub
- rubyzipaffected: all versions before 3.4.0CVE List
- rubyzipunaffected: 3.4.0CVE List
- rubyzip, RubyGemsfrom first release, fixed in 3.4.0OSV
- rubyzip, RubyGems0.5.11OSV
- rubyzip, RubyGems0.5.12OSV
- rubyzip, RubyGems0.5.7OSV
- rubyzip, RubyGems0.5.8OSV
- rubyzip, RubyGems0.5.9OSV
- rubyzip, RubyGems0.9.1OSV
- rubyzip, RubyGems0.9.4OSV
- rubyzip, RubyGems0.9.5OSV
- rubyzip, RubyGems0.9.6.1OSV
- rubyzip, RubyGems0.9.7OSV
- rubyzip, RubyGems0.9.8OSV
- rubyzip, RubyGems0.9.9OSV
- rubyzip, RubyGems1.0.0OSV
- rubyzip, RubyGems1.0.0.beta1OSV
- rubyzip, RubyGems1.1.0OSV
- rubyzip, RubyGems1.1.1OSV
- rubyzip, RubyGems1.1.2OSV
- rubyzip, RubyGems1.1.3OSV
- rubyzip, RubyGems1.1.4OSV
- rubyzip, RubyGems1.1.5OSV
- rubyzip, RubyGems1.1.6OSV
- rubyzip, RubyGems1.1.7OSV
- rubyzip, RubyGems1.2.0OSV
- rubyzip, RubyGems1.2.1OSV
- rubyzip, RubyGems1.2.2OSV
- rubyzip, RubyGems1.2.3OSV
- rubyzip, RubyGems1.2.4OSV
- rubyzip, RubyGems1.3.0OSV
- rubyzip, RubyGems2.0.0OSV
- rubyzip, RubyGems2.1.0OSV
- rubyzip, RubyGems2.2.0OSV
- rubyzip, RubyGems2.3.0OSV
- rubyzip, RubyGems2.3.1OSV
- rubyzip, RubyGems2.3.2OSV
- rubyzip, RubyGems2.4.1OSV
- rubyzip, RubyGems2.4.rc1OSV
- rubyzip, RubyGems3.0.0OSV
- rubyzip, RubyGems3.0.0.alphaOSV
- rubyzip, RubyGems3.0.0.rc1OSV
- rubyzip, RubyGems3.0.0.rc2OSV
- rubyzip, RubyGems3.0.1OSV
- rubyzip, RubyGems3.0.2OSV
- rubyzip, RubyGems3.1.0OSV
- rubyzip, RubyGems3.1.1OSV
- rubyzip, RubyGems3.2.0OSV
- rubyzip, RubyGems3.2.1OSV
- rubyzip, RubyGems3.2.2OSV
- rubyzip, RubyGems3.3.0OSV
- rubyzip, RubyGems3.3.1OSV
References 9
- github.com/rubyzip/rubyzip/commit/17edfbf4423b83211b075acc23a7d8640da63449Fixvia CVE List
- github.com/rubyzip/rubyzip/releases/tag/v3.4.0Fixvia CVE List
- vulncheck.com/advisories/rubyzip-before-3.4.0-path-traversal-in-zip-entry-extract-via-sibling-directory-prefixAdvisoryvia CVE List
- github.com/rubysec/ruby-advisory-db/blob/master/gems/rubyzip/CVE-2026-85396.ymlAdvisoryvia GitHub
- github.com/advisories/GHSA-47m2-wp7j-p9vcAdvisoryvia GitHub
- nvd.nist.gov/vuln/detail/CVE-2026-85396Referencevia GitHub
- github.com/geo-chen/oss/blob/main/rubyzip.mdReferencevia CVE List
- github.com/rubyzip/rubyzip/blob/v3.3.1/lib/zip/entry.rbReferencevia CVE List
- github.com/rubyzip/rubyzipReferencevia CVE List