MapFish Print
CVE-2026-55848
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted print request with malicious GML URL
-
DeliveryPrint server fetches attacker-controlled XML
-
ExploitParser loads external DTD from attacker host
-
ExecutionDTD entity reference expands target local file
-
PersistException path reflects file contents in HTTP response
-
ImpactAttacker captures exfiltrated sensitive data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A02:2025 - Security Misconfiguration
ASVS 5.0
V13 - Configuration XML external entity prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | No special configuration is required on the target - the /api/print3/print endpoint accepts GML layer URLs by design, and the parser was unprotected in all releases prior to the fix. The CVSS vector (PR:N/AC:L) confirms unauthenticated exploitation against default deployments. The only meaningful attacker-side prerequisite is the ability to host a malicious XML file and DTD on a server that the MapFish Print instance can reach outbound over HTTP or HTTPS; without this outbound connectivity, the DTD cannot be delivered and the exploit fails. The SSRF variant additionally requires that the targeted internal HTTP endpoint be reachable from the print server's network segment. Exploitation is maximally impactful in Kubernetes environments where the service account token is present at the predictable path /var/run/secrets/kubernetes.io/serviceaccount/token. Limiting factors: strict egress firewall rules blocking outbound connections from the print server to untrusted hosts break the exploit chain at the DTD delivery step; exposing the endpoint only to authenticated internal users prevents unauthenticated exploitation; and files with binary content or non-UTF-8 encoding may not exfiltrate cleanly via the error path. |
| Impact | The CVSS 3.1 score of 8.6 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N) accurately reflects the exploitation profile: the endpoint is internet-reachable where exposed, requires no authentication, and can be fully exploited with a single HTTP POST request and a hosted web server. The scope change (S:C) captures the SSRF capability, extending impact beyond the MapFish application boundary to internal network resources. A detailed, step-by-step PoC including ready-to-use PHP and curl commands is confirmed in the GHSA advisory, making this trivially reachable for any attacker who can host files. EPSS data was not included in the input and exploitation probability cannot be quantitatively assessed; however, the combination of unauthenticated network access, low attack complexity, and a published PoC suggests elevated near-term risk regardless. CISA KEV listing is absent from the provided data, so active in-the-wild exploitation has not been independently confirmed at the time of this analysis. The most severe realistic scenario targets Kubernetes deployments, where the service account token at /var/run/secrets/kubernetes.io/serviceaccount/token can enable full cluster compromise if the pod's RBAC scope is broad. Organizations running MapFish Print behind a perimeter with strict egress controls have materially reduced exposure, since the exploit requires the print server to make outbound HTTP connections to attacker-controlled infrastructure. |
| Exploit ScenarioDerived | An attacker with no credentials hosts a PHP script that generates a malicious XML document embedding external entity references pointing to /var/run/secrets/kubernetes.io/serviceaccount/token, alongside an evil.dtd that defines the error-based exfiltration chain. The attacker sends a single unauthenticated curl POST to the target's /api/print3/print endpoint, embedding their PHP URL as the GML layer URL in the JSON print job. The MapFish Print server fetches the attacker's XML, the Java parser loads the external DTD, the file entity is expanded, and the Kubernetes token contents are reflected in the HTTP error response body - completing full credential theft with no victim interaction. A public PoC demonstrating this exact technique verbatim is confirmed in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 28, 2026
Unauthenticated XML External Entity (XXE) injection in MapFish Print's GML layer parser allows remote attackers to read arbitrary server-side files and conduct server-side request forgery (SSRF) via a single crafted HTTP POST to the /api/print3/print endpoint. All 3.x branches prior to 3.28.30, 3.30.32, 3.31.24, and 3.33.16, as well as 4.x prior to 4.0.5, are affected. A fully functional proof-of-concept exploit has been publicly disclosed in the GitHub Security Advisory GHSA-5v29-34h8-v68r, enabling exfiltration of Kubernetes service account tokens, OS credential files, and TLS certificates with no authentication required.
RemediationAI
Upgrade to the patched release corresponding to your active branch: 3.28.30, 3.30.32, 3.31.24, 3.33.16, or 4.0.5. Release artifacts for 3.28.30 and 3.30.32 are confirmed at github.com/mapfish/mapfish-print/releases; fixes for remaining branches are delivered via PRs #4212, #4215, #4216, #4217, #4219, and #4221. The fix adds a validateXmlInput() pre-check to GmlLayer.java that configures DocumentBuilderFactory with disallow-doctype-decl=true, external-general-entities=false, external-parameter-entities=false, ACCESS_EXTERNAL_DTD='', setExpandEntityReferences(false), and FEATURE_SECURE_PROCESSING=true, plus an EntityResolver2 that returns empty inputs for all external entity resolution attempts. If immediate patching is not feasible, implement these compensating controls: block outbound HTTP and HTTPS connections from the MapFish Print server to untrusted external hosts at the network perimeter - this breaks the exploit chain by preventing delivery of the attacker's DTD (trade-off: legitimate GML layer sources that rely on external URLs will also be blocked); restrict the /api/print3/print endpoint to authenticated internal users via a reverse proxy or WAF rule (trade-off: adds authentication layer that may affect existing integrations); and in Kubernetes environments, reduce the RBAC scope of the pod's bound service account to limit the blast radius if a token is exfiltrated.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in maven
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MapFish Print is a Java-based, Maven-distributed library (org.mapfish.print:print-lib and org.mapfish.print:print-servlet) that renders PDF maps from cartographic templates. The vulnerability resides in GmlLayer.java, which fetches and parses Geography Markup Language (GML) data - an XML-based OGC standard for geographic features. The Java DocumentBuilderFactory used to parse GML responses was not hardened against external entity processing: it did not set disallow-doctype-decl, did not disable external-general-entities or external-parameter-entities, and did not restrict ACCESS_EXTERNAL_DTD. This is the canonical CWE-611 (Improper Restriction of XML External Entity Reference) pattern. An attacker supplies their own URL as the GML layer source; the print server fetches it, the parser loads the attacker's DTD, the DTD defines entities that expand local file contents, and those contents are reflected back through an exception error path (the 404 handler echoes the expanded entity value as a path string). The SSRF variant replaces the file:// URI scheme with https:// in the DTD, redirecting the parser toward internal HTTP endpoints. Three CPE artifacts are affected: cpe:2.3:a:mapfish:mapfish-print, cpe:2.3:a:mapfish:org.mapfish.print.print-lib, and cpe:2.3:a:mapfish:org.mapfish.print.print-servlet.
Know when Mapfish Print 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
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
Network-reachable unauthenticated endpoint with no interaction required; scope change from SSRF capability; pure confidentiality impact with no integrity or availability effects.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
mapfish-print is a component of MapFish for printing templated cartographic maps. Prior to 3.28.30, 3.30.32, 3.31.24, 3.33.16, and 4.0.5, MapFish Print accepts an attacker-controlled GML layer url in requests to the /api/print3/print endpoint and fetches XML parsed by core/src/main/java/org/mapfish/print/map/geotools/GmlLayer.java without disabling external entities and external DTDs. A remote XML document and DTD can expand a local file entity, and the resulting content can be exposed through the GML parsing and error path. This allows unauthenticated attackers to read files such as operating-system account data, Kubernetes service-account tokens, and certificates. Replacing the file entity target with an internal HTTP endpoint also permits server-side request forgery. This issue is fixed in versions 3.28.30, 3.30.32, 3.31.24, 3.33.16, and 4.0.5.
Articles & Coverage 1
Technical POC Analysis
CWE-611 (Improper Restriction of XML External Entity Reference).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
MapFish Print versions 3.x (prior to 3.28.30, 3.30.32, 3.31.24, 3.33.16) and 4.x (prior to 4.0.5) contain an unauthenticated XXE injection vulnerability in the GML layer parser that allows remote attackers to exfiltrate sensitive files including Kubernetes service account tokens, OS credentials, and TLS certificates without authentication. Organizations running affected MapFish Print deployments face immediate risk of infrastructure credential compromise and lateral movement into containerized and cloud environments.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Deploy WAF rules to block XML external entity syntax and restrict /api/print3/print endpoint to authorized source networks only; (2) Implement network segmentation to contain lateral movement if Kubernetes tokens or OS credentials are compromised; (3) Disable the /api/print3/print endpoint if MapFish Print is used for non-GML print operations; (4) Immediately rotate all service account tokens, API keys, and OS credentials accessible from MapFish Print servers; (5) Increase monitoring on Kubernetes API servers and cloud platform authentication logs for unauthorized token usage; (6) Monitor file system and process logs for XXE exploitation indicators (unexpected /etc/passwd, /.kube/config, certificate reads).
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
XML External Entity (XXE) attacks exploit XML parsers that process Document Type Definitions (DTDs) without proper restrictions.
GHSA-5v29-34h8-v68r
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB