Skip to content
Threat Feed
high advisory

veraPDF Validation Module XML External Entity Injection Vulnerability (CVE-2026-54079)

A critical XML External Entity Injection (XXE) vulnerability, CVE-2026-54079, in veraPDF's validation-model module allows a remote attacker to read arbitrary files on the server file system or perform Server-Side Request Forgery (SSRF) by submitting a crafted PDF containing a malicious XFA stream, due to insecure XML parsing defaults.

An XML External Entity Injection (CWE-611) vulnerability exists in veraPDF's validation-model module, affecting all current versions. Discovered and published by GHSA on July 29, 2026, this flaw allows a remote attacker to achieve arbitrary file disclosure or Server-Side Request Forgery (SSRF) by submitting a specially crafted PDF file containing a malicious XFA stream. The vulnerability resides in the GFPDAcroForm.java component, where the getdynamicRender() method insecurely parses attacker-controlled XML from the XFA entry using a DocumentBuilderFactory with default, unsafe settings. This lack of security features, such as disallow-doctype-decl and external-general-entities being enabled, allows the XML parser to process external entities specified by the attacker. Exploitation occurs when the target validates the malicious PDF, particularly against the PDF/UA-1 profile, which triggers the vulnerable parsing logic. This bypasses typical validation checks and poses a significant risk to server integrity and data confidentiality, as it enables unauthorized access to local files and internal network resources, with exfiltration typically occurring out-of-band.

Attack Chain

  1. An attacker crafts a malicious PDF document embedded with an XFA stream containing an XML External Entity (XXE) payload designed for file disclosure or SSRF.
  2. The attacker submits or delivers this malicious PDF to a target system running a vulnerable version of veraPDF.
  3. The target veraPDF instance begins validating the PDF, specifically against the PDF/UA-1 profile, which invokes the getdynamicRender() method in GFPDAcroForm.java.
  4. The getdynamicRender() method retrieves and decodes the embedded XML stream from the PDF's /XFA entry.
  5. A DocumentBuilderFactory.newInstance() is used to parse the untrusted XML without security features enabled (e.g., disallow-doctype-decl or external-general-entities).
  6. The XML parser processes the malicious external entities within the XFA stream, triggering either arbitrary file reading from the veraPDF server's file system or initiating a Server-Side Request Forgery (SSRF) connection.
  7. If the XXE is configured for file reading, the contents of the target file are either processed internally or, more commonly, exfiltrated out-of-band via a parameter entity to an attacker-controlled server.
  8. The attacker gains unauthorized access to sensitive local files or uses the SSRF capability to interact with internal network services or bypass network restrictions.

Impact

This vulnerability (CVE-2026-54079) impacts all current releases of the veraPDF validation-model module, including versions 1.17.35 through 1.30.1 and 1.31.1 through 1.31.70 for both validation-model and validation-model-jakarta. Successful exploitation allows a remote attacker to achieve arbitrary file disclosure, enabling the theft of sensitive information (e.g., configuration files, credentials), or to perform Server-Side Request Forgery, which can lead to internal network reconnaissance, access to internal services, or further compromise of the network. Exploitation is silent and does not require additional configuration or user interaction beyond the standard validation of a malicious PDF against the PDF/UA-1 profile.

Recommendation

  • Patch CVE-2026-54079 immediately by updating veraPDF validation-model and validation-model-jakarta to versions beyond the affected ranges (e.g., to versions patched against this XXE vulnerability) to prevent arbitrary file disclosure and SSRF.
  • Restrict inbound PDF submissions to trusted sources or implement strict content validation and sanitization for all untrusted PDF inputs.