/

CVE-2026-61570

Severity:

HIGH RISK

(7.5)

XXE (CWE-611) in MPXJ MerlinReader XML Document Parsing

CVE-2026-61570

Awaiting Analysis

Vulnerability type

Category:

XML External Entity (XXE) Injection

CWE:

CWE-611

Impact:

Arbitrary Local File Read and Potential Information Disclosure

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

MPXJ's MerlinReader parses XML stored in a Merlin project SQLite database with external entity processing enabled. A crafted database may cause the parser to access arbitrary local files, although subsequent XML handling may make disclosure of the file contents unlikely.

Affected context

The issue occurs when MPXJ versions in the affected range use MerlinReader to process XML from the ZTIMEINTERVALS column of a Merlin project SQLite database. Risk exists when an attacker can supply or cause processing of a crafted database and the XML parser permits document type declarations and external entity resolution.

Exploit preconditions

  • Attack surface: Merlin project database ingestion through MPXJ's MerlinReader
  • Required access: Ability to provide, replace, or influence a Merlin SQLite database processed by the application
  • Trigger point: XML parsing of the ZTIMEINTERVALS column
  • Why exploitation is possible: Default XML parser settings leave document type declarations and external entities enabled, allowing crafted XML to request local resources during parsing

Why this happens

The underlying bug is insecure XML parser configuration. MerlinReader creates a DocumentBuilder without disabling document type declarations and external entity resolution, so XML from a database is treated as trusted despite being attacker-influenced. This maps to CWE-611: Improper Restriction of XML External Entity Reference, in which external entity processing can make a parser access local files or other resources.

Potential impact

  • An attacker may cause access to arbitrary local files available to the parsing process
  • Sensitive information could be exposed if parsed content is returned or persisted
  • The application could make unintended requests to local or reachable resources
  • Processing of crafted project databases could cause errors or availability impact

General mitigation guidance

Mitigation generally focuses on making XML parsing safe by default and reducing trust in imported project databases.

Common defensive patterns include:

  • Disable document type declarations and external entity resolution in XML parser configuration
  • Use hardened, non-network-capable parser settings for untrusted XML
  • Apply strict schema and content validation after safe parsing
  • Treat imported SQLite databases and embedded XML as untrusted input
  • Run file-processing components with least-privilege filesystem and network access
  • Avoid exposing sensitive files to processes that handle untrusted project data

How teams detect issues like this

Organizations can detect related issues through:

  • Static analysis rules identifying XML parser construction without secure entity settings
  • Code review checks for DocumentBuilderFactory instances that do not explicitly restrict DTDs and external entities
  • Tests using XML fixtures containing document type declarations and external entity references
  • Dependency and policy checks covering libraries that process attacker-supplied project files or databases
  • Runtime monitoring for unexpected file access or outbound requests from document-processing components

Automated code review and application security tools may help identify insecure XML parser configurations.

Sources

SourceLink
github.comgithub.com/joniles/mpxj/commit/6e8288bc4d1cd62842af298004dc74fe66fb0805
github.comgithub.com/joniles/mpxj/releases/tag/v16.4.1
github.comgithub.com/joniles/mpxj/security/advisories/GHSA-5vvx-3h34-f3gj

Frequently asked

questions

Exploitability depends on how project databases reach the application. A remote attacker may be able to exploit it if the application accepts untrusted databases through a network-accessible workflow; otherwise, local or supply-chain access may be required.

The attacker generally needs the ability to provide or influence a Merlin SQLite database that MPXJ will process. No separate privilege inside the parser is necessarily required once the crafted file reaches the vulnerable code path.

Configure XML parsers to reject document type declarations and external entity resolution, and use hardened settings that prevent local file and network access during parsing.

Treat embedded XML and project files as untrusted, enforce secure parser policies in reusable libraries, test entity-related edge cases, and limit the filesystem and network privileges of file-processing components.

Find out what's already
exploitable in your codebase.