CVE-2026-61570
MPXJ: XXE Vulnerability in MerlinReader
MPXJ is an open source library to read and write project plans from a variety of file formats and databases. From 5.5.5 until 16.4.1, MerlinReader creates a DocumentBuilder with default settings while parsing XML from the ZTIMEINTERVALS column of a Merlin project SQLite database, leaving doctype declarations and external entities enabled. A crafted database can cause the parser to read an arbitrary local file, although MPXJ's subsequent handling of the parsed XML makes disclosure of the file contents unlikely. This issue is fixed in version 16.4.1.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
7.5
MPXJ: XXE Vulnerability in MerlinReader
MPXJ is an open source library to read and write project plans from a variety of file formats and databases. From 5.5.5 until 16.4.1, MerlinReader creates a DocumentBuilder with default settings while parsing XML from the ZTIMEINTERVALS column of a Merlin project SQLite database, leaving doctype declarations and external entities enabled. A crafted database can cause the parser to read an arbitrary local file, although MPXJ's subsequent handling of the parsed XML makes disclosure of the file contents unlikely. This issue is fixed in version 16.4.1.
- Record
CVE-2026-61570- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-611
- Updated
- 2026-11-02
EUVDEUVD-2026-84820
7.5
MPXJ is an open source library to read and write project plans from a variety of file formats and databases. From 5.5.5 until 16.4.1, MerlinReader creates a DocumentBuilder with default settings while parsing XML from the ZTIMEINTERVALS column of a Merlin project SQLite database, leaving doctype declarations and external entities enabled. A crafted database can cause the parser to read an arbitrary local file, although MPXJ's subsequent handling of the parsed XML makes disclosure of the file contents unlikely. This issue is fixed in version 16.4.1.
- Record
EUVD-2026-84820- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-5vvx-3h34-f3gj
7.5
MPXJ: XXE Vulnerability in MerlinReader
Impact
MPXJ used the default configuration when creating a DocumentBuilder instance, which leaves doctype declarations enabled, when parsing the XML content of the ZTIMEINTERVALS column from a Merlin project SQLite file. This would allow a carefully crafted XML payload to read an arbitrary file. However, although an arbitrary file can be read, the way the resulting parsed XML is processed by MPXJ means that the data it contains is unlikely to be available for exfiltration.
Patches
The patch is included in MPXJ 16.4.1
Workarounds
Potential workarounds include:
- Avoid reading Merlin project files with MPXJ
- Only accept Merlin project files from trusted sources
- Preprocess Merlin SQLite databases to strip doctype declarations from the ZTIMEINTERVALS column
- Record
GHSA-5vvx-3h34-f3gj- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-611
- Updated
- 2026-11-02
NVD
7.5
MPXJ is an open source library to read and write project plans from a variety of file formats and databases. From 5.5.5 until 16.4.1, MerlinReader creates a DocumentBuilder with default settings while parsing XML from the ZTIMEINTERVALS column of a Merlin project SQLite database, leaving doctype declarations and external entities enabled. A crafted database can cause the parser to read an arbitrary local file, although MPXJ's subsequent handling of the parsed XML makes disclosure of the file contents unlikely. This issue is fixed in version 16.4.1.
- Record
CVE-2026-61570- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-611
- Updated
- 2026-11-02
OSV
7.5
MPXJ: XXE Vulnerability in MerlinReader
MPXJ is an open source library to read and write project plans from a variety of file formats and databases. From 5.5.5 until 16.4.1, MerlinReader creates a DocumentBuilder with default settings while parsing XML from the ZTIMEINTERVALS column of a Merlin project SQLite database, leaving doctype declarations and external entities enabled. A crafted database can cause the parser to read an arbitrary local file, although MPXJ's subsequent handling of the parsed XML makes disclosure of the file contents unlikely. This issue is fixed in version 16.4.1.
- Record
CVE-2026-61570- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-611
- Updated
- 2026-11-07
OSVGHSA-5vvx-3h34-f3gj
7.5
MPXJ: XXE Vulnerability in MerlinReader
Impact
MPXJ used the default configuration when creating a DocumentBuilder instance, which leaves doctype declarations enabled, when parsing the XML content of the ZTIMEINTERVALS column from a Merlin project SQLite file. This would allow a carefully crafted XML payload to read an arbitrary file. However, although an arbitrary file can be read, the way the resulting parsed XML is processed by MPXJ means that the data it contains is unlikely to be available for exfiltration.
Patches
The patch is included in MPXJ 16.4.1
Workarounds
Potential workarounds include:
- Avoid reading Merlin project files with MPXJ
- Only accept Merlin project files from trusted sources
- Preprocess Merlin SQLite databases to strip doctype declarations from the ZTIMEINTERVALS column
- Record
GHSA-5vvx-3h34-f3gj- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-611
- Updated
- 2026-11-02
OSVPYSEC-2026-4107
7.5
MPXJ: XXE Vulnerability in MerlinReader
Impact
MPXJ used the default configuration when creating a DocumentBuilder instance, which leaves doctype declarations enabled, when parsing the XML content of the ZTIMEINTERVALS column from a Merlin project SQLite file. This would allow a carefully crafted XML payload to read an arbitrary file. However, although an arbitrary file can be read, the way the resulting parsed XML is processed by MPXJ means that the data it contains is unlikely to be available for exfiltration.
Patches
The patch is included in MPXJ 16.4.1
Workarounds
Potential workarounds include:
- Avoid reading Merlin project files with MPXJ
- Only accept Merlin project files from trusted sources
- Preprocess Merlin SQLite databases to strip doctype declarations from the ZTIMEINTERVALS column
- Record
PYSEC-2026-4107- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
net.sf.mpxj:mpxjMaven |
5.5.5 up to 16.4.1 | 16.4.1 |
mpxjRubyGems |
5.5.5 up to 16.4.1 | 16.4.1 |
MPXJ.NetNuGet |
5.5.5 up to 16.4.1 | 16.4.1 |
net.sf.mpxjNuGet |
5.5.5 up to 16.4.1 | 16.4.1 |
net.sf.mpxj-for-csharpNuGet |
5.5.5 up to 16.4.1 | 16.4.1 |
net.sf.mpxj-for-vbNuGet |
5.5.5 up to 16.4.1 | 16.4.1 |
mpxjPyPI |
5.5.5 up to 16.4.1 | 16.4.1 |
net.sf.mpxj:mpxjMaven |
5.5.5 up to 16.4.1, plus listed versions 10.0.010.0.110.0.310.0.410.0.5 Show 45 moreShow less10.1.010.10.010.11.010.12.010.13.010.14.010.14.110.15.010.16.010.16.110.16.210.2.010.3.010.4.010.5.010.6.010.6.110.6.210.7.010.8.010.9.010.9.111.0.011.1.011.2.011.3.011.3.111.3.211.4.011.5.011.5.111.5.211.5.311.5.412.0.012.0.112.0.212.1.012.1.112.1.212.1.312.10.012.10.112.10.212.10.3 |
16.4.1 |
mpxjRubyGems |
5.5.5 up to 16.4.1, plus listed versions 10.0.010.0.110.0.210.0.310.0.4 Show 45 moreShow less10.0.510.1.010.10.010.11.010.12.010.13.010.14.010.14.110.15.010.16.010.16.110.16.210.2.010.3.010.4.010.5.010.6.010.6.110.6.210.7.010.8.010.9.010.9.111.0.011.1.011.2.011.3.011.3.111.3.211.4.011.5.011.5.111.5.211.5.311.5.412.0.012.0.112.0.212.1.012.1.112.1.212.1.312.10.012.10.112.10.2 |
16.4.1 |
MPXJ.NetNuGet |
5.5.5 up to 16.4.1, plus listed versions 13.0.013.0.113.0.213.1.013.10.0 Show 38 moreShow less13.11.013.12.013.2.013.2.113.2.213.3.013.3.113.4.013.4.113.4.213.5.013.5.113.6.013.8.013.9.014.0.014.1.014.2.014.3.014.3.114.3.214.3.314.3.414.3.514.4.014.5.014.5.114.5.215.0.015.1.015.2.015.3.015.3.116.0.016.1.016.2.016.3.016.4.0 |
16.4.1 |
Show 4 moreShow less
| Package | Affected | Fixed |
|---|---|---|
net.sf.mpxjNuGet |
5.5.5 up to 16.4.1, plus listed versions 10.0.010.0.110.0.210.0.310.0.4 Show 45 moreShow less10.0.510.1.010.10.010.11.010.12.010.13.010.14.010.14.110.15.010.16.010.16.110.16.210.2.010.3.010.4.010.5.010.6.010.6.110.6.210.7.010.8.010.9.010.9.111.0.011.1.011.2.011.3.011.3.111.3.211.4.011.5.011.5.111.5.211.5.311.5.412.0.012.0.112.0.212.1.012.1.112.1.212.1.312.10.012.10.112.10.2 |
16.4.1 |
net.sf.mpxj-for-csharpNuGet |
5.5.5 up to 16.4.1, plus listed versions 10.0.010.0.110.0.210.0.310.0.4 Show 45 moreShow less10.0.510.1.010.10.010.11.010.12.010.13.010.14.010.14.110.15.010.16.010.16.110.16.210.2.010.3.010.4.010.5.010.6.010.6.110.6.210.7.010.8.010.9.010.9.111.0.011.1.011.2.011.3.011.3.111.3.211.4.011.5.011.5.111.5.211.5.311.5.412.0.012.0.112.0.212.1.012.1.112.1.212.1.312.10.012.10.112.10.2 |
16.4.1 |
net.sf.mpxj-for-vbNuGet |
5.5.5 up to 16.4.1, plus listed versions 10.0.010.0.110.0.210.0.310.0.4 Show 45 moreShow less10.0.510.1.010.10.010.11.010.12.010.13.010.14.010.14.110.15.010.16.010.16.110.16.210.2.010.3.010.4.010.5.010.6.010.6.110.6.210.7.010.8.010.9.010.9.111.0.011.1.011.2.011.3.011.3.111.3.211.4.011.5.011.5.111.5.211.5.311.5.412.0.012.0.112.0.212.1.012.1.112.1.212.1.312.10.012.10.112.10.2 |
16.4.1 |
mpxjPyPI |
5.5.5 up to 16.4.1, plus listed versions 10.0.010.0.110.0.210.0.310.0.4 Show 45 moreShow less10.0.510.1.010.10.010.11.010.12.010.13.010.14.010.14.110.15.010.16.010.16.110.16.210.2.010.3.010.4.010.5.010.6.010.6.110.6.210.7.010.8.010.9.010.9.111.0.011.1.011.2.011.3.011.3.111.3.211.4.011.5.011.5.111.5.211.5.311.5.412.0.012.0.112.0.212.1.112.1.212.1.312.10.012.10.112.10.212.10.3 |
16.4.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-61570 is a high vulnerability (CVSS 7.5) in Joniles Mpxj, published September 22, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.47%, the 41st percentile. Fixed in net.sf.mpxj:mpxj 16.4.1.
References
github.com/joniles/mpxj/security/advisories/GHSA-5vvx-3h34-f3gj
github.com/joniles/mpxj/commit/6e8288bc4d1cd62842af298004dc74fe66fb0805
github.com/joniles/mpxj/releases/tag/v16.4.1
github.com/advisories/GHSA-5vvx-3h34-f3gj
github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61570.json
nvd.nist.gov/vuln/detail/CVE-2026-61570
github.com/joniles/mpxj
pypi.org/project/mpxj
Left out here: 791 versions. The JSON record has them.