Skip to main content

fflate EUVDEUVD-2026-47616

| CVE-2026-45820 MEDIUM
Loop with Unreachable Exit Condition (Infinite Loop) (CWE-835)
2026-07-22 seal GHSA-px8p-9vwx-vf98
6.6
CVSS 4.0 · Vendor: seal
View

Attack ChainAIDerived

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

  1. Recon
    Craft ZIP with 0xFFFFFFFF compressed_size sentinel, omit ZIP64 extra field
  2. Delivery
    Submit archive to fflate-consuming service endpoint
  3. Exploit
    Application calls unzipSync() on attacker input
  4. Install
    z64e() reads out-of-bounds buffer position
  5. C2
    Returns undefined, coerces to 0 in numeric context
  6. Execute
    Loop exit condition permanently unreachable
  7. Impact
    Target thread hangs, service availability lost

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
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 that the target application (1) accepts ZIP archive input from an untrusted or remote source, and (2) passes that input to fflate's unzipSync() function. The vulnerability is specific to the synchronous unzipSync() code path via the z64e() helper - the async unzip() API follows a different execution path, though whether it shares the same vulnerable helper is not independently confirmed from available data and should not be assumed safe without code review. No authentication, no special server configuration, and no specific operating system are required; the flaw is in pure JavaScript/TypeScript logic and affects any runtime environment (Node.js, browser, Deno, Bun) running fflate ≤0.8.2. The CVSS 4.0 PR:N and UI:N confirm no privilege or user interaction is needed from the attacker's perspective. Exploitation is limited to applications that process attacker-controlled ZIP archives; services that only decompress internally generated or pre-validated ZIPs are not exploitable.

Impact

The CVSS 4.0 score of 6.6 (Medium) with base vector AV:N/AC:L/AT:N/PR:N/UI:N reflects a network-reachable, zero-authentication attack path with high availability impact and no confidentiality or integrity exposure - an accurate characterization of a pure DoS. The supplemental metric AU:Y (automatable) is especially significant: a threat actor can craft the malformed archive deterministically and submit it at scale with no human-in-the-loop requirement, enabling mass targeting of exposed endpoints. The E:U (unexploited) signal and absence from CISA KEV indicate no confirmed active exploitation at time of scoring, which moderates urgency. EPSS data was not provided in the available intelligence, limiting probabilistic exploitation forecasting. The combination of trivial trigger (a single malformed file), zero-authentication requirement, and automation potential elevates the practical risk above what the Medium CVSS score alone suggests - particularly for publicly exposed file-processing services. There is no conflict between the CVSS vector and the description; both confirm the network-local exploitation model. The score is appropriately bounded by the DoS-only impact scope.

Exploit ScenarioDerived

An attacker crafts a ZIP archive whose central directory sets compressed_size to 0xFFFFFFFF but intentionally omits the ZIP64 extra field, then submits the file to any web service, API endpoint, or build tool that calls fflate's unzipSync() on untrusted input - such as a file conversion API, archive preview feature, or CI artifact processor. The target process enters an infinite loop consuming 100% of a CPU core and never returns, causing the request to hang and ultimately starving the application of worker threads or connection slots, resulting in complete service unavailability. Because the trigger is a valid-looking ZIP structure, standard file-type validation and extension filtering provide no protection.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jul 22, 2026

Denial of service in fflate through 0.8.2 exposes any application calling unzipSync() to an indefinite process hang when processing attacker-supplied ZIP archives. The synchronous decompression helper z64e() enters an infinite loop when a ZIP central directory entry sets compressed_size=0xFFFFFFFF (the ZIP64 sentinel) but omits the required extra field tag 0x0001, causing JavaScript out-of-bounds array reads to silently return undefined, which coerces to 0 and prevents the loop from ever terminating. No public exploit has been identified at time of analysis, but the attack is network-reachable with no authentication required (CVSS 4.0 PR:N, UI:N) and is flagged automatable (AU:Y), making it a credible denial-of-service threat against any fflate-consuming service that accepts untrusted ZIP input.

RemediationAI

No vendor-released patched version is confirmed at time of analysis - the source code reference points to a specific unpatched commit hash (f7873560), indicating that a fix had not been published to npm at the time of reporting. Organizations should monitor the fflate npm package for releases beyond 0.8.2 and upgrade as soon as a patched version is available. As an immediate compensating control, validate ZIP archives before passing them to unzipSync() by rejecting any central directory entry that sets compressed_size to 0xFFFFFFFF without a properly structured ZIP64 extra field block (tag 0x0001); this prevents z64e() from being invoked on malformed input. Wrapping unzipSync() in a try/catch block does NOT mitigate this vulnerability because no exception is thrown - the function simply never returns. For production services accepting ZIP uploads, run ZIP decompression in an isolated worker thread or child process with a watchdog timeout (for example, 30 seconds) so a hung parse can be killed without blocking the main event loop. Restricting ZIP upload endpoints to authenticated, trusted users reduces the attack surface at the network boundary with the trade-off of limiting public-facing functionality.

Affected VersionsENISA

fflate 0.8.0 ≤0.8.2
fflate 0.6.0 ≤0.6.10
fflate 0.7.0 ≤0.7.4
fflate 0.4.5 ≤0.4.8
fflate 0.5.0 ≤0.5.3

Affected Packages

npm fflate fix: 0.4.9, 0.5.4, 0.6.11, 0.7.5, 0.8.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

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

Technical ContextAI · show details

fflate (CPE: cpe:2.3:a:101arrowz:fflate:*:*:*:*:*:*:*:*) is a TypeScript/JavaScript compression library distributed via npm. The vulnerable code resides in the z64e() internal helper function at src/index.ts line 2714, invoked by the synchronous unzipSync() API during ZIP archive parsing. The ZIP64 format uses 0xFFFFFFFF as a sentinel in the central directory's compressed_size field to signal that the actual 64-bit value is stored in an appended extra field identified by tag 0x0001. When a malformed archive declares this sentinel but omits the extra field, z64e() attempts to read the 64-bit size from a position that does not exist in the buffer. In JavaScript, out-of-bounds typed array accesses do not throw - they silently return undefined. When undefined participates in numeric comparison or arithmetic, it coerces to 0, causing the loop termination condition (which depends on the parsed size value) to become permanently true. This is a textbook CWE-835 (Loop with Unreachable Exit Condition) whose root cause is JavaScript's permissive undefined-to-number coercion behavior combined with the absence of bounds checking before the loop.

Know when Fflate 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 (seal) PRIMARY 6.6 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:U/S:N/AU:Y/R:U/V:D/RE:M/U:Amber
vuln.today AI 7.5 HIGH

Network-reachable via untrusted ZIP upload with no authentication or interaction needed; pure availability impact (infinite loop); no scope change, confidentiality, or integrity impact.

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
SUSE 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Red Hat 7.5 HIGH

Primary rating from Vendor (seal).

CVSS VectorVendor: seal

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

fflate through 0.8.2 is vulnerable to denial of service via an infinite loop in unzipSync(). A crafted ZIP archive with a central directory entry declaring compressed_size=0xFFFFFFFF (ZIP64 sentinel) but missing the required ZIP64 extra field tag 0x0001 causes z64e() to loop indefinitely due to out-of-bounds reads returning undefined, which coerces to 0, keeping the loop condition permanently true.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
High
popular JavaScript compression library with millions of weekly npm downloads
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
High
Technical Impact
Partial

Priority Score

53
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +33
PoC: +20
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.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Module for SAP Applications 15 SP7 Affected
SUSE Linux Enterprise Server for SAP Applications 15 SP7 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected
SUSE Linux Enterprise Module for SAP Applications 15 SP4 Affected
SUSE Linux Enterprise Module for SAP Applications 15 SP5 Affected

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