CVE-2026-45774 compliance-trestle Profile Import has an Arbitrary File Read via trestle:// URI and Relative Path Traversal
An attacker can read arbitrary files from the server filesystem by crafting a malicious OSCAL profile with path traversal sequences in the import URI.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-45774?
CVE-2026-45774 is a medium-severity path traversal vulnerability in oscal-compass compliance-trestle, published on 13 Aug 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official description
compliance-trestle is a tooling platform for managing compliance as code. Prior to versions 3.12.2 and 4.0.3, the compliance-trestle library's profile import mechanism resolves `trestle://` URIs and relative file paths by joining them with `trestle_root` and calling `.resolve()`, but performs no boundary check to ensure the resolved path stays within the trestle workspace. An attacker can craft a malicious OSCAL profile YAML with `imports[].href` containing path traversal sequences to read arbitrary files from the server filesystem. Versions 3.12.3 and 4.0.3 patch the issue.
Weakness: CWE-22
Which versions are affected by CVE-2026-45774?
5 open source packages ship an affected version, including compliance-trestle.
| Package | Affected | Fixed in |
|---|---|---|
compliance-trestle PyPI | All versions | 3.12.2, 4.0.3 |
compliance-trestle PyPI | All versions | 3.12.2 |
compliance-trestle PyPI | All versions | 3.12.2 |
compliance-trestle PyPI | From 4.0.0 | 4.0.3 |
compliance-trestle PyPI | From 4.0.0 | 4.0.3 |
How do I fix CVE-2026-45774?
Upgrade compliance-trestle to a fixed version for your release line: 3.12.2 or 4.0.3.
Upgrade, and resolve every user-supplied path against an allowed base folder before opening it. More about Path traversal.
Is CVE-2026-45774 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-45774 exists.
Sources
Also known as GHSA-mj4x-vf5c-5xg8, PYSEC-2026-2426.