Skip to main content

MPXJ CVE-2026-65829

| EUVDEUVD-2026-84819 MEDIUM
Path Traversal (CWE-22)
2026-09-22 GitHub_M GHSA-7952-gx68-cjqr
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft PRX/STX archive with traversal path entry
  2. Delivery
    Deliver file to MPXJ-using app
  3. Exploit
    App reads/extracts via P3PRXFileReader/SureTrakSTXFileReader
  4. Execution
    File written outside target directory
  5. Impact
    Overwrite 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

mpxj 7.3.0, < 16.5.0

Affected Packages

maven mpxj fix: 16.5.0
maven mpxj.net fix: 16.5.0
maven net.sf.mpxj fix: 16.5.0
maven net.sf.mpxj-for-csharp fix: 16.5.0
maven net.sf.mpxj-for-vb fix: 16.5.0
maven net.sf.mpxj:mpxj fix: 16.5.0
nuget mpxj fix: 16.5.0
nuget mpxj.net fix: 16.5.0
nuget net.sf.mpxj fix: 16.5.0
nuget net.sf.mpxj-for-csharp fix: 16.5.0
nuget net.sf.mpxj-for-vb fix: 16.5.0
nuget net.sf.mpxj:mpxj fix: 16.5.0
pypi mpxj fix: 16.5.0
pypi mpxj-net fix: 16.5.0
pypi net-sf-mpxj fix: 16.5.0
pypi net-sf-mpxj-for-csharp fix: 16.5.0
pypi net-sf-mpxj-for-vb fix: 16.5.0
pypi net-sf-mpxj:mpxj fix: 16.5.0
rubygems mpxj fix: 16.5.0
rubygems mpxj.net fix: 16.5.0
rubygems net.sf.mpxj fix: 16.5.0
rubygems net.sf.mpxj-for-csharp fix: 16.5.0
rubygems net.sf.mpxj-for-vb fix: 16.5.0
rubygems net.sf.mpxj:mpxj fix: 16.5.0
euvd mpxj fix: 16.5.0

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

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Sep 22, 2026 - 21:03 EUVD

DescriptionCVE.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

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Low
niche open-source project-plan parsing library, limited enterprise footprint
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy