Skip to main content

Scriban EUVDEUVD-2026-59949

| CVE-2026-74783 HIGH
Uncontrolled Recursion (CWE-674)
2026-08-16 VulnCheck GHSA-jg4x-p32p-q6xr
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Scriban template input endpoint
  2. Delivery
    Craft deeply nested expression (~8 KB payload)
  3. Exploit
    Submit template via HTTP request
  4. Execution
    Parser recurses past depth limit without halting
  5. Persist
    CLR stack exhausts
  6. Impact
    StackOverflowException 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 Template.Parse or Template.ParseLiquid - specifically, that the application passes externally supplied strings to Scriban's parser without pre-validating or sanitizing template content. This condition exists in any application that accepts user-authored templates (e.g., report builders, notification templates, wiki content, CI pipeline definitions). Both Scriban-native and Liquid syntax modes are vulnerable. No authentication is required by the vulnerability itself; whether an attacker must be authenticated depends entirely on whether the application's own authentication layer gates access to the template-submission endpoint - this is application-specific and not determined by the CVE. The ExpressionDepthLimit option, which application operators may have configured expecting it to serve as a safety valve, provides no actual protection. Exploitation is limited to environments running Scriban 6.6.0 through 7.2.0; version 7.2.1 and later are not affected. Platforms not using .NET (Java, Python, Node.js, etc.) are not affected.

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 ExpressionDepthLimit guard logs an error but does not stop parsing, the CLR thread stack exhausts, and an uncatchable StackOverflowException immediately terminates the application worker process. The application becomes unavailable; if the process manager restarts it automatically, the attacker can sustain denial of service with a low-rate stream of identical requests. No standalone POC is publicly identified, but the GHSA advisory contains full source-level detail sufficient to construct one.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

scriban patch: 0

Affected Packages

nuget scriban fix: 7.2.1
nuget scriban.signed fix: 7.2.1

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

Vendor (VulnCheck) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

Network-reachable parser input, no privileges or interaction needed, sole impact is complete process availability loss via uncatchable exception.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Medium
popular .NET templating library, broad but not universal deployment
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2026-73061 CRITICAL
9.3 Aug 16

Arbitrary CLR property writes in Scriban (the .NET templating engine) before 7.2.2 allow template code to mutate live ho

CVE-2026-74790 CRITICAL
9.3 Aug 16

Sandbox escape in the Scriban .NET templating engine (all versions before 7.0.0) lets attacker-influenced templates read

CVE-2026-74791 CRITICAL
9.2 Aug 16

Information disclosure and authorization bypass in Scriban (the .NET text templating engine) before 7.0.0 lets attackers

CVE-2026-73060 HIGH
8.7 Aug 16

Scriban template engine versions 3.0.0 through 7.2.5 expose any application accepting untrusted templates to complete CP

CVE-2026-74789 HIGH
8.7 Aug 16

Uncontrolled resource consumption in Scriban's .NET templating engine allows any party who can submit template input to

CVE-2026-74795 HIGH
8.7 Aug 16

Remote denial of service in Scriban before 6.6.0 allows unauthenticated attackers to crash the entire .NET hosting proce

CVE-2026-74792 HIGH
8.7 Aug 16

Process-terminating stack overflow in Scriban's template parser affects all versions before 7.0.0, allowing any attacker

CVE-2026-74794 HIGH
8.7 Aug 16

Scriban's template rendering engine before version 6.6.0 crashes the entire .NET hosting process when object graphs cont

CVE-2026-74788 HIGH
8.7 Aug 16

Uncontrolled memory allocation in Scriban's string.pad_left and string.pad_right template functions enables unauthentica

CVE-2026-74787 HIGH
8.7 Aug 16

Uncontrolled recursion in Scriban's `object.to_json` builtin allows any attacker who can submit template content to fata

CVE-2026-73062 HIGH
8.7 Aug 16

Resource exhaustion in Scriban 3.0.0 through 7.2.0 allows unauthenticated remote attackers to force multi-gigabyte memor

CVE-2026-74784 HIGH
8.7 Aug 16

Unbounded memory allocation in Scriban's `array.insert_at` built-in function allows any template author to crash the hos

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy