SEPTEMBER 18, 2026
Live Feed
Back to database
Case File

CVE-2026-57170

HIGH · CVSS 7.8 EPSS 0.20% Public Exploit

Source: NVD + CISA KEV + EPSS · Published 2026-08-26 · Last synced 2026-09-18

CyberRota Analysis

AI-Generated

Versions of Compliance-trestle prior to 3.12.4 and between 4.0.0 and 4.0.3 are vulnerable to server-side template injection due to improper handling of custom Jinja2 include tags, allowing attackers to execute arbitrary code. This vulnerability poses a significant risk for organizations using Trestle to manage OSCAL compliance documents, as it can lead to unauthorized access and manipulation of sensitive data. Users of affected versions should prioritize upgrading to version 4.1.0 to mitigate this high-severity risk.

Public Exploit Signal

A public exploit, PoC, GitHub repository or Metasploit reference was detected for this CVE.

Detected Signals
arbitrary code execution code execution

Note: these links are listed for security research and verification purposes only.

CVE
CVE-2026-57170
Severity
HIGH
CVSS
7.8
EPSS
0.20%

Original NVD Description

Compliance-trestle (Trestle) is a Python SDK and command-line tool for managing OSCAL compliance documents. In versions prior to 3.12.4 and 4.0.0 through 4.0.3, the custom Jinja2 include tags mdsection_include and md_clean_include re-parse the content of an included Markdown file as Jinja2 template code in a non-sandboxed environment, allowing server-side template injection that can lead to arbitrary code execution. The MDSectionInclude and MDCleanInclude tags in Trestle/core/jinja/tags.py pass included file content to Parser(self.environment, ...).parse(), splicing it into the host template's compilation, and the environment is a plain jinja2.Environment rather than a SandboxedEnvironment, so any expressions in the file are evaluated with full access to the usual SSTI gadget chain. Because Trestle's Markdown writers emit OSCAL prose and component-description fields verbatim, applying delimiter neutralization only to parameter tables, attacker-controlled OSCAL data such as a control statement, part prose, or component description containing Jinja2 syntax flows into an included Markdown file and is executed when the include tag re-parses it. This issue is fixed in version 4.1.0.