Skip to main content

Stirling-PDF EUVDEUVD-2026-114456

| CVE-2026-119342 MEDIUM
Improper Input Validation (CWE-20)
2026-10-30 GitHub_M
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach POST /api/v1/convert/svg/pdf without authentication
  2. Delivery
    Submit SVG with scheme-less root-relative image href
  3. Exploit
    Bypass SvgSanitizer.isExternalUrl() and Batik same-origin policy
  4. Execution
    Batik resolves path as same-origin file:// and decodes image
  5. Impact
    Receive targeted server file rendered into returned PDF

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

Requires that the Stirling-PDF SVG-to-PDF converter (POST /api/v1/convert/svg/pdf) be reachable; it is exploitable in the DEFAULT configuration (disableSanitize=false) and needs no admin role. It is fully unauthenticated only on login-disabled deployments; when login is enabled, any non-admin authenticated user can trigger it (the controller has no @PreAuthorize role check). The attacker must supply an SVG whose image href is in scheme-less root-relative form (e.g. /C:/path/file.svg) - explicit file: URLs, bare C: paths, backslash paths, and HTTP references are all stripped or fail. Key limiting factors that cap real impact: the targeted file must be image-decodable (PNG/JPG/GIF/SVG) - text, binary, directories, XInclude text, and XXE do not leak; the attacker must be able to name/guess the target path; and the existence oracle only distinguishes decodable images (all other cases return an indistinguishable HTTP 500).

Impact

This is a genuine but bounded information-disclosure flaw, not a high-urgency emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N, base 5.3) is internally consistent with the GHSA advisory: network-reachable, low-complexity, no authentication required on login-disabled deployments, with only limited confidentiality impact and no integrity or availability effect. The vuln.today decision label is 'this_month' (not act_now/emergency), which aligns with a medium-severity read-only bug. No EPSS score and no KEV listing were provided in the input, so there is no signal of active exploitation or high predicted exploitation probability - treat exploitation likelihood as unmeasured rather than low. A detailed PoC was reproduced end-to-end by the reporter in the GHSA advisory, but the input does not mark it as confirmed working exploit code, so it should be counted as a public PoC reference, not a packaged weapon. No SSVC decision string was supplied. The practical risk is tempered by real constraints the advisory verified: only image-decodable files (PNG/JPG/GIF/SVG) can be exfiltrated, plain text/binary/XXE/explicit-file-URL/HTTP vectors are all fail-closed, and the existence oracle only resolves decodable images. Net: a legitimate confidentiality issue worth patching this cycle, but materially lower real-world risk than the network-unauthenticated CVSS framing alone might suggest.

Exploit ScenarioDerived

An attacker (unauthenticated on a login-disabled Stirling-PDF instance, or any non-admin user when login is enabled) submits a crafted SVG to POST /api/v1/convert/svg/pdf whose image xlink:href is a scheme-less, root-relative path such as /C:/Users/.../signature.png pointing at a sensitive image on the server. Because the path bypasses both SvgSanitizer.isExternalUrl() and Batik's same-origin check (document base is hard-coded to file:///input.svg), Batik loads and renders that server-side file into the PDF returned to the attacker. A reproduced PoC exists in the GHSA advisory; the low attack complexity and no-UI/no-auth path make it directly scriptable and, with CSRF globally disabled, browser-triggerable.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 30, 2026

Local file disclosure in Stirling-PDF 2.13.1: the SVG-to-PDF converter (POST /api/v1/convert/svg/pdf) renders attacker-supplied SVG through Apache Batik with a hard-coded file:///input.svg document base, so an image reference written as a scheme-less root-relative path (for example /C:/Users/.../secret.svg) defeats both the SVG sanitizer's external-URL check and Batik's same-origin resource policy, and any server file Batik can decode as an image is embedded into the PDF returned to the caller. The flaw works in the default configuration (disableSanitize=false) and requires no admin role; it is fully unauthenticated on login-disabled deployments, while with login enabled any authenticated non-admin user can trigger it because the controller carries no role check. Impact is bounded: only PNG/JPG/GIF/SVG paths can be read, text/binary files, directories, XInclude text and external entities do not leak, and the existence oracle distinguishes only decodable images - reflected in the CVSS 5.3 (AV:N/AC:L/PR:N/UI:N/C:L). The issue is fixed in 2.13.2; a public proof-of-concept is published in the GHSA advisory and was reproduced end-to-end against a source build, and no confirmed active exploitation is reported.

RemediationAI

Vendor-released patch: upgrade to Stirling-PDF 2.13.2 (https://github.com/Stirling-Tools/Stirling-PDF/releases/tag/v2.13.2). The fix, delivered via PR https://github.com/Stirling-Tools/Stirling-PDF/pull/6796 and commit d06d3cabaf5b8a7dcd0dbfc584828d8e687e5dd5, makes SvgSanitizer.isExternalUrl() treat every reference other than in-document #fragments and data: URIs as external (so root-relative and relative local paths are stripped, as covered by new tests for /tmp/image.png, ../../assets/image.png and /C:/Users/x/external-image.svg), and replaces the plain UserAgentAdapter in both SvgToPdf.convert() and SvgToPdf.addSvgAsPage() with a secure user agent whose checkLoadExternalResource() throws SecurityException for anything except data: URIs. Until upgrading, the exposure path can be reduced by running with login enabled, since the advisory confirms the endpoint is unauthenticated only on login-disabled deployments - but note this is only partial, because with login enabled any authenticated non-admin user can still exploit the endpoint, and the operator should also consider making POST /api/v1/convert/svg/pdf unreachable at the reverse proxy or by disabling the SVG-to-PDF conversion feature, at the cost of removing that conversion capability for legitimate users. No further workaround is described in the available sources; updating is the complete fix.

Affected VersionsENISA

Stirling-PDF 2.13.1, < 2.13.2

Affected Packages

euvd stirling_pdf fix: 2.13.2

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

Stirling-PDF wraps Apache Batik (org.apache.xmlgraphics:batik-bridge 1.19) to rasterise SVG input for PDF output in app/core/src/main/java/stirling/software/SPDF/utils/SvgToPdf.java - both convert() and addSvgAsPage() construct a plain UserAgentAdapter and parse the document with factory.createSVGDocument("file:///input.svg", inputStream). Two defensive layers were supposed to block local/remote resource fetches and both are defeated by the same root-relative form. First, SvgSanitizer.isExternalUrl() only recognised explicit schemes (http://, https://, //, file:) plus #fragment and data:, so a scheme-less root-relative path such as /C:/.../canary.svg returned false, the SSRF check in sanitizeAttributes() was skipped and the attribute survived sanitisation. Second, because the document base is a file:// URL, Batik resolved that root-relative reference into a same-origin file:// URL, and its default DefaultExternalResourceSecurity permits same-origin loads; the sibling class SvgOverlayUtil already overrode checkLoadExternalResource to deny such loads, confirming SvgToPdf was simply missed by the earlier hardening in PR #6572. The reported root-cause class is CWE-20 (improper input validation), overlapping with CWE-22, CWE-610 and CWE-918 as noted in the advisory. Behaviourally, the trigger requires the root-relative single-leading-slash form: explicit file: URLs are stripped by the sanitizer, bare C: paths are treated as a scheme by Batik and fail to resolve, backslash variants fail, and HTTP references are stripped or blocked as cross-origin, all returning HTTP 500.

Know when Java 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 (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 5.3 MEDIUM

Network endpoint, low-complexity path bypass, no auth on default login-disabled config, so PR:N; only limited image-file read, hence C:L with I:N/A:N.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 22:03 EUVD
CVE Published
Oct 30, 2026 - 20:28 cve.org
MEDIUM 5.3

DescriptionCVE.org

Stirling-PDF is a locally hosted web application that facilitates various operations on PDF files. From 2.13.1 until 2.13.2, the POST /api/v1/convert/svg/pdf endpoint renders attacker-supplied SVG through Apache Batik, and a scheme-less root-relative image reference bypasses SvgSanitizer.isExternalUrl() before Batik resolves it against the file:///input.svg document base as a same-origin local file. The convert() and addSvgAsPage() paths in app/core/src/main/java/stirling/software/SPDF/utils/SvgToPdf.java can then render image-decodable server files into the returned PDF when sanitization is enabled, including without authentication on login-disabled deployments or with non-admin access when login is enabled. The issue discloses PNG, JPG, GIF, or SVG content and provides an existence oracle only for image-decodable paths; plain text, binary files, directories, XInclude text, external entities, explicit file URLs, and tested HTTP references are not disclosed through this mechanism. This issue is fixed in version 2.13.2.

Threat Intelligence Overview

EPSS Score
0.4%
Top 62% exploitable
Prevalence
Medium
popular self-hosted open-source PDF web app, not ubiquitous enterprise scale
Data Quality
3 sources
Confidence: Low

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Yes
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

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