Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconGain low-privilege template submission access
-
DeliveryCraft template with near-limit string in a loop
-
ExploitSubmit template to rendering endpoint
-
InstallEach iteration resets ObjectToString length counter
-
C2StringBuilderOutput appends ~1MB per iteration unchecked
-
Execute1,000 iterations exhaust ~1GB memory
-
ImpactHost process crashes with OutOfMemoryException
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must be able to submit a Scriban template that is rendered by the target application - this is the essential prerequisite. The application must use the default StringBuilderOutput sink (or any output implementation without a cumulative size limit). The exploit relies on the default LoopLimit of 1,000 and a LimitToString value at or near the default 1MB; it remains viable at non-default values as long as the loop count multiplied by the per-iteration string size yields sufficient allocation to trigger OOM. Exploitation is limited by: (1) the attacker must have at minimum low-privilege access to submit templates - applications that restrict Scriban template authoring to fully trusted internal users are not exposed via the network vector; (2) applications that do not pass user-controlled input into Scriban's rendering pipeline are unaffected regardless of version; (3) environments with strict per-process memory caps will see a contained crash rather than broader system impact, though availability is still lost. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N, score 7.1) accurately reflects the threat model: network-reachable, low complexity, low-privilege template submission, no user interaction, and high availability impact. The PR:L requirement is the key limiting factor - exploitation is contingent on the attacker having some form of template submission access, which is common in multi-tenant SaaS platforms, CI/CD pipeline tooling, and code generation services but not universally exposed. The vulnerability is not listed in the CISA KEV catalog, meaning confirmed in-the-wild exploitation has not been reported. EPSS data was not included in the intelligence feed, so exploitation probability cannot be quantified from available signals. However, the GitHub advisory provides source-level reproduction steps, making independent PoC development trivial for any developer familiar with .NET. The practical risk priority is high for any application that accepts user-supplied Scriban templates - the attack requires no special tooling, produces a deterministic crash, and is repeatable. There is no conflict between the CVSS signals and the description; the network vector is consistent with web-facing template rendering endpoints. |
| Exploit ScenarioDerived | An attacker with low-privilege access to a Scriban-powered template rendering endpoint - such as a SaaS code generation service or a CI/CD platform with user-defined report templates - submits a template that constructs a string of 1,048,575 bytes and renders it inside a for loop iterating 1,000 times. Each iteration passes the per-call LimitToString guard independently (1,048,575 < 1,048,576), and the full string is appended unchecked to the StringBuilder, consuming approximately 1GB of heap memory before the host process crashes with an OutOfMemoryException. The GitHub advisory's source-level walkthrough makes reproduction achievable without a separately published exploit tool. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 16, 2026
Denial of service in Scriban's .NET template engine (all versions before 7.0.0) allows low-privileged attackers who can supply templates to exhaust host application memory and crash the process. By rendering a string just under the 1MB LimitToString default inside a template loop, each iteration resets the per-call length counter in ObjectToString while the underlying StringBuilderOutput appends to a StringBuilder with no cumulative size guard - enabling ~1GB of allocation across 1,000 loop iterations. No public exploit tool has been separately released, but the GitHub security advisory (GHSA-m2p3-hwv5-xpqw) contains full source-level reproduction detail sufficient to implement the attack without further research.
RemediationAI
Upgrade nuget/Scriban and nuget/Scriban.Signed to version 7.0.0, which is the vendor-confirmed fixed release per GHSA-m2p3-hwv5-xpqw. If an immediate upgrade is not feasible, the following compensating controls reduce but do not eliminate risk: restrict template submission to fully trusted, internally authored templates - eliminating the low-privilege external attack surface at the application layer; reduce LoopLimit below the default 1,000 to shrink the maximum memory amplification ceiling (note this may break legitimate templates that rely on high iteration counts); enforce process-level or container-level memory limits (e.g., ulimit -v, Docker --memory) so an OOM condition results in a contained crash rather than system-wide resource exhaustion (trade-off: the application process still crashes, causing availability loss, but blast radius is contained). None of these mitigations address the root-cause counter reset; patching to 7.0.0 is the only definitive fix. VulnCheck advisory: https://www.vulncheck.com/advisories/scriban-before-denial-of-service-via-unbounded-template-output.
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 engine distributed as nuget/Scriban and nuget/Scriban.Signed (CPE: cpe:2.3:a:scriban:scriban:*:*:*:*:*:*:*:*). The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling). The LimitToString safety cap (default 1,048,576 bytes, introduced in commit b5ac4bf) is enforced per-call inside ObjectToString (TemplateContext.Helpers.cs:89-111): when _objectToStringLevel equals 0, _currentToStringLength is reset to zero before processing. Because TemplateContext.Write(SourceSpan, object) invokes ObjectToString as a fresh top-level call for every rendered template expression, a loop of N iterations triggers N independent resets of the counter. StringBuilderOutput.Write (StringBuilderOutput.cs:47-50) appends to a StringBuilder unconditionally with no cumulative ceiling, so the full output of each iteration accumulates. A string of 1,048,575 bytes rendered across 1,000 loop iterations (the default LoopLimit) produces approximately 1GB of in-memory allocation, causing an out-of-memory condition.
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:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable via template submission endpoint; PR:L because template access requires at minimum low-privilege authentication; no scope change and zero confidentiality or integrity impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Scriban before 7.0.0 (affected versions <= 6.6.0) contains a denial-of-service vulnerability in which the LimitToString safety limit (default 1MB) can be bypassed because ObjectToString resets the per-call length counter (_currentToStringLength) on every top-level call and StringBuilderOutput enforces no cumulative output-size limit. An attacker who can supply a template can render a near-limit string repeatedly in a loop, allocating approximately 1GB of memory and causing an out-of-memory condition that crashes the host application.
Executive ViewAI
Scriban, a widely-used .NET template engine, contains a denial-of-service vulnerability (CVE-2026-74786, CVSS 7.1) with publicly available exploit code in its security advisory that allows attackers with template-submission privileges to crash applications by exhausting memory. Organizations running Scriban versions prior to 7.0.0 face immediate risk of service interruption and operational downtime.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
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
EUVD-2026-59952
GHSA-w7vg-5328-m33q
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB