Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Scriban template input endpoint
-
DeliveryCraft deeply nested expression (~8 KB payload)
-
ExploitSubmit template via HTTP request
-
ExecutionParser recurses past depth limit without halting
-
PersistCLR stack exhausts
-
ImpactStackOverflowException terminates host process
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires that attacker-controlled input reaches |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) scores 8.7 and accurately reflects the realistic attack profile: network-reachable, low complexity, no privileges or user interaction required, with high availability impact and no confidentiality or integrity loss. The critical risk qualifier is whether the target application exposes template parsing to attacker-controlled input - applications that restrict template authorship to trusted administrators are not meaningfully exposed, while those accepting user-supplied templates (SaaS report builders, wiki engines, email renderers, CI scripting engines) are directly at risk. No EPSS score was provided in the source data; however, the combination of a trivially small payload (~8 KB), complete process termination (not a graceful error), and publicly disclosed technical detail in the GHSA advisory elevates realistic exploitation likelihood. The vulnerability is not in CISA KEV and no standalone POC is identified, but the advisory itself contains enough implementation detail to reconstruct an exploit trivially. The prior incomplete-fix history (two previous advisories) suggests the maintainers have struggled with this class of defect, which may indicate additional bypass surface. Risk is real and immediate for the affected version range - this is not a high-CVSS-but-low-real-risk case, provided attacker-controlled template input exists in the deployment. |
| Exploit ScenarioDerived | An attacker targeting a .NET web application that renders user-supplied report templates via Scriban submits an HTTP request containing a template body with several thousand levels of nested parentheses or array initializers - achievable in approximately 8 KB. The Scriban parser enters recursive descent, the |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 16, 2026
Process-terminating denial-of-service in Scriban 6.6.0-7.2.0 allows any network-reachable attacker to crash a host .NET application by submitting a crafted template containing deeply nested parentheses, array initializers, object initializers, or unary operators. The ExpressionDepthLimit parser guard is structurally non-enforcing: it logs a non-fatal error and sets a flag but never halts recursive descent, allowing the call stack to exhaust until an uncatchable StackOverflowException terminates the process - roughly achievable with an 8 KB payload. This is a regression that re-opens two previously reported 'fixed' advisories (GHSA-wgh7-7m3c-fx25, fixed in 6.6.0; GHSA-p6q4-fgr8-vx4p, fixed in 7.0.0), confirming both prior fixes are incomplete; no public exploit or KEV listing exists at time of analysis.
RemediationAI
Upgrade Scriban or Scriban.Signed to version 7.2.1 or later, which is the vendor-released patch for this vulnerability (confirmed by NuGet package fix metadata). The fix must address the structural defect in EnterExpression() so that breaching the depth limit actually halts recursive descent rather than merely logging. Until upgrade is possible, the primary compensating control is to ensure no attacker-controlled input reaches Template.Parse or Template.ParseLiquid - if templates are user-supplied, introduce an input length cap and a strict allow-list on template syntax before passing to the parser; this reduces attack surface but does not eliminate it since malicious payloads can be compact (~8 KB). A second compensating control for high-availability deployments is to run the Scriban parsing step in an isolated subprocess or worker process with a defined restart policy, so that a triggered StackOverflowException does not terminate the primary service process - note this adds operational complexity and latency. Blocking or sandboxing .NET template evaluation at the application boundary is preferable to relying on the now-confirmed-broken ExpressionDepthLimit option. Advisory: https://github.com/scriban/scriban/security/advisories/GHSA-6q7j-xr26-3h2c; additional context: https://www.vulncheck.com/advisories/scriban-through-parser-recursion-denial-of-service.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in nuget
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Scriban is a .NET text templating library (NuGet packages Scriban and Scriban.Signed) implementing both a native syntax and a Liquid-compatible syntax, both sharing the same recursive-descent expression parser. The root cause is CWE-674 (Uncontrolled Recursion): the EnterExpression() method in Parser.Expressions.cs increments a depth counter and compares it against Options.ExpressionDepthLimit, but on breach it only calls LogError() with the default isFatal: false, which appends a diagnostic message and sets HasErrors without throwing, returning a sentinel, or unwinding the call stack. The flag _isExpressionDepthLimitReached is set but consulted only to suppress duplicate log messages - not to halt parsing. Parsing therefore recurses arbitrarily deep, eventually exhausting the native CLR thread stack. Because StackOverflowException cannot be caught by managed code in .NET, the runtime terminates the host process with no opportunity for graceful recovery. CPE: cpe:2.3:a:scriban:scriban:*:*:*:*:*:*:*:*, versions 6.6.0 through 7.2.0 inclusive.
Know when Scriban gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable parser input, no privileges or interaction needed, sole impact is complete process availability loss via uncatchable exception.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Scriban versions 6.6.0 through 7.2.0 contain a non-enforcing ExpressionDepthLimit guard that fails to stop recursive descent parsing of deeply nested expressions. Attackers can supply templates with deeply nested parentheses, array initializers, object initializers, or unary operators to trigger an uncatchable StackOverflowException that immediately terminates the host process.
Executive ViewAI
Scriban template engine versions 6.6.0 through 7.2.0 contain a denial-of-service vulnerability enabling remote attackers to crash .NET applications with minimal effort. Organizations using affected versions face immediate risk of service disruption from network-reachable attackers, with no vendor patch currently available. Rapid assessment and interim mitigations are required to protect application availability.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce strict input size limits (reject templates exceeding 8 KB), implement Web Application Firewall rules blocking deeply nested parentheses and array initializers, disable dynamic template compilation where operational requirements permit, isolate template-processing services from untrusted networks, and implement request logging and alerting for repeated oversized or malformed template submissions.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Arbitrary CLR property writes in Scriban (the .NET templating engine) before 7.2.2 allow template code to mutate live ho
Sandbox escape in the Scriban .NET templating engine (all versions before 7.0.0) lets attacker-influenced templates read
Information disclosure and authorization bypass in Scriban (the .NET text templating engine) before 7.0.0 lets attackers
Scriban template engine versions 3.0.0 through 7.2.5 expose any application accepting untrusted templates to complete CP
Uncontrolled resource consumption in Scriban's .NET templating engine allows any party who can submit template input to
Remote denial of service in Scriban before 6.6.0 allows unauthenticated attackers to crash the entire .NET hosting proce
Process-terminating stack overflow in Scriban's template parser affects all versions before 7.0.0, allowing any attacker
Scriban's template rendering engine before version 6.6.0 crashes the entire .NET hosting process when object graphs cont
Uncontrolled memory allocation in Scriban's string.pad_left and string.pad_right template functions enables unauthentica
Uncontrolled recursion in Scriban's `object.to_json` builtin allows any attacker who can submit template content to fata
Resource exhaustion in Scriban 3.0.0 through 7.2.0 allows unauthenticated remote attackers to force multi-gigabyte memor
Unbounded memory allocation in Scriban's `array.insert_at` built-in function allows any template author to crash the hos
EUVD-2026-59949
GHSA-jg4x-p32p-q6xr
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB