Severity by source
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/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:N/AU:Y/R:U/V:D/RE:M/U:Amber
Network-reachable via untrusted ZIP upload with no authentication or interaction needed; pure availability impact (infinite loop); no scope change, confidentiality, or integrity impact.
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Primary rating from Vendor (seal).
CVSS VectorVendor: seal
Lifecycle Timeline
2DescriptionCVE.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.
AnalysisAI
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.
Technical ContextAI
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.
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.
Same technique Denial Of Service
View allVendor 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 |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Module for SAP Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Module for SAP Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-47616
GHSA-px8p-9vwx-vf98