Skip to main content

@pdfme/common EUVDEUVD-2026-108940

| CVE-2026-115729 HIGH
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-23 VulnCheck GHSA-wf6h-pqhw-phmv
8.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Supply crafted basePdf URL in pdfme template
  2. Exploit
    Bypass isUrlSafeToFetch denylist via IPv4-mapped IPv6/[::]/NAT64/localhost alias
  3. Execution
    Runtime fetches loopback or cloud metadata endpoint
  4. Impact
    Internal response embedded in generated PDF and exfiltrated

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

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 application allow an attacker to control a pdfme template's basePdf value that reaches getB64BasePdf, AND that the code run in an environment where window is defined - a browser or a server-side DOM shim - since the vulnerable fetch path only executes there; purely headless Node without a DOM shim does not hit it. The attacker must supply a URL whose hostname evades the string denylist: IPv4-mapped IPv6 (e.g. http://[::ffff:127.0.0.1]/ or http://[::ffff:a9fe:a9fe]/), the unspecified address http://[::]/, NAT64 (http://[64:ff9b::a9fe:a9fe]/), or a trailing-dot/alias localhost (http://localhost./). Limiting factors: no exploitation without attacker-controlled basePdf input, and none outside a window-defined fetch context; plain dotted-quad loopback and metadata addresses are already correctly rejected.

Impact

This is a server-side request forgery (CWE-918) in @pdfme/common, rated CVSS 4.0 8.9 (High) with vector AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N - network reachable, no privileges or user interaction, but with elevated attack complexity and a present attack requirement (AT:P), and high confidentiality impact on both the vulnerable and a subsequent system (the internal/metadata endpoint reached via SSRF). The vuln.today decision label is 'this_week' rather than act_now/emergency, which is consistent with the absence of a CISA KEV listing - there is no confirmed active exploitation. No EPSS probability was supplied in the input, so widespread-exploitation likelihood cannot be quantified here. A public PoC reference exists in the GHSA advisory (it demonstrates the denylist bypass via isUrlSafeToFetch returning true for internal addresses); it is not verified as a working end-to-end exploit. Note a signal conflict to verify: the GHSA advisory itself estimated CVSS 3.1 confidentiality as C:L with no scope change (S:U), whereas the supplied CVSS 4.0 vector asserts high vulnerable- and subsequent-system confidentiality (VC:H/SC:H) - the higher rating reflects reachability of cloud metadata credentials, but the vendor's own estimate was more conservative. Overall this is a genuine, patch-now-this-week issue for deployments matching the exploitation conditions, not a purely theoretical high-CVSS item, but it is gated by the application exposing attacker-controlled basePdf and running in a window-defined fetch context.

Exploit ScenarioDerived

An application lets users supply or import a pdfme template, and that template's basePdf value is passed to getB64BasePdf in a runtime where window is defined (a browser or a server-side DOM shim). An attacker sets basePdf to http://[::ffff:a9fe:a9fe]/ (the IPv4-mapped form of 169.254.169.254), bypassing the isUrlSafeToFetch denylist so the runtime fetches the cloud metadata endpoint and embeds the response - potentially including credentials - into the generated PDF, which the attacker then retrieves. A public PoC reference exists demonstrating the bypass; it is not verified as working end-to-end exploit code.

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 – Oct 23, 2026

Server-side request forgery in @pdfme/common (npm) from 5.5.10 before 6.2.6 allows an attacker who controls a template's basePdf value to make the runtime fetch loopback, internal or cloud-metadata URLs and embed the response as the generated document's base PDF. The isUrlSafeToFetch denylist added for an earlier SSRF report (GHSA-pgx6-7jcq-2qff) is incomplete: WHATWG URL parsing rewrites IPv4-mapped IPv6 forms into hex, so http://[::ffff:127.0.0.1]/ and http://[::ffff:a9fe:a9fe]/ (169.254.169.254) pass the string check, and the unspecified address http://[::]/, NAT64 prefixes such as http://[64:ff9b::a9fe:a9fe]/, and trailing-dot/alias localhost hostnames (http://localhost./) are not matched either. Exploitation requires two preconditions: attacker influence over a basePdf value that reaches getB64BasePdf, and execution in a context where window is defined (a browser or a server-side DOM shim) - plain headless Node without a DOM shim does not take the vulnerable fetch path; a public reproduction of the bypass is documented in the GitHub advisory and no active exploitation is confirmed (not in CISA KEV).

