Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain low-privilege access to PDF upload endpoint
-
DeliveryCraft decompression-bomb PDF with high-ratio FlateDecode stream
-
ExploitSubmit crafted PDF to application
-
InstallPDFDocument.load() invokes FlateStream decompression
-
C2ensureBuffer() doubles allocation without bound
-
ExecuteProcess memory exhausted
-
ImpactNode.js crash or browser tab freeze
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Compression ratio limits
|
| Exploitation Conditions | The attacker must be able to supply a crafted PDF to the application - via a file upload form, an API parameter accepting base64-encoded PDF data, or a URL reference to an attacker-controlled PDF. The CVSS 4.0 PR:L rating indicates low-privilege authentication is sufficient; administrative access is not required. The vulnerability is triggered by any PDF containing a FlateDecode (DEFLATE/zlib) stream, which is a standard, commonly used PDF feature - no non-default configuration is required on the victim system. Exploitation is limited by the need for some form of authenticated or upload-capable access; purely static read-only deployments that never call PDFDocument.load() on user-supplied data are not affected. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VA:H) is internally consistent with the description: straightforward network-exploitable availability attack requiring only low privileges, with no confidentiality or integrity impact limiting blast radius to service disruption. The PR:L rating reflects that most real deployments expose PDF processing only to authenticated or registered users, which is a meaningful barrier. No EPSS score was supplied in the source data, and this CVE is absent from CISA KEV, so exploitation probability is unquantified - the advisory's inclusion of a proof-of-concept script materially lowers the effort required for opportunistic attack. The server-side impact (crashing the Node.js process) is the more operationally severe scenario, as a shared application server crash affects all concurrent users simultaneously, whereas the browser-side effect is scoped to a single tab. No conflicts were identified between the CVSS vector and the vulnerability description. |
| Exploit ScenarioDerived | An attacker with a low-privilege account on a service that accepts user-submitted PDFs crafts a small (kilobyte-scale) compressed PDF containing a FlateDecode stream engineered for extreme compression ratio. Upon upload, the server invokes PDFDocument.load(), which triggers FlateStream decompression through the unbounded ensureBuffer() loop, rapidly exhausting process memory. The Node.js server process crashes, denying service to all concurrent users; a proof-of-concept Python script for constructing such a payload is included in GHSA-vrqm-gvq7-rrwh. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Memory exhaustion denial of service in @pdfme/pdf-lib before 5.5.10 allows network-accessible attackers with low-privilege PDF upload access to crash Node.js server processes or freeze browser tabs by submitting a crafted PDF embedding a FlateDecode decompression bomb. The DecodeStream.ensureBuffer() method doubles its internal buffer without any upper-bound check, enabling a kilobyte-scale compressed payload to trigger unbounded memory allocation during parsing. No active exploitation is confirmed in CISA KEV, but the GHSA advisory for GHSA-vrqm-gvq7-rrwh includes a proof-of-concept Python script that lowers the exploitation barrier.
RemediationAI
Upgrade @pdfme/pdf-lib to version 5.5.10 or later, as confirmed by GitHub Security Advisory GHSA-vrqm-gvq7-rrwh (https://github.com/pdfme/pdfme/security/advisories/GHSA-vrqm-gvq7-rrwh). If an immediate upgrade is not feasible, validate and reject PDF inputs exceeding a reasonable size threshold (e.g., 10 MB) before invoking PDFDocument.load() - this raises attacker cost without eliminating the vulnerability entirely. Enforce a Node.js process memory ceiling via the --max-old-space-size flag so that a successful decompression bomb kills only the PDF worker rather than the full application tier; pairing this with a process supervisor (PM2, systemd) for automatic restart reduces downtime. Sandboxing PDF parsing in an isolated worker process or container further contains the blast radius. For browser-facing deployments, add client-side file size validation before triggering PDF parsing to prevent tab freezes.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-409 (Improper Handling of Highly Compressed Data), commonly called a decompression bomb. The affected component is @pdfme/pdf-lib, a TypeScript/JavaScript PDF manipulation library targeting both Node.js and browser environments. The flaw resides in DecodeStream.ensureBuffer() at packages/pdf-lib/src/core/streams/DecodeStream.ts:148-160, where a doubling loop (size *= 2) carries no maximum allocation cap. This base class is inherited by FlateStream, which implements DEFLATE/zlib decompression for PDF FlateDecode streams. The decode() method unconditionally calls readBlock() until EOF, meaning the full stream is decompressed before any size limit can intervene. CPE cpe:2.3:a:pdfme:pdf-lib:*:*:*:*:*:*:*:* covers all versions up to and including 5.5.9. Both the server-side generator package (via the basePdf parameter in packages/generator/src/helper.ts:42-43) and the browser-facing UI package (packages/ui/src/helper.ts:292 and packages/ui/src/hooks.ts:67) share the vulnerable code path.
Know when Node.js 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable via PDF upload with low privileges; unbounded decompression causes process crash so A:H; no confidentiality or integrity impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
pdfme pdf-lib versions before 5.5.10 contain an unbounded buffer growth vulnerability in the DecodeStream.ensureBuffer() method that allows attackers to cause denial of service by supplying a crafted PDF with a FlateDecode stream containing a decompression bomb. Attackers can upload a small compressed PDF that decompresses to hundreds of megabytes, exhausting memory and crashing the Node.js process or freezing browser tabs during PDF parsing.
Blast Radius
ecosystem impact- 4 npm packages depend on @pdfme/pdf-lib (4 direct, 0 indirect)
Ecosystem-wide dependent count for version 5.5.10.
Technical POC Analysis
CWE-409 (Improper Handling of Highly Compressed Data / data amplification).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-68399
GHSA-gvgq-37w5-4f8q
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB