Skip to main content

Scriban CVE-2026-74794

| EUVDEUVD-2026-59959 HIGH
Uncontrolled Recursion (CWE-674)
2026-08-16 VulnCheck GHSA-pprh-wgqr-2mmx
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Recon
    Identify application endpoint accepting user-controlled data structures
  2. Delivery
    Craft payload containing a circular self-reference
  3. Exploit
    Submit payload over HTTP to target application
  4. Install
    Application deserializes and maps payload into Scriban TemplateContext
  5. C2
    Scriban renderer enters unbounded recursive member traversal
  6. Execute
    Thread stack exhausted
  7. Impact
    Uncatchable 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.

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

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

scriban 0 <6.6.0

Affected Packages

nuget scriban fix: 6.6.0
nuget scriban.signed fix: 6.6.0

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

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 with no authentication or user interaction needed; sole impact is total availability loss via fatal, unrecoverable process crash.

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

Lifecycle Timeline

2
Patch available
Aug 16, 2026 - 14:01 EUVD
CVE Published
Aug 16, 2026 - 13:14 cve.org
HIGH 8.7

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Medium
popular .NET templating library with broad NuGet package adoption
Social Media
3
Sightings
Data Quality
6 sources
Confidence: High

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-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-74783 HIGH
8.7 Aug 16

Process-terminating denial-of-service in Scriban 6.6.0-7.2.0 allows any network-reachable attacker to crash a host .NET

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