Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
A network-reachable validator processes the malicious PDF with no auth or user interaction (AV:N/AC:L/PR:N/UI:N); primary impact is arbitrary file read and SSRF reflected in-band, so C:H with I/A none.
Primary rating from Vendor (https://github.com/veraPDF/veraPDF-validation).
CVSS VectorVendor: https://github.com/veraPDF/veraPDF-validation
Lifecycle Timeline
4DescriptionCVE.org
Summary
Description An XML External Entity Injection (CWE-611) vulnerability in veraPDF allows a remote attacker to read arbitrary files on the server file system and perform Server-Side Request Forgery by submitting a crafted PDF containing a malicious rich-text (/RC or /RV) entry. This affects all current versions of veraPDF-validation.
Details
The vulnerability resides in veraPDF-validation validation-model/src/main/java/org/verapdf/gf/model/tools/DictionaryKeysHelper.java within the getRichTextStringOrStreamEntryStringRepresentation() method. This helper extracts the XHTML rich-text body from a PDF dictionary string or stream and parses it with a DOM parser to return the concatenated text content.
The vulnerability stems from two combined issues:
- The DocumentBuilderFactory is instantiated with default settings , no disallow-doctype-decl, no disabling of external general/parameter entities, no FEATURE_SECURE_PROCESSING, and no secure EntityResolver. The default JAXP/Xerces parser will therefore resolve
<!DOCTYPE … SYSTEM "…">and<!ENTITY … SYSTEM "…">declarations. - After parsing,
getAllNodeText()recursively concatenates every text node in the document and returns it as the model property value. This means the expanded contents of any external entity are reflected directly back into the validation report.
Impact
This impacts all current releases of the veraPDF validation-model module.
Successful exploitation requires only that the target validate an attacker-supplied PDF. A single markup annotation with a crafted /RC string is sufficient.
Proposed Patch
Harden the DocumentBuilderFactory in validation-model/src/main/java/org/verapdf/gf/model/tools/DictionaryKeysHelper.java per the OWASP XXE Prevention Cheat Sheet to disallow DOCTYPE outright.
AnalysisAI
Arbitrary file disclosure and Server-Side Request Forgery in veraPDF's validation-model module allow a remote attacker to read files off the validating host and force outbound requests by feeding it a crafted PDF. The flaw lives in DictionaryKeysHelper.getRichTextStringOrStreamEntryStringRepresentation(), which parses XHTML rich-text (/RC or /RV) annotation content with a default, unhardened DocumentBuilderFactory that resolves external entities and then reflects the expanded entity contents back into the validation report. All current releases of both the classic (org.verapdf:validation-model) and Jakarta (validation-model-jakarta) artifacts are affected; there is no public exploit identified at time of analysis and it is not listed in CISA KEV, though the vendor advisory (GHSA-3jh7-wm29-q568) describes exploitation as trivial.
Technical ContextAI
This is a classic XML External Entity Injection (CWE-611). veraPDF is a PDF/A and PDF/UA conformance validator; its validation-model module inspects PDF structures, including markup-annotation rich-text streams that carry an XHTML body. To extract the plain text of that body, the code builds a JAXP/Xerces DOM parser via DocumentBuilderFactory using default settings - it does not set disallow-doctype-decl, does not disable external general or parameter entities, does not enable FEATURE_SECURE_PROCESSING, and installs no restrictive EntityResolver. Consequently the parser honors inline <!DOCTYPE ...> and <!ENTITY ... SYSTEM "..."> declarations. A second amplifying issue is that getAllNodeText() recursively concatenates every text node and returns it as a model property, so the resolved external-entity payload (file:// contents or an http:// SSRF response body) is echoed straight into the validation output - turning a blind XXE into an in-band data-exfiltration primitive. The affected packages are the Maven coordinates org.verapdf:validation-model and org.verapdf:validation-model-jakarta.
RemediationAI
Vendor-released patch: upgrade to 1.30.2 (for the 1.25.73-1.30.1 branch) or 1.31.71 (for the 1.31.1-1.31.70 branch) of both org.verapdf:validation-model and org.verapdf:validation-model-jakarta, per advisory https://github.com/veraPDF/veraPDF-validation/security/advisories/GHSA-3jh7-wm29-q568. The fix hardens DocumentBuilderFactory in DictionaryKeysHelper.java to disallow DOCTYPE declarations outright following the OWASP XXE Prevention Cheat Sheet. If you cannot upgrade immediately, compensating controls are to stop validating untrusted PDFs on any host with sensitive files or internal network reachability, and to apply egress network filtering (block outbound file access is not applicable, but block the validation host's outbound HTTP/HTTPS and to internal ranges) so that even a successful DOCTYPE parse cannot reach internal services or exfiltrate via SSRF - the trade-off being that legitimate remote resource fetches during validation, if any, would also be blocked. Running the validator as an unprivileged, sandboxed/containerized user with a minimal filesystem view limits which files an XXE can read.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
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
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-50369
GHSA-3jh7-wm29-q568