Skip to main content

zip2 EUVDEUVD-2026-109984

| CVE-2026-115907 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-10-26 GitHub_M
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Upload crafted ZIP64 archive to extraction service
  2. Delivery
    Declared uncompressed size set to u64::MAX for legacy Shrink entry
  3. Exploit
    ZipArchive::extract() reserves capacity before validation
  4. Execution
    Capacity-overflow panic aborts process
  5. Impact
    Denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires BOTH a specific build configuration and a specific API path: the target application must be compiled with the opt-in legacy-zip Cargo feature (which is what compiles the vulnerable Shrink/Reduce/Implode decoders), and it must call ZipArchive::extract() on (or otherwise read) an attacker-supplied archive. The malicious entry must use a legacy compression method (Shrink/Reduce/Implode) and declare an attacker-controlled ZIP64 uncompressed size - the PoC sets it to u64::MAX while supplying one byte of compressed data - so the oversized Vec::reserve runs before hwunshrink()/hwexpand()/hwexplode() can validate the stream. The decisive limiting factor is that legacy-zip is not enabled by default; applications using zip2's default features are not exposed. No authentication or user interaction is required at the library level once legacy-zip is enabled and untrusted archives are extracted; versions outside 5.1.0-8.x (i.e. 9.0.0 and later) are fixed.

Impact

All severity signals here describe a single impact: denial of service. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) correctly reflects a network-reachable, low-complexity, unauthenticated availability-only flaw with no confidentiality or integrity impact - an unhandled Rust panic (capacity overflow) that aborts the process. The GHSA advisory supplies a complete, demonstrated 149-byte reproducer with observed panic output, so trigger reliability is high and deterministic. However, the real-world risk is strongly gated by a configuration prerequisite the raw CVSS score does not capture: the vulnerable legacy Shrink/Reduce/Implode decoders are only compiled when the opt-in legacy-zip Cargo feature is enabled, and the panic is only reached through ZipArchive::extract() (or reading such legacy entries). The vuln.today Decision label is 'this_week' (not act_now/emergency). No EPSS score, no CISA KEV listing, and no SSVC decision values were supplied in the input, so exploitation-probability and active-exploitation signals cannot be weighed - their absence is not evidence either way. Net: this is a genuine, easily-triggered availability bug worth patching on a near-term schedule for any service that extracts untrusted archives with legacy-zip enabled, but it is not a code-execution issue and the opt-in feature gate means most zip2 consumers are not exposed. One notable classification point: NVD assigns CWE-400 while the GHSA assigns CWE-400 plus CWE-789 (memory allocation with excessive size), the latter being the more mechanistically precise fit.

Exploit ScenarioDerived

A service that accepts user-uploaded ZIP files and extracts them with zip2 built using the legacy-zip feature receives a crafted 149-byte archive whose ZIP64 extra field declares an uncompressed size of u64::MAX for a Shrink-compressed entry. When the service calls ZipArchive::extract(), the decoder reserves the impossible capacity before validating the compressed stream and the process panics with 'capacity overflow' (exit status 101), terminating the archive-processing service. The GHSA advisory includes a complete working reproducer with observed crash output, so the trigger is confirmed and reliable in optimized release builds.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 26, 2026

Denial of service in the Rust zip2 crate affects versions 5.1.0 through 8.x when an application is built with the opt-in legacy-zip feature and extracts an attacker-supplied archive containing a Shrink, Reduce, or Implode entry with a forged ZIP64 uncompressed size. The declared size is passed to Vec::reserve before the compressed stream is validated, causing a deterministic capacity-overflow panic (CWE-400/CWE-789) that can terminate the archive-processing process. The issue is fixed in 9.0.0; a public proof-of-concept reproducer is documented in the GHSA advisory, there is no CISA KEV confirmation in the provided intelligence, and exposure is limited by the non-default legacy-zip build configuration and a ZipArchive::extract()-style read path.

RemediationAI