RemediationAI

Upgrade @pdfme/common to 6.2.6 or later (npm install @pdfme/common@^6.2.6), which contains commit d03d0bc4994ce6921e152879793c5ff52c5600a6 - the denylist is replaced with IP-library parsing that unwraps IPv4-mapped, NAT64, 6to4 and Teredo forms, rejects all non-global addresses including ::, 0.0.0.0/8 and 100.64.0.0/10, strips trailing dots from hostnames and permits only http/https; vendor guidance is in https://github.com/pdfme/pdfme/security/advisories/GHSA-2rg9-wxfw-wrr7. Note that 6.2.5, and anything from 5.5.10 onward including the earlier GHSA-pgx6-7jcq-2qff fix, is still bypassable, so partial upgrades do not help. Where upgrading is not immediately possible, the exposure is narrowed by removing attacker control over template basePdf values - accept only URLs from a fixed allowlist of trusted hosts, or have the server substitute a known-good PDF rather than a caller-supplied URL - at the cost of flexibility for tenants who legitimately supply remote base PDFs. Running the renderer in Node without a DOM shim avoids the vulnerable fetch branch (window is undefined), but this is a deployment limitation with side effects for any code path that needs DOM emulation, and it does not remediate the underlying denylist flaw. Because a public reproduction of the bypass is documented, treat any deployment that accepts untrusted basePdf input as exposed until 6.2.6 is installed.

Affected VersionsENISA

common 5.5.10 <6.2.6

Affected Packages

euvd common fix: 6.2.6

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

CWE-918 (server-side request forgery) arising from a hostname denylist built on new URL(x).hostname inside isUrlSafeToFetch, which getB64BasePdf calls before fetch(basePdf) in packages/common (dist/index.js). The vulnerability class here is a canonicalisation mismatch: the WHATWG URL parser normalises IPv4-mapped IPv6 literals to hexadecimal form, so new URL('http://[::ffff:127.0.0.1]/').hostname returns '[::ffff:7f00:1]', meaning the dotted-quad mapped-address comparison in the denylist never fires. The same parser gap leaves the unspecified address [::], NAT64 prefixes (64:ff9b::/96), and trailing-dot hostnames such as 'localhost.' uncovered. When getB64BasePdf accepts the URL, the fetched response is base64-encoded and used as the base PDF of the generated document, which turns the SSRF into a data-exfiltration channel for loopback services, link-local/cloud metadata endpoints (169.254.169.254) and internal networks. The vulnerability only manifests where window is defined - a browser or a server-side DOM shim - because that is the branch in which the fetch occurs. The upstream fix in 6.2.6 (commit d03d0bc4994ce6921e152879793c5ff52c5600a6) replaces the string denylist with IP-library parsing that unwraps IPv4-mapped, NAT64, 6to4 and Teredo addresses, rejects every non-global address (including ::, 0.0.0.0/8, CGNAT 100.64.0.0/10, documentation and benchmarking ranges), strips trailing dots on hostnames, and restricts schemes to http/https, with tests covering 127.0.0.1, 169.254.169.254, [::ffff:7f00:1], [::], localhost. and file:/ftp:/data:/blob: URLs.

Know when Common 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 8.9 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
vuln.today AI 6.8 MEDIUM

SSRF reaching cloud metadata gives C:H and a scope change (S:C); AC:H because the trigger needs a window-defined/DOM-shim runtime plus crafted bypass addresses; no integrity or availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

@pdfme/common from 5.5.10 before 6.2.6 contains a server-side request forgery vulnerability that allows attackers to bypass the isUrlSafeToFetch denylist in getB64BasePdf. Attackers can supply basePdf URLs using IPv4-mapped IPv6, [::], NAT64 or localhost alias hostnames to read loopback, internal or cloud metadata responses through generated documents.

Technical POC Analysis

CWE-918.

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

A high-severity server-side request forgery (SSRF) vulnerability in the @pdfme/common npm package could allow an attacker to cause the server to make unauthorized requests to internal or cloud metadata endpoints, potentially exposing sensitive information. The flaw affects versions 5.5.10 through 6.2.5 and requires both attacker control over a template's basePdf value and a runtime environment with a DOM shim (e.g., browser or server-side DOM). While exploitation preconditions limit exposure, any organization using these versions in such contexts faces risk of data leakage or further network compromise.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Medium
popular open-source PDF-generation npm library, not universally deployed
Data Quality
4 sources
Confidence: Medium

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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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