Skip to main content

compression middleware CVE-2026-87776

| EUVDEUVD-2026-76072 HIGH
Memory Leak (CWE-401)
2026-09-11 openjs GHSA-vc2v-76pw-4v95
7.5
CVSS 3.1 · Vendor: openjs
View

Attack ChainAIDerived

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

  1. Recon
    Send HTTP request with Accept-Encoding: gzip
  2. Delivery
    Server allocates zlib stream for response
  3. Exploit
    Client aborts TCP connection mid-stream
  4. Install
    zlib stream is never destroyed, leaks native memory
  5. C2
    Repeat in rapid loop
  6. Execute
    Node.js process memory exhausted
  7. Impact
    Server crash / OOM kill

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup, leak prevention
Exploitation Conditions

Any Express.js application that has mounted the compression middleware (via app.use(compression()) or equivalent route-level usage) and is reachable over a network is vulnerable. No authentication is required - the leak is triggered by the compression middleware processing any response, not by any authenticated or privileged code path. The vulnerability is present in all default configurations of compression <1.8.2; there is no non-default flag or feature that must be enabled. Exploitation is limited to availability impact only (no credential exposure, no code execution). An attacker must be able to open TCP connections to the server, which is trivially satisfied for any internet-facing application.

Impact

The CVSS 7.5 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately reflects the realistic threat profile: no authentication, no complexity, entirely network-accessible, and trivially automatable. The attack requires only the ability to send HTTP requests and close them early - any HTTP client library can accomplish this in a tight loop. EPSS data was not provided in the available intelligence, and no CISA KEV listing is present; however, the low exploitation barrier and the prevalence of compression in Express deployments means that even a mid-sized operations team in legnica running public-facing Express APIs should treat this as urgent patching work rather than a deferred maintenance item. The impact is strictly availability - no confidentiality or integrity risk - making this a pure service-disruption vulnerability. The absence of a POC reference in the supplied data does not substantially reduce risk, as reproducing the condition requires no reverse engineering: the mechanism is fully described in the advisory.

Exploit ScenarioDerived

An attacker sends a high volume of HTTP GET requests with Accept-Encoding: gzip to any publicly accessible endpoint served by a vulnerable Express application, then immediately closes each TCP connection after the response begins streaming. Each aborted response leaks a native zlib allocation; at sufficient request rate (easily achievable with curl --max-time or a simple script), the Node.js process's resident set grows unboundedly until the OS OOM-killer terminates it or the process crashes. No POC has been identified in the provided data, but the technique requires no specialized tooling.

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 – Sep 11, 2026

Memory exhaustion DoS in the expressjs/compression Node.js middleware (versions before 1.8.2) allows remote unauthenticated attackers to crash any Express server using the package. When a client aborts an HTTP connection while a compressed response is in flight, the zlib transform stream allocated for that response is never destroyed, permanently leaking its native heap memory. An attacker can automate rapid request-then-abort cycles to exhaust all available server memory, causing process termination. The issue is fixed in 1.8.2 per the OpenJS Foundation advisory; no public exploit code or KEV listing has been identified at time of analysis.

RemediationAI

Upgrade to compression version 1.8.2 or later, which is the vendor-confirmed fix per the OpenJS Foundation advisory (GHSA-vc2v-76pw-4v95). Update package.json to pin or floor the dependency at >=1.8.2 and run npm install or yarn install. If an immediate upgrade is not possible, a compensating control is to place a reverse proxy (nginx, HAProxy, or a CDN) in front of the Node.js application and offload compression entirely to the proxy - this removes the vulnerable code path from the request lifecycle, though it requires verifying that Express compression middleware is disabled (app.use(compression()) removed) to avoid redundant and still-vulnerable in-process compression. Rate-limiting aborted connections at the load-balancer layer can slow but not eliminate exploitation. No patch other than upgrading to 1.8.2 fully resolves the memory leak.

Affected VersionsENISA

compression 0 <1.8.2

Affected Packages

npm compression fix: 1.8.2

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

The expressjs/compression package (CPE: cpe:2.3:a:compression:compression:*:*:*:*:*:*:*:*) is the canonical HTTP response compression middleware for the Express.js framework, using Node.js's built-in zlib module to create transform streams that GZIP or Deflate response bodies on the fly. CWE-401 (Missing Release of Memory after Effective Lifetime) applies here: when a client sends a request with Accept-Encoding that triggers zlib stream allocation, and then closes the TCP connection before the stream is fully consumed, the middleware's 'close' or 'aborted' event handling fails to call destroy() on the zlib stream. Because zlib streams hold native (off-V8-heap) memory backed by C++ allocations, Node.js's garbage collector cannot reclaim them - each aborted response becomes a permanent leak until the process runs out of memory. The root cause is improper stream lifecycle management in the middleware's pipe/event handling code.

Know when Compression 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 (openjs) 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

Network-accessible middleware requiring no auth or user interaction; impact is availability-only (memory exhaustion), 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
SUSE HIGH
Red Hat 7.5 HIGH

Primary rating from Vendor (openjs).

CVSS VectorVendor: openjs

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
Sep 11, 2026 - 13:01 EUVD
CVE Published
Sep 11, 2026 - 11:24 cve.org
HIGH 7.5

DescriptionCVE.org

compression is a Node.js and Express compression middleware. In versions before 1.8.2, when a client aborts the connection while a compressed response is still being sent, the zlib stream created to compress that response is never destroyed, so each aborted compressed response leaks its native zlib memory. A remote unauthenticated attacker can repeatedly open requests and disconnect early, exhausting the available memory and crashing the server. All applications using compression are affected. The issue is fixed in compression 1.8.2, and users should upgrade to 1.8.2 or later.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 96,507 npm packages depend on compression (7,670 direct, 89,042 indirect)

Ecosystem-wide dependent count for version 1.8.2.

Technical POC Analysis

Bug class: CWE-401 (Missing Release of Memory after Effective Lifetime), with the advisory also enumerating CWE-459 (Incomplete Cleanup).

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

The expressjs/compression middleware vulnerability allows remote attackers to exhaust server memory and crash Express.js applications through connection abort cycles, creating a denial-of-service vector against any organization using this widely-deployed Node.js library. This affects all systems running versions before 1.8.2 and requires immediate upgrade to protect service availability and customer access.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
High
de facto standard compression middleware for Express.js ecosystem
Threat Intel
1
1 sources
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor CIRCL 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 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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

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.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Performance Computing 12 Not-Affected
SUSE Linux Enterprise Micro 5.3 Affected
SUSE Linux Enterprise Micro 5.3 Affected
SUSE Linux Enterprise Micro 5.4 Affected

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