Vendor-released patch: upgrade zip2 to 9.0.0 (https://github.com/zip-rs/zip2/releases/tag/v9.0.0), which caps speculative preallocation at 1 MiB in the legacy decoders. If upgrading immediately is not possible, remove the legacy-zip Cargo feature from the dependency graph so the vulnerable Shrink/Reduce/Implode decoders are not compiled; the trade-off is loss of support for archives using those legacy compression methods. Applications that must keep legacy support should avoid calling ZipArchive::extract() or otherwise reading entries from untrusted archives until the fix is deployed, and can backport the upstream changes from PR #991 or commit 8b4991288b79ad11cce201c2d785d5baa795bd3e; the vendor advisory is at https://github.com/zip-rs/zip2/security/advisories/GHSA-9hj8-73fh-9963.

Affected VersionsENISA

zip2 5.1.0, < 9.0.0

Affected Packages

euvd zip2 fix: 9.0.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

zip2 is a Rust ZIP library, and the legacy-zip Cargo feature compiles support for older compression methods including Shrink, Reduce, and Implode. In these decoders, the entry's declared uncompressed size comes from ZIP metadata, and ZIP64 extra fields let an archive declare a 64-bit size independent of the actual compressed payload. The vulnerable code reads the compressed bytes, then calls self.stream.reserve(self.uncompressed_size as usize) before hwunshrink(), hwexpand(), or hwexplode() validates or decodes the stream; a value such as u64::MAX produces a capacity overflow panic (CWE-400 uncontrolled resource consumption, CWE-789 excessive allocation). The upstream fix in PR #991 introduces a MAX_PREALLOC cap of 1 MiB so buffers grow geometrically instead of reserving an attacker-controlled size. The CVSS 3.1 vector is AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, but the practical precondition is that legacy-zip is enabled, which is not the default.

Know when Rust gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Attacker-supplied archive is processed remotely with a reliable deterministic panic (AV:N/AC:L/PR:N/UI:N); impact is availability-only process termination with no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Oct 26, 2026 - 17:02 EUVD
CVE Published
Oct 26, 2026 - 16:32 cve.org
HIGH 7.5

DescriptionCVE.org

zip is a zip library for Rust that supports reading and writing simple ZIP files. From 5.1.0 until 9.0.0, applications built with the legacy-zip feature can reserve output capacity from an attacker-controlled ZIP64 uncompressed size before validating the compressed stream. The ShrinkDecoder path in src/legacy/shrink.rs can panic with a capacity overflow during ZipArchive::extract, and the Reduce and Implode decoders contain the same unbounded preallocation pattern. An unhandled panic can terminate an archive-processing service. This issue is fixed in version 9.0.0.

Technical POC Analysis

The flaw is uncontrolled resource consumption / excessive allocation from an untrusted size value (CWE-400, CWE-789) in the legacy Shrink decoder.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-115907 is a high-severity denial-of-service flaw in the Rust zip2 crate that can crash archive-processing services built with the opt-in 'legacy-zip' feature when handling malicious archives. This affects any application that extracts attacker-supplied ZIP files using the vulnerable crate versions, potentially causing service outages. Leadership should prioritize remediation because a confirmed crash could disrupt operations and impact availability for customers or internal users.

Business Impact: Medium
Compensating Controls

Apply vendor patch (version 9.0.0); if patching is delayed, disable the 'legacy-zip' feature or avoid extracting untrusted archives.

Threat Intelligence Overview

EPSS Score
0.4%
Top 72% exploitable
Prevalence
Medium
popular Rust zip library, but vulnerable legacy-zip feature is opt-in and rarely enabled
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Medium

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Rust

View all
CVE-2024-3566 CRITICAL POC
9.8 Apr 10

Command injection via Windows CreateProcess argument parsing affects multiple language runtimes and tooling (Node.js, PH

CVE-2021-31162 CRITICAL POC
9.8 Apr 14

In the standard library in Rust before 1.52.0, a double free can occur in the Vec::from_iter function if freeing the ele

CVE-2021-28879 CRITICAL POC
9.8 Apr 11

In the standard library in Rust before 1.52.0, the Zip implementation can report an incorrect size due to an integer ove

CVE-2026-58491 CRITICAL POC
9.3 Sep 21

Stored cross-site scripting and open redirect in Warpgate's SSO endpoints (versions prior to 0.25.5) allow an unauthenti

CVE-2021-29922 CRITICAL POC
9.1 Aug 07

library/std/src/net/parser.rs in Rust before 1.53.0 does not properly consider extraneous zero characters at the beginni

CVE-2026-77620 HIGH POC
8.7 Sep 22

Denial of service in the Vector observability pipeline's `logstash` source (versions 0.15.0 through 0.56.x) allows a rem

CVE-2019-12083 HIGH POC
8.1 May 13

The Rust Programming Language Standard Library 1.34.x before 1.34.2 contains a stabilized method which, if overridden, c

CVE-2026-96889 HIGH POC
7.8 Sep 23

Use-after-free in librsvg during rendering of crafted SVG documents with nested XInclude directives and duplicate entity

CVE-2021-28878 HIGH POC
7.5 Apr 11

In the standard library in Rust before 1.52.0, the Zip implementation calls __iterator_get_unchecked() more than once fo

CVE-2021-28875 HIGH POC
7.5 Apr 11

In the standard library in Rust before 1.50.0, read_to_end() does not validate the return value from Read in an unsafe c

CVE-2019-16760 HIGH POC
7.5 Sep 30

Cargo prior to Rust 1.26.0 may download the wrong dependency if your package.toml file uses the `package` configuration

CVE-2026-115905 CRITICAL
10.0 Oct 26

A parser differential in the Rust `zip` crate (zip2) through 9.0.4 lets a crafted archive present different filenames to

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy