Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft PRX/STX archive with traversal path entry
-
DeliveryDeliver file to MPXJ-using app
-
ExploitApp reads/extracts via P3PRXFileReader/SureTrakSTXFileReader
-
ExecutionFile written outside target directory
-
ImpactOverwrite config/startup file for impact
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that an application using MPXJ (Java, or the MPXJ.Net/rubygems/pip ports) at version >= 7.3.0 and < 16.5.0 reads an attacker-controlled Primavera P3 PRX file or SureTrak STX file - both of which are zip-based archives whose entries MPXJ extracts to disk without canonical-path validation. The limiting factor is delivery: the attacker must get their crafted PRX/STX file into a code path that calls the P3 or SureTrak reader (e.g. an upload/import feature that accepts these formats). It does not depend on authentication or a non-default configuration setting, but it is entirely inert unless untrusted PRX/STX input is parsed; the documented workaround is to not read PRX/STX files from untrusted sources. |
| Impact | This is a moderate-severity, low-urgency issue whose real-world risk is heavily gated by exploitation preconditions. The vendor CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N, 5.3) advertises a network, unauthenticated, low-complexity path with limited integrity-only impact, but the mechanism - MPXJ extracting a zip-based Primavera P3 PRX or SureTrak STX archive without validating entry paths (classic zip-slip / CWE-22) - only fires when the host application actually reads an attacker-supplied PRX/STX file. There is no EPSS score, no CISA KEV listing, and no public POC in the provided data, so the correct exploitation status is 'no public exploit identified at time of analysis'; this is a real-but-latent library flaw rather than an actively exploited priority. Two signals are in tension and worth flagging for verification: (1) AV:N is only defensible if a service auto-ingests uploaded project files - for a desktop/CLI consumer of the library this is effectively local (AV:L), so 'network vector' should be verified against the actual deployment. (2) The impact rating is arguably understated: 'write files to arbitrary locations in the filesystem' is a powerful integrity primitive (overwriting configs, cron, startup scripts) that can escalate beyond I:L toward code execution, yet the vendor scored only I:L and A:N - treat the 5.3 as a conservative floor, not a ceiling. |
| Exploit ScenarioDerived | An application (or service) that uses MPXJ to import Primavera P3 or SureTrak project plans is fed a maliciously crafted PRX or STX archive containing an entry with a traversal path (e.g. '../../etc/...' or an absolute path). When MPXJ extracts the archive, it writes the entry outside the intended temp directory, letting the attacker plant or overwrite files at attacker-chosen locations, which can corrupt data or seed executable/config files for follow-on code execution. No public exploit code is identified, but the underlying zip-slip pattern is well-documented and trivially reproducible given a sample file. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 22, 2026
Arbitrary filesystem writes are possible in MPXJ versions 7.3.0 through 16.4.x when an application parses an attacker-supplied Primavera P3 PRX or SureTrak STX file, because the library extracts archive entries to disk without validating that the resolved destination stays inside the intended target directory (CWE-22, a zip-slip style path traversal). The Java library and its ports (pip/mpxj, rubygems/mpxj, nuget/MPXJ.Net, nuget/net.sf.mpxj) are all affected; the CVSS vector AV:N/AC:L/PR:N/UI:N indicates unauthenticated remote exploitation, with the sole impact being integrity (attacker-chosen file writes, including overwrite of existing files reachable by the process). No public exploit code and no confirmed active exploitation were identified at time of analysis, and the real-world risk is gated by whether a consuming application exposes a PRX/STX import path to untrusted input; vendor-released patch: 16.5.0.
RemediationAI
Upgrade MPXJ to version 16.5.0 or later - the exact fixed release published by the maintainer - via the appropriate channel: Maven/Java dependency org.mpxj:mpxj 16.5.0, pip install --upgrade mpxj>=16.5.0, gem update mpxj to >= 16.5.0, or NuGet MPXJ.Net / net.sf.mpxj 16.5.0; the underlying fix is the commit https://github.com/joniles/mpxj/commit/4347315afab1ef5a2907978a754fbc5b0ff58e6f, which adds canonical-path containment checking in FileHelper.validateTargetFileIsInParentDirectory() and applies it in P3PRXFileReader and SureTrakSTXFileReader. If upgrading cannot be done immediately, apply the vendor-documented workaround of not reading PRX or STX files from untrusted sources - implement this concretely by rejecting .prx and .stx uploads at the application boundary (content-type/extension allow-listing), parsing these formats only from a trusted internal directory, or disabling PRX/STX import entirely; the trade-off is loss of legitimate legacy-format import functionality. Because the write primitive operates with the privileges of the parsing process, running MPXJ-based parsers under a low-privileged, containerised account with a read-only root filesystem and a writable tmpfs confined to a dedicated scratch directory materially limits what an escaped path can overwrite, at the cost of added deployment complexity, and should be treated as defence in depth rather than a substitute for the 16.5.0 upgrade. Consult the advisory at https://github.com/joniles/mpxj/security/advisories/GHSA-7952-gx68-cjqr for the authoritative statement of the fix and workaround.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 11 packages in maven, nuget, pypi and 2 more
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MPXJ is a widely used open source scheduling library (Java, with .NET, Python and Ruby ports) that reads and writes project-plan formats such as Microsoft Project, Primavera P3/P6 and SureTrak. The Primavera P3 PRX and SureTrak STX formats are container archives: MPXJ's P3PRXFileReader and SureTrakSTXFileReader (org.mpxj.primavera.p3, org.mpxj.primavera.suretrak) expand their members to a temporary working directory on disk. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory): the extraction code built a target File from the entry name without canonicalising it and confirming it was contained by the destination directory, so an entry named with ../ sequences (or an absolute path) escapes the extraction root - the classic 'zip slip' traversal. Notably, the same containment check already existed inline in the generic ZIP stream handling in InputStreamHelper, but it was not applied in these two project-file readers; the upstream fix refactors the check into FileHelper.validateTargetFileIsInParentDirectory(), which canonicalises both the parent directory and the target file and throws IOException('Entry is outside of the target dir: ...') when the target does not start with the parent path, and then invokes it from both P3PRXFileReader.extractFile() and SureTrakSTXFileReader.extractFile() as well as from the ZIP stream path. Impact is limited to integrity (C:N/I:H/A:N under the independent assessment): the attacker cannot read data through this path but can create files in, or overwrite files at, any location writable by the process running the parse, which in a privileged service context can be escalated to code execution via planted configuration or executable files.
Know when Mpxj 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Arbitrary file write to attacker-chosen locations is a high-integrity primitive (I:H, not I:L); AV:N/PR:N/UI:N retained for a service auto-ingesting uploaded PRX/STX, though a local-only caller would be AV:L.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
MPXJ is an open source library to read and write project plans from a variety of file formats and databases. From 7.3.0 until 16.5.0, reading a suitably crafted Primavera P3 PRX or SureTrak STX file can cause MPXJ to write files to arbitrary locations in the filesystem. This issue is fixed in version 16.5.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
MPXJ through 8.1.3 allows XXE attacks. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable, n
MPXJ's MerlinReader (versions 5.5.5 through 16.4.1) creates a default-configured DocumentBuilder when parsing XML taken
common/InputStreamHelper.java in Packwood MPXJ before 8.3.5 allows directory traversal in the zip stream handler flow, l
MPXJ is an open source library to read and write project plans from a variety of file formats and databases. Rated low s
EUVD-2026-84819
GHSA-7952-gx68-cjqr
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB