Skip to main content

MapFish Print CVE-2026-55848

HIGH
Improper Restriction of XML External Entity Reference (CWE-611)
2026-08-28 GitHub_M GHSA-5v29-34h8-v68r
8.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Submit crafted print request with malicious GML URL
  2. Delivery
    Print server fetches attacker-controlled XML
  3. Exploit
    Parser loads external DTD from attacker host
  4. Execution
    DTD entity reference expands target local file
  5. Persist
    Exception path reflects file contents in HTTP response
  6. Impact
    Attacker 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

maven org.mapfish.print:print-lib fix: 3.28.30, 3.30.32, 3.33.16, 4.0.5
maven org.mapfish.print:print-servlet fix: 3.30.32, 3.31.24, 3.33.16, 4.0.5
maven org.mapfish:print.print-servlet fix: 3.28.30

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

Vendor (GitHub_M) PRIMARY 8.6 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
vuln.today AI 8.6 HIGH

Network-reachable unauthenticated endpoint with no interaction required; scope change from SSRF capability; pure confidentiality impact with no integrity or availability effects.

3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/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
Changed
Confidentiality
High
Integrity
None
Availability
None

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.

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

Why It Matters

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.

Business Impact: Severe
Compensating Controls

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

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
niche GIS cartographic PDF printing library, specialized deployments only
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Social Media
3
Sightings
Data Quality
5 sources
Confidence: Medium
NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub

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 Yes
EPSS 0.3%
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Partial

Priority Score

63
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +43
PoC: +20
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.

XML External Entity (XXE) attacks exploit XML parsers that process Document Type Definitions (DTDs) without proper restrictions.

Affected Products (CPE)CVE.org

cpe:2.3:a:mapfish:mapfish-print:*:*:*:*:*:*:*:*
cpe:2.3:a:mapfish:org.mapfish.print.print-lib:*:*:*:*:*:*:*:*
cpe:2.3:a:mapfish:org.mapfish.print.print-servlet:*:*:*:*:*:*:*:*

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