Skip to main content

pdfme pdf-lib CVE-2026-82864

| EUVDEUVD-2026-68399 HIGH
Improper Handling of Highly Compressed Data (Data Amplification) (CWE-409)
2026-08-31 VulnCheck GHSA-gvgq-37w5-4f8q
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Recon
    Obtain low-privilege access to PDF upload endpoint
  2. Delivery
    Craft decompression-bomb PDF with high-ratio FlateDecode stream
  3. Exploit
    Submit crafted PDF to application
  4. Install
    PDFDocument.load() invokes FlateStream decompression
  5. C2
    ensureBuffer() doubles allocation without bound
  6. Execute
    Process memory exhausted
  7. Impact
    Node.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.

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

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

Alert me

AnalysisAI

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

pdf-lib 0 <5.5.10

Affected Packages

npm @pdfme/pdf-lib fix: 5.5.10
euvd pdf_lib fix: 5.5.10

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

Vendor (VulnCheck) PRIMARY 7.1 HIGH
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
vuln.today AI 6.5 MEDIUM

Network-reachable via PDF upload with low privileges; unbounded decompression causes process crash so A:H; no confidentiality or integrity impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
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

Lifecycle Timeline

2
CVE Published
Aug 31, 2026 - 10:50 cve.org
HIGH 7.1
Patch available
Aug 31, 2026 - 10:16 EUVD

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Medium
popular TypeScript PDF library, common in Node.js web applications
Data Quality
6 sources
Confidence: High

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.2%
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
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.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

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