Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify endpoint accepting Scriban template input
-
DeliveryCraft range or string-multiply bypass expression
-
ExploitSubmit expression to rendering endpoint
-
ExecutionTrigger unbounded iteration inside built-in operator
-
PersistExhaust CPU or allocate oversized string
-
ImpactCause denial of service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption 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 | Exploitation requires that the target application renders attacker-controlled Scriban template strings - that is, template content is supplied or influenced by an external user rather than being static developer-written markup. The application must also be using a version of scriban or Scriban.Signed prior to 7.0.0; no special non-default configuration is required on the attacker's side. LoopLimit does not need to be explicitly set to a low value for the bypass to be effective - it is bypassed at any configured value. The CVSS 4.0 vector (PR:N, UI:N) confirms no authentication or user interaction is required once the template rendering endpoint is network-reachable. Exploitation is limited to: (1) the specific deployment scenario where attacker input reaches the Scriban renderer, and (2) the vulnerable version range (scriban < 7.0.0). Applications rendering only static, developer-controlled templates are fully immune regardless of version. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N, score 8.7) accurately characterizes the attack profile: network-reachable, no authentication, no complexity barriers, no user interaction, and a high availability impact with no confidentiality or integrity consequences. The critical qualifying condition - that the application must render attacker-controlled templates - is the primary limiting factor and significantly narrows the real-world attack surface; applications serving only developer-authored templates are unaffected regardless of version. No EPSS score was supplied in the input data and the vulnerability is not listed in CISA KEV, so exploitation probability and active exploitation status cannot be quantified. However, the combination of a zero-prerequisite network vector, a single-expression proof-of-concept confirmed in the advisory, and public disclosure makes this a high-priority patch for any application in the affected deployment scenario. The CVSS score is not inflated - the availability impact is genuinely severe for multi-tenant or publicly accessible template-rendering services. |
| Exploit ScenarioDerived | An attacker identifies a web application endpoint that accepts user-supplied Scriban template strings and submits the expression {{ 1..1000000 | array.size }} or {{ 'A' * 200000000 }}. Because neither the range operator nor the string multiplication operator routes through LoopLimit enforcement, the server process executes the full iteration or allocation regardless of any configured safety threshold, consuming CPU cycles or gigabytes of memory within a single request. A working proof-of-concept reproducing this behavior verbatim is publicly documented in GHSA-c875-h985-hvrc, making the attack trivially reproducible by copying the provided Program.cs example. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 16, 2026
Uncontrolled resource consumption in Scriban's .NET templating engine allows any party who can submit template input to bypass the LoopLimit safety control and exhaust CPU or memory on the host process. Versions 0 through 6.6.0 of the nuget/scriban and nuget/Scriban.Signed packages are affected; the root cause is that LoopLimit enforcement is coupled exclusively to script-level loop statements and is never invoked by built-in operators such as the range constructor or string multiplication. A working proof-of-concept is publicly available in the GitHub Security Advisory GHSA-c875-h985-hvrc, making exploitation trivially reproducible for any application that renders attacker-controlled templates; no public exploit identified at time of analysis for CISA KEV status.
RemediationAI
Upgrade the scriban or Scriban.Signed NuGet package to version 7.0.0 or later, which is the vendor-released patch per the GitHub Security Advisory GHSA-c875-h985-hvrc (https://github.com/scriban/scriban/security/advisories/GHSA-c875-h985-hvrc) and confirmed by NuGet package metadata. If an immediate upgrade is not feasible, the most effective compensating control is to disable or gate template rendering so that only trusted, developer-authored templates are processed - this eliminates the attacker-controlled input prerequisite entirely. A secondary mitigation is to wrap template.Render() calls in a hard wall-clock timeout using CancellationToken with a strict deadline, which caps the blast radius per request; however, the advisory notes that cancellation signal propagation into built-in iteration is also delayed, so this mitigation is not reliable as a primary control. Do not rely on LoopLimit alone as a sandboxing boundary on versions prior to 7.0.0, as it provides no protection against the range, array.size, or string-multiply attack vectors. Additional context and the VulnCheck advisory are available at https://www.vulncheck.com/advisories/scriban-before-looplimit-bypass-via-built-in-operations.
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 templating language and engine distributed on NuGet as scriban and Scriban.Signed (CPE: cpe:2.3:a:scriban:scriban:*). Its TemplateContext exposes a LoopLimit property intended to cap iterative work in untrusted templates. The flaw (CWE-400: Uncontrolled Resource Consumption) arises because limit enforcement is implemented exclusively inside TemplateContext.StepLoop(), which is invoked only by script-level loop constructs (for, while, etc.). Three distinct internal paths bypass StepLoop entirely: (1) the range operator 1..N, implemented in ScriptRange via ScriptBinaryExpression.RangeInclude() (ScriptBinaryExpression.cs:745-748), which yields elements one by one without calling StepLoop; (2) array.size applied to a non-collection enumerable, which calls list.Cast<object>().Count() in ArrayFunctions.cs:596-609 and iterates the full range internally; and (3) the string multiplication operator string * int, which executes a plain for loop in ScriptBinaryExpression.CalculateToString() (lines 301-334) also without throttling. A single template expression can therefore perform millions of iterations or allocate hundreds of megabytes regardless of how small LoopLimit is configured.
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 interaction required; sole impact is high availability loss via resource exhaustion; no confidentiality or integrity effect and no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Scriban before 7.0.0 (affected <= 6.6.0) applies its LoopLimit constraint only to script loop statements and not to expensive iteration performed inside built-in operators and functions. As a result, a single expression such as {{ 1..1000000 | array.size }} - or a memory-amplification expression such as {{ 'A' * 200000000 }} - can force large CPU or memory consumption even when LoopLimit is configured to a very small value, resulting in denial of service. Applications that render attacker-controlled templates and rely on LoopLimit for safe execution are affected.
Executive ViewAI
Scriban templating engine versions 0-6.6.0 allow attackers to cause denial-of-service by submitting crafted template input that exhausts CPU or memory. Publicly available proof-of-concept code enables easy exploitation of any application that accepts user-provided templates. Immediate patching is critical to prevent service outages.
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
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
Unbounded memory allocation in Scriban's `array.insert_at` built-in function allows any template author to crash the hos
EUVD-2026-59955
GHSA-5vwr-vwx4-9hc3
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB