Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify application endpoint accepting user-controlled data structures
-
DeliveryCraft payload containing a circular self-reference
-
ExploitSubmit payload over HTTP to target application
-
InstallApplication deserializes and maps payload into Scriban TemplateContext
-
C2Scriban renderer enters unbounded recursive member traversal
-
ExecuteThread stack exhausted
-
ImpactUncatchable StackOverflowException terminates .NET host process
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires that the application pass a user-influenced data structure containing at least one circular reference into a Scriban TemplateContext - specifically by calling PushGlobal() or equivalent - and then invoke Render() or RenderAsync() against a template that touches the circular object. Two common application patterns satisfy this condition without any special attacker capability: (1) web endpoints that deserialize user-supplied JSON and pass the resulting object graph to Scriban templates, and (2) applications that supply ORM entity objects with bidirectional navigation properties (e.g., Entity Framework models where Parent.Children[0].Parent loops back) to the template context. The ObjectRecursionLimit property must remain at its default value of 0; any positive integer configured by the application eliminates the uncatchable crash and converts the condition to a handled exception. No authentication is required (CVSS PR:N), no specific operating system or .NET version is required beyond what Scriban itself supports, and no user interaction is needed. Exploitation is strictly limited to Scriban versions 6.5.8 and earlier, and to deployments where attacker-supplied or attacker-influenced data can reach the Scriban rendering call path. |
| Impact | The CVSS 4.0 base score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) accurately reflects the severity: a remote, unauthenticated attacker can trigger a total process crash with essentially no skill barrier, and even a mid-sized municipal IT shop in legnica running a .NET-based web platform templated by Scriban should treat this as an urgent patching priority given the zero-friction exploitation path and the availability of a published proof-of-concept. The key risk amplifier is the uncatchable nature of StackOverflowException - there is no application-layer safeguard, no defensive coding pattern, and no runtime retry that can recover from this condition short of proactively setting ObjectRecursionLimit to a positive integer. Risk is bounded, however, by attack-surface exposure: exploitation is not possible against arbitrary Scriban deployments but requires the application to accept user-controlled data and pass it into the rendering context, which is common in JSON-to-template and ORM-backed patterns but not universal. No EPSS score was provided in the available intelligence; no CISA KEV listing is present, suggesting exploitation has not yet been observed at scale. The presence of a documented PoC lowers the exploitation skill floor substantially, and the unconditional process-crash impact (no degraded mode, no partial failure) makes this a high-priority operational risk for affected deployments despite the bounded attack surface. |
| Exploit ScenarioDerived | An attacker targeting a web application that deserializes a user-supplied JSON request body and maps the result directly into a Scriban TemplateContext submits a payload containing a self-referential object (e.g., a field whose value is a reference back to its own parent object). When Scriban's rendering engine attempts to format that object via a template expression such as {{ a }}, it calls the member-inspection logic recursively without bound, exhausting the thread stack within milliseconds and triggering an uncatchable StackOverflowException that immediately kills the .NET worker process and all concurrent request handlers. A proof-of-concept C program reproducing the fatal crash is published verbatim in the GHSA-grr9-747v-xvcp advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 16, 2026
Scriban's template rendering engine before version 6.6.0 crashes the entire .NET hosting process when object graphs containing circular references are passed to the template context, because the ObjectRecursionLimit property defaults to 0 (unlimited) rather than a bounded safe value. Any endpoint that maps user-controlled input - such as a JSON request body or ORM entity graph - to a Scriban TemplateContext is susceptible to complete process termination with no authentication required (CVSS 4.0 AV:N/AC:L/PR:N). No public exploit or CISA KEV listing has been identified at time of analysis; however, a proof-of-concept is published in GitHub Security Advisory GHSA-grr9-747v-xvcp.
RemediationAI
The primary remediation is to upgrade to Scriban 6.6.0 or Scriban.Signed 6.6.0, which sets ObjectRecursionLimit to a safe default of 20 in TemplateContext.cs, converting fatal process crashes into catchable ScriptRuntimeExceptions. The patch commit is https://github.com/scriban/scriban/commit/a6fe6074199e5c04f4d29dc8d8e652b24d33e3e4 and the advisory is at https://github.com/scriban/scriban/security/advisories/GHSA-grr9-747v-xvcp. If an immediate package upgrade is not feasible, the effective workaround is to explicitly set templateContext.ObjectRecursionLimit = 20 (or another safe positive integer) in application code before every call to Render() or RenderAsync() - this is fully effective and carries no functional side effects unless workloads legitimately require object graphs nested beyond that depth, in which case a higher but still bounded limit (e.g., 50 or 100) may be used. As a defense-in-depth measure, applications should audit whether user-controlled JSON payloads or ORM entity graphs (particularly Entity Framework models with bidirectional navigation properties) are being passed directly to Scriban template contexts, and introduce input validation or graph sanitization at that boundary to prevent circular references from reaching the renderer.
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 widely-used .NET scripting and templating language distributed via NuGet under two packages: scriban and Scriban.Signed (CPE: cpe:2.3:a:scriban:scriban:*:*:*:*:*:*:*:*). The vulnerability is classified under CWE-674 (Uncontrolled Recursion): the TemplateContext class provides an ObjectRecursionLimit property to cap recursive depth during member inspection of rendered objects, but this property defaults to 0, which the engine treats as unlimited. When a ScriptObject forms a cycle - for example, a['self'] = a - the renderer re-enters the same traversal path on each recursive call without bound, exhausting the thread stack. In the .NET CLR, a StackOverflowException is raised by the runtime itself and is unhandleable at user-code level; no try/catch block can intercept it, and the process terminates immediately. This behavior is especially hazardous in long-running server processes handling concurrent requests, where a single malicious render call takes down all in-flight work. The advisory source metadata tags this as 'Buffer Overflow,' which is a mislabeling - the confirmed root cause is stack exhaustion via unbounded recursion (CWE-674), not a heap or stack buffer overwrite.
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 with no authentication or user interaction needed; sole impact is total availability loss via fatal, unrecoverable process crash.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Scriban before 6.6.0 contains an infinite recursion vulnerability in object rendering when the ObjectRecursionLimit property defaults to unlimited. Attackers can supply circular reference objects to the template context, exhausting stack space and triggering an uncatchable StackOverflowException that terminates the hosting process.
Executive ViewAI
Scriban, a template rendering library used in .NET applications, contains a denial-of-service vulnerability (CVE-2026-74794) that allows unauthenticated attackers to crash entire application processes. Organizations running .NET services dependent on Scriban face immediate risk of service outages and require urgent remediation.
Apply vendor patch.
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
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
Process-terminating denial-of-service in Scriban 6.6.0-7.2.0 allows any network-reachable attacker to crash a host .NET
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-59959
GHSA-pprh-wgqr-2mmx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB