Skip to content
Heist/ feed
Back to feed
High

Kitodo.Production: XXE in XMLUtils EAD/XML upload parsers (parseXMLString / getNumberOfEADElements / checkIfXmlIsWellFormed lack secure JAXP config)

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-54668
Confirmed fixed CVEs
Not specified
Updated in this feed
5 Nov 2026, 10:21 UTC · Revision 1

Source evidence

Kitodo.Production: XXE in XMLUtils EAD/XML upload parsers (parseXMLString / getNumberOfEADElements / checkIfXmlIsWellFormed lack secure JAXP config)

core-osv · Original source

Published 23 Oct 2026, 14:54 UTC

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.

osv:CVE-2026-54668
Complete source record
{
  "id": "1f4940af40b52ef0f17f4fb994ed86fc2a97167817541b700989cf5a3062722d",
  "url": "https://osv.dev/vulnerability/CVE-2026-54668",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Kitodo.Production: XXE in XMLUtils EAD/XML upload parsers (parseXMLString / getNumberOfEADElements / checkIfXmlIsWellFormed lack secure JAXP config)",
    "summary": "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.",
    "evidence": "osv:CVE-2026-54668",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-54668",
      "aliases": [
        "CVE-2026-54668",
        "GHSA-mff2-fpqj-jg4q"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "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"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/kitodo/kitodo-production",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "1085f934910413ed513b6f91ea01c3914e72d83b"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "3.9.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "1085f934910413ed513b6f91ea01c3914e72d83b"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "kitodo-production-3.9.2"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "3.9.2"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "kitodo-production-3.9.1",
            "kitodo-production-3.9.0",
            "kitodo-production-3.9.0.RC1",
            "kitodo-production-3.8.0.RC1",
            "kitodo-production-3.7.0",
            "kitodo-production-3.6.0",
            "kitodo-production-3.5.0",
            "kitodo-production-3.5.0-beta-1",
            "kitodo-production-3.4.3",
            "kitodo-production-3.3.1",
            "kitodo-production-3.4.0",
            "kitodo-production-3.3",
            "kitodo-production-3.2",
            "kitodo-production-3.1.0",
            "kitodo-production-3.0.1",
            "kitodo-production-3.0.0",
            "kitodo-production-3.0.0-migration.1",
            "kitodo-production-3.0.0-beta.4",
            "kitodo-production-3.0.0-beta.3",
            "kitodo-production-3.0.0-beta.2",
            "kitodo-production-3.0.0-beta.1",
            "kitodo-production-3.0.0-alpha.2",
            "kitodo-production-3.0.0-alpha.1",
            "goobi-ce-1.11.2",
            "goobi-ce-1.11.1",
            "goobi-ce-1.11.0",
            "goobi-ce-1.10.3",
            "goobi-ce-1.10.2",
            "goobi-ce-1.10.1",
            "1.10.1",
            "goobi-ce-1.10.0",
            "1.9.1",
            "1.9_stable"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54668.json"
          }
        }
      ],
      "modified": "2026-10-31T02:30:27.590895410Z",
      "provider": "osv",
      "references": [
        "https://github.com/kitodo/kitodo-production/releases/tag/kitodo-production-3.9.2",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54668.json",
        "https://github.com/kitodo/kitodo-production/security/advisories/GHSA-mff2-fpqj-jg4q",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-54668"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-611"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54668.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-54668",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 511612,
  "published_at": "2026-10-23T14:54:35.53+00:00"
}