<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-04T01:14:01.816368+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/fkie_cve-2026-45774</id>
    <title>fkie_cve-2026-45774</title>
    <updated>2026-10-04T01:14:01.831528+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>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.</p>
      </div>
    </content>
    <link href="https://db.gcve.eu/vuln/fkie_cve-2026-45774"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-mj4x-vf5c-5xg8</id>
    <title>GHSA-mj4x-vf5c-5xg8 — compliance-trestle Profile Import has an Arbitrary File Read via trestle:// URI and Relative Path Traversal</title>
    <updated>2026-10-04T01:14:01.831624+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: compliance-trestle</p>
<p>## Summary</p>
<p>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.</p>
<p>Three attack vectors confirmed:
1. **PT-001:** `trestle://../../etc/passwd` — via trestle:// URI scheme
2. **PT-002:** `../../etc/passwd` — via relative path in href
3. **PT-003:** back_matter rlinks with traversal paths</p>
<p>**Preconditions:** Victim must import/resolve an attacker-controlled OSCAL profile YAML.</p>
<p>## Affected Component</p>
<p>**Repository:** https://github.com/IBM/compliance-trestle
**File:** `trestle/core/remote/cache.py` (lines 175-179)
**File:** `trestle/core/resolver/_import.py` (line 104)
**Version:** v4.0.2 (latest as of 2026-04-30)</p>
<p>## Vulnerable Code</p>
<p>### cache.py:175-179 — LocalFetcher (trestle:// URI handling)</p>
<p>```python
class LocalFetcher(FetcherBase):
    def __init__(self, trestle_root: pathlib.Path, uri: str) -&gt; None:
        super().__init__(trestle_root, uri)
        # ...
        elif uri.startswith(const.TRESTLE_HREF_HEADING):
            uri = str(trestle_root / uri[len(const.TRESTLE_HREF_HEADING) :])
            self._abs_path = pathlib.Path(uri).resolve()
            # ❌ NO boundary check — .resolve() follows…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-mj4x-vf5c-5xg8"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/pysec-2026-2426</id>
    <title>PYSEC-2026-2426 — compliance-trestle Profile Import has an Arbitrary File Read via trestle:// URI and Relative Path Traversal</title>
    <updated>2026-10-04T01:14:01.831761+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: compliance-trestle</p>
<p>## Summary</p>
<p>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.</p>
<p>Three attack vectors confirmed:
1. **PT-001:** `trestle://../../etc/passwd` — via trestle:// URI scheme
2. **PT-002:** `../../etc/passwd` — via relative path in href
3. **PT-003:** back_matter rlinks with traversal paths</p>
<p>**Preconditions:** Victim must import/resolve an attacker-controlled OSCAL profile YAML.</p>
<p>## Affected Component</p>
<p>**Repository:** https://github.com/IBM/compliance-trestle
**File:** `trestle/core/remote/cache.py` (lines 175-179)
**File:** `trestle/core/resolver/_import.py` (line 104)
**Version:** v4.0.2 (latest as of 2026-04-30)</p>
<p>## Vulnerable Code</p>
<p>### cache.py:175-179 — LocalFetcher (trestle:// URI handling)</p>
<p>```python
class LocalFetcher(FetcherBase):
    def __init__(self, trestle_root: pathlib.Path, uri: str) -&gt; None:
        super().__init__(trestle_root, uri)
        # ...
        elif uri.startswith(const.TRESTLE_HREF_HEADING):
            uri = str(trestle_root / uri[len(const.TRESTLE_HREF_HEADING) :])
            self._abs_path = pathlib.Path(uri).resolve()
            # ❌ NO boundary check — .resolve() follows…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/pysec-2026-2426"/>
  </entry>
</feed>
