p PatchFirst

CVE-2026-57171

CVE-2026-57171 · Trestle is vulnerable to arbitrary file write via path traversal in author generate commands (Incomplete fix of CVE-2026-46345)

This page contains facts from public vulnerability sources. Check the original advisory before updating.

Compliance-trestle (Trestle) is a Python SDK and command-line tool for managing OSCAL compliance documents. In versions before 3.12.4 and versions 4.0.0 through 4.0.3, the catalog-generate, profile-generate, and ssp-generate author commands write generated Markdown to an attacker-influenced output path without path-traversal validation, allowing arbitrary file write outside the Trestle workspace. These commands join the user-supplied output argument onto the Trestle root and write to the result, but guard it only with an is_directory_name_allowed() task-name-collision check rather than the PathSecurityValidator.validate_local_path() guard used by the jinja command, so an absolute path or one containing traversal sequences escapes the workspace and writes files under an attacker-chosen location as the invoking process owner. The security boundary is crossed when a trusted CI job, shared service, or wrapper derives the output argument from repository-controlled, tenant-controlled, or otherwise untrusted data while expecting output to stay inside the workspace. When --force-overwrite is used, the selected output directory is first recursively deleted, extending the primitive to destruction of an attacker-chosen directory tree and enabling indirect code execution by overwriting files a pipeline later runs. This issue is fixed in versions 3.12.4 and 4.1.0.

CVSS 7.7 · High · EPSS 0.2% · Public exploit · Fix available

Published
Updated

Stack: python

Affected products and versions

  • compliance-trestle

    Versions
    • < 3.12.4: Affected
    • >= 4.0.0, < 4.1.0: Affected

    No fix published

  • compliance-trestle PyPI

    Versions
    • 0.0.2
    • 0.0.3
    • 0.1.0
    • 0.1.1
    • 0.10.0
    • 0.11.0
    • 0.12.0
    • 0.13.0
    • 0.13.1
    • 0.14.0
    • 0.14.1
    • 0.14.2
    • 0.14.3
    • 0.14.4
    • 0.15.0
    • 0.15.1
    • 0.16.0
    • 0.17.0
    • 0.18.0
    • 0.18.1
    • 0.19.0
    • 0.2.0
    • 0.2.1
    • 0.2.2
    • 0.20.0
    • 0.21.0
    • 0.22.0
    • 0.22.1
    • 0.23.0
    • 0.24.0
    • 0.25.0
    • 0.25.1
    • 0.26.0
    • 0.27.0
    • 0.27.1
    • 0.27.2
    • 0.28.0
    • 0.28.1
    • 0.29.0
    • 0.3.0
    • 0.30.0
    • 0.31.0
    • 0.32.0
    • 0.32.1
    • 0.33.0
    • 0.34.0
    • 0.35.0
    • 0.36.0
    • 0.37.0
    • 0.4.0
    • 0.5.0
    • 0.6.0
    • 0.6.1
    • 0.6.2
    • 0.7.0
    • 0.7.1
    • 0.7.2
    • 0.8.0
    • 0.8.1
    • 0.9.0
    • 1.0.0rc0
    • 1.0.1
    • 1.0.2
    • 1.1.0
    • 1.2.0
    • 2.0.0
    • 2.1.0
    • 2.1.1
    • 2.2.0
    • 2.2.1
    • 2.3.0
    • 2.3.1
    • 2.4.0
    • 2.5.0
    • 2.5.1
    • 2.6.0
    • 2.6.1
    • 3.0.1
    • 3.1.0
    • 3.10.2
    • 3.10.3
    • 3.10.4
    • 3.11.0
    • 3.12.0
    • 3.12.1
    • 3.12.2
    • 3.12.3
    • 3.2.0
    • 3.3.0
    • 3.4.0
    • 3.5.0
    • 3.6.0
    • 3.7.0
    • 3.8.0
    • 3.8.1
    • 3.9.0
    • 3.9.1
    • 3.9.2
    • 3.9.3
    Affected ranges
    • ECOSYSTEM: < 3.12.4

    Update to 3.12.4

  • compliance-trestle PyPI

    Versions
    • 4.0.0
    • 4.0.1
    • 4.0.2
    • 4.0.3
    Affected ranges
    • ECOSYSTEM: ≥ 4.0.0, < 4.1.0

    Update to 4.1.0

  • compliance-trestle PyPI

    Versions
    • 0.0.2
    • 0.0.3
    • 0.1.0
    • 0.1.1
    • 0.10.0
    • 0.11.0
    • 0.12.0
    • 0.13.0
    • 0.13.1
    • 0.14.0
    • 0.14.1
    • 0.14.2
    • 0.14.3
    • 0.14.4
    • 0.15.0
    • 0.15.1
    • 0.16.0
    • 0.17.0
    • 0.18.0
    • 0.18.1
    • 0.19.0
    • 0.2.0
    • 0.2.1
    • 0.2.2
    • 0.20.0
    • 0.21.0
    • 0.22.0
    • 0.22.1
    • 0.23.0
    • 0.24.0
    • 0.25.0
    • 0.25.1
    • 0.26.0
    • 0.27.0
    • 0.27.1
    • 0.27.2
    • 0.28.0
    • 0.28.1
    • 0.29.0
    • 0.3.0
    • 0.30.0
    • 0.31.0
    • 0.32.0
    • 0.32.1
    • 0.33.0
    • 0.34.0
    • 0.35.0
    • 0.36.0
    • 0.37.0
    • 0.4.0
    • 0.5.0
    • 0.6.0
    • 0.6.1
    • 0.6.2
    • 0.7.0
    • 0.7.1
    • 0.7.2
    • 0.8.0
    • 0.8.1
    • 0.9.0
    • 1.0.0rc0
    • 1.0.1
    • 1.0.2
    • 1.1.0
    • 1.2.0
    • 2.0.0
    • 2.1.0
    • 2.1.1
    • 2.2.0
    • 2.2.1
    • 2.3.0
    • 2.3.1
    • 2.4.0
    • 2.5.0
    • 2.5.1
    • 2.6.0
    • 2.6.1
    • 3.0.1
    • 3.1.0
    • 3.10.2
    • 3.10.3
    • 3.10.4
    • 3.11.0
    • 3.12.0
    • 3.12.1
    • 3.12.2
    • 3.12.3
    • 3.2.0
    • 3.3.0
    • 3.4.0
    • 3.5.0
    • 3.6.0
    • 3.7.0
    • 3.8.0
    • 3.8.1
    • 3.9.0
    • 3.9.1
    • 3.9.2
    • 3.9.3
    • 4.0.0
    • 4.0.1
    • 4.0.2
    • 4.0.3
    Affected ranges
    • ECOSYSTEM: < 3.12.4 ∪ ≥ 4.0.0, < 4.1.0

    Update to 3.12.4; Update to 4.1.0

Original sources

Check your server →