Description
Kitodo.Production is a workflow management tool for mass digitization and is part of the Kitodo Digital Library Suite. Prior to version 3.9.2, org.kitodo.production.helper.XMLUtils exposes several XML parsing helpers that construct a JAXP parser with the default, non-secure configuration. The methods parseXMLString(String), getNumberOfEADElements(String, String) and checkIfXmlIsWellFormed(String) build a DocumentBuilderFactory / XMLInputFactory / SAXParserFactory via newInstance() and parse the attacker-supplied string without disabling DOCTYPE declarations or external entity resolution. These helpers sit directly on the EAD-import path: an authenticated user who uploads an EAD/XML file through the "Create process" file-upload dialog has the uploaded bytes parsed by these methods. A crafted document with an external entity therefore yields XML External Entity (XXE) injection: local file disclosure and outbound SSRF requests from the server. This issue has been patched in version 3.9.2.
Published: 2026-10-23
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: Local File Disclosure and SSRF via XML External Entity in uploaded EAD/XML files.
Action: Immediate Patch
AI Analysis

Impact

XMLUtils in Kitodo.Production uses the default JAXP configuration, enabling XML External Entity processing. An attacker who can upload an EAD/XML file through the Create process dialog can supply a document that triggers an external entity. The server then resolves that entity, exposing local files to the attacker and allowing arbitrary outbound HTTP requests from the server to third‑party hosts. The resulting impact is a breach of confidentiality and potential network access beyond the application boundary. This flaw manifests as a high‑severity XML injection weakness (CWE‑611).

Affected Systems

Kitodo in the kitodo:kitodo-production product line. All releases prior to version 3.9.2 are affected. The vulnerability is present in the XML parsing helpers parseXMLString, getNumberOfEADElements, and checkIfXmlIsWellFormed used in the EAD‑import path.

Risk and Exploitability

The CVSS score of 8.7 indicates a high risk assessment. Although EPSS data is not available, the lack of a KEV listing does not diminish the vulnerability’s potential exploitability; an authenticated user can trigger the flaw simply by uploading a crafted file. Because the flaw acts during file parsing, a malicious construct can be supplied through ordinary user privileges, making the attack relatively straightforward once access to the upload interface is achieved.

Generated by OpenCVE AI on October 23, 2026 at 17:00 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Kitodo.Production to version 3.9.2 or later where the XML parsers are hardened.
  • If an upgrade is not possible, block or filter file uploads and enforce strict validation of XML files, ensuring DOCTYPE declarations are removed before parsing.
  • Monitor outgoing network connections from the application for unexpected requests to external hosts and review logs for abnormal entity resolution.

Generated by OpenCVE AI on October 23, 2026 at 17:00 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 23 Oct 2026 15:00:00 +0000

Type Values Removed Values Added
Description Kitodo.Production is a workflow management tool for mass digitization and is part of the Kitodo Digital Library Suite. Prior to version 3.9.2, org.kitodo.production.helper.XMLUtils exposes several XML parsing helpers that construct a JAXP parser with the default, non-secure configuration. The methods parseXMLString(String), getNumberOfEADElements(String, String) and checkIfXmlIsWellFormed(String) build a DocumentBuilderFactory / XMLInputFactory / SAXParserFactory via newInstance() and parse the attacker-supplied string without disabling DOCTYPE declarations or external entity resolution. These helpers sit directly on the EAD-import path: an authenticated user who uploads an EAD/XML file through the "Create process" file-upload dialog has the uploaded bytes parsed by these methods. A crafted document with an external entity therefore yields XML External Entity (XXE) injection: local file disclosure and outbound SSRF requests from the server. This issue has been patched in version 3.9.2.
Title Kitodo.Production: XXE in XMLUtils EAD/XML upload parsers (parseXMLString / getNumberOfEADElements / checkIfXmlIsWellFormed lack secure JAXP config)
Weaknesses CWE-611
References
Metrics cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-23T14:54:35.530Z

Reserved: 2026-06-15T22:53:58.560Z

Link: CVE-2026-54668

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T15:17:32.427

Modified: 2026-10-23T15:17:32.427

Link: CVE-2026-54668

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T17:00:15Z

Weaknesses
  • CWE-611

    Improper Restriction of XML External Entity Reference