Skip to content
Heist/ feed
Back to feed
Medium

compliance-trestle Profile Import has an Arbitrary File Read via trestle:// URI and Relative Path Traversal

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-45774
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 13:14 UTC · Revision 1

Source evidence

compliance-trestle Profile Import has an Arbitrary File Read via trestle:// URI and Relative Path Traversal

core-osv · Original source

Published 13 Aug 2026, 19:26 UTC

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.

osv:CVE-2026-45774
Complete source record
{
  "id": "7ec375daf398f5f6327f4fbc1a01c849c130b165d03a382c145d9dc5dbdb2b5f",
  "url": "https://osv.dev/vulnerability/CVE-2026-45774",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "compliance-trestle Profile Import has an Arbitrary File Read via trestle:// URI and Relative Path Traversal",
    "summary": "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.",
    "evidence": "osv:CVE-2026-45774",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-45774",
      "aliases": [
        "CVE-2026-45774",
        "GHSA-mj4x-vf5c-5xg8",
        "PYSEC-2026-2426"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/oscal-compass/compliance-trestle",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "e465a917c80f5b28a45fd01f204aed1223ed626f"
                },
                {
                  "introduced": "d965ee5a9a1c2680c80bfa3e63cd75f4fc488881"
                },
                {
                  "fixed": "c797d962d0cc249b4dff767c506e3c23ee0dce70"
                },
                {
                  "fixed": "5c65c5926fe7ca908b9c1d281f904e7d97ba8310"
                },
                {
                  "fixed": "d00a0c2f702c24f7016009fbd626036f5c46f47b"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "3.12.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "4.0.0"
                      },
                      {
                        "fixed": "4.0.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5c65c5926fe7ca908b9c1d281f904e7d97ba8310"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "d00a0c2f702c24f7016009fbd626036f5c46f47b"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v3.12.1",
            "v4.0.2",
            "v3.12.0",
            "v4.0.1",
            "v4.0.0",
            "v3.11.0",
            "v3.10.4",
            "v3.10.3",
            "v3.10.2",
            "v3.10.1",
            "v3.10.0",
            "v3.9.3",
            "v3.9.2",
            "v3.9.1",
            "v3.9.0",
            "v3.8.1",
            "v3.8.0",
            "v3.7.0",
            "v3.6.0",
            "v3.5.0",
            "v3.4.0",
            "v3.3.0",
            "v3.2.0",
            "v3.1.0",
            "v3.0.1",
            "v2.6.1",
            "v2.6.0",
            "v2.5.1",
            "v2.5.0",
            "v2.4.0",
            "v2.3.1",
            "v2.3.0",
            "v2.2.1",
            "v2.2.0",
            "v2.1.1",
            "v2.1.0",
            "v2.0.0",
            "v1.2.0",
            "v1.1.0",
            "v1.0.2",
            "v1.0.1",
            "v1.0.0",
            "v0.37.0",
            "v0.36.0",
            "v0.35.0",
            "v0.34.0",
            "v0.33.0",
            "v0.32.1",
            "v0.32.0",
            "v0.31.0",
            "v0.30.0",
            "v0.29.0",
            "v0.28.1",
            "v0.28.0",
            "v0.27.2",
            "v0.27.1",
            "v0.27.0",
            "v0.26.0",
            "v0.25.1",
            "v0.25.0",
            "v0.24.0",
            "v0.23.0",
            "v0.22.1",
            "v0.22.0",
            "v0.21.0",
            "v0.20.0",
            "v0.19.0",
            "v0.18.1",
            "v0.18.0",
            "v0.17.0",
            "v0.16.0",
            "v0.15.1",
            "v0.15.0",
            "v0.14.4",
            "v0.14.3",
            "v0.14.2",
            "v0.14.1",
            "v0.14.0",
            "v0.13.1",
            "v0.13.0",
            "v0.12.0",
            "v0.11.0",
            "v0.10.0",
            "v0.9.0",
            "v0.8.1",
            "v0.8.0",
            "v0.7.2",
            "v0.7.1",
            "v0.7.0",
            "v0.6.2",
            "v0.6.1",
            "v0.6.0",
            "v0.4.0",
            "v0.3.0",
            "v0.2.2",
            "v0.2.1",
            "v0.2.0",
            "v0.1.1",
            "v0.1.0",
            "v0.0.3",
            "v0.0.2"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-45774.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:28.992025293Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45774.json",
        "https://github.com/oscal-compass/compliance-trestle/security/advisories/GHSA-mj4x-vf5c-5xg8",
        "https://github.com/pypa/advisory-database/tree/main/vulns/compliance-trestle/PYSEC-2026-2426.yaml",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-45774",
        "https://github.com/oscal-compass/compliance-trestle/commit/5c65c5926fe7ca908b9c1d281f904e7d97ba8310",
        "https://github.com/oscal-compass/compliance-trestle/commit/d00a0c2f702c24f7016009fbd626036f5c46f47b"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-22"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45774.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-45774",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 495744,
  "published_at": "2026-08-13T19:26:44.243+00:00"
}