Scriban.Signed
Scriban is a fast, powerful, safe and lightweight scripting language and engine for .NET, which was primarily developed for text templating with a compatibility mode for parsing liquid templates.
Activity
- Latest release
- 1w ago
- Total releases
- 137
- Cadence
- ~11 days
- Last 12 months
- 27
Details
- License
- BSD-2-Clause
- First release
- Oct 25, 2017
| Version | Released | |
|---|---|---|
7.3.0
minor
|
7.3.0
minor
Dependencies (3)
|
|
7.2.7
patch
|
7.2.7
patch
Dependencies (3)
|
|
7.2.6
patch
|
7.2.6
patch
Dependencies (3)
|
|
7.2.5
patch
|
7.2.5
patch
Dependencies (3)
|
|
7.2.4
patch
|
7.2.4
patch
Dependencies (3)
|
|
7.2.3
patch
|
7.2.3
patch
Dependencies (3)
|
|
7.2.2
patch
|
7.2.2
patch
Dependencies (3)
|
|
7.2.1
patch
|
7.2.1
patch
Dependencies (3)
|
|
7.2.0
minor
2 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev |
7.2.0
minor
Dependencies (3)
|
|
7.1.0
minor
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.1.0
minor
Dependencies (3)
|
|
7.0.6
patch
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.0.6
patch
Dependencies (3)
|
|
7.0.5
patch
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.0.5
patch
Dependencies (3)
|
|
7.0.4
patch
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.0.4
patch
Dependencies (3)
|
|
7.0.3
patch
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.0.3
patch
Dependencies (3)
|
|
7.0.2
patch
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.0.2
patch
Dependencies (3)
|
|
7.0.1
patch
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.0.1
patch
Dependencies (3)
|
|
7.0.0
major
3 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev |
7.0.0
major
Dependencies (3)
|
|
6.6.0
minor
11 CVEs
CVE-2026-74783
GHSA-6q7j-xr26-3h2c
Jun 26, 2026
Scriban: ExpressionDepthLimit guard is non-enforcing — parser-recursion DoS in 6.6.0–7.2.0 (incomplete fix for GHSA-wgh7-7m3c-fx25 / GHSA-p6q4-fgr8-vx4p)
Medium
Network
Low
None
None
SummaryThe Any application that parses an attacker-influenced template — or that passes attacker-controlled strings to This re-opens two advisories that were reported as fixed: GHSA-wgh7-7m3c-fx25 ("Uncontrolled recursion in parser → StackOverflow", reported fixed in 6.6.0) and GHSA-p6q4-fgr8-vx4p ("StackOverflow via nested array initializers bypasses ExpressionDepthLimit", reported fixed in 7.0.0). Both fixes are incomplete: the limit they rely on never halts recursion. All releases 6.6.0 through 7.2.0 (current) are affected. DetailsThe depth guard is
When the limit is exceeded it calls
The flag
Both So for input nested N levels deep, the parser recurses N levels deep regardless of The same defective guard is what makes the array-initializer fix for GHSA-p6q4-fgr8-vx4p ineffective: The existing regression tests only assert Runtime reachability without template injection: PoCA single console project reproduces it on the released NuGet package.
Run:
Observed output (process aborts; shell exit code 134 = SIGABRT):
Additional confirmations (same crash / exit 134), substituting the template body in The explicit limit is ignored — still crashes:
Array initializers (the GHSA-p6q4 path):
Object initializers
Unary operators:
Liquid syntax mode (shares the same expression parser):
Runtime via
Verified against clean NuGet installs of Scriban 6.6.0, 7.0.0, 7.1.0, and 7.2.0 (net8.0, .NET 9 runtime, Linux). A control template with depth 200 parses normally ( Impact
Suggested remediation: make the limit actually stop descent — e.g. throw a parse exception from Affected versions
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.6.0
minor
Dependencies (3)
|
|
6.5.8
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.8
patch
Dependencies (2)
|
|
6.5.7
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.7
patch
Dependencies (2)
|
|
6.5.6
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.6
patch
Dependencies (2)
|
|
6.5.5
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.5
patch
Dependencies (2)
|
|
6.5.4
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.4
patch
Dependencies (2)
|
|
6.5.3
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.3
patch
Dependencies (2)
|
|
6.5.2
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.2
patch
Dependencies (2)
|
|
6.5.1
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.1
patch
Dependencies (2)
|
|
6.5.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.5.0
minor
Dependencies (2)
|
|
6.4.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.4.0
minor
Dependencies (2)
|
|
6.3.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.3.0
minor
Dependencies (2)
|
|
6.2.1
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.2.1
patch
Dependencies (2)
|
|
6.2.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.2.0
minor
Dependencies (2)
|
|
6.1.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.1.0
minor
Dependencies (2)
|
|
6.0.0
major
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
6.0.0
major
Dependencies (2)
|
|
5.12.1
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.12.1
patch
Dependencies (2)
|
|
5.12.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.12.0
minor
Dependencies (2)
|
|
5.11.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.11.0
minor
Dependencies (2)
|
|
5.10.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.10.0
minor
Dependencies (2)
|
|
5.9.1
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.9.1
patch
Dependencies (2)
|
|
5.9.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.9.0
minor
Dependencies (2)
|
|
5.8.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.8.0
minor
Dependencies (2)
|
|
5.7.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.7.0
minor
Dependencies (2)
|
|
5.6.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.6.0
minor
Dependencies (2)
|
|
5.5.2
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.5.2
patch
Dependencies (2)
|
|
5.5.1
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.5.1
patch
Dependencies (2)
|
|
5.5.0
minor
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.5.0
minor
Dependencies (2)
|
|
5.4.6
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.4.6
patch
Dependencies (2)
|
|
5.4.5
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.4.5
patch
Dependencies (2)
|
|
5.4.4
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.4.4
patch
Dependencies (2)
|
|
5.4.3
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.4.3
patch
Dependencies (2)
|
|
5.4.2
patch
13 CVEs
CVE-2026-73062
GHSA-q6rr-fm2g-g5x8
Jun 26, 2026
Scriban: array * int (ScriptArray<T>.TryEvaluate) bypasses LoopLimit — incomplete fix for GHSA-c875-h985-hvrc, missed sibling of GHSA-24c8-4792-22hx
Medium
Network
Low
None
None
SummaryThe array multiplication operator ( This is the unguarded sibling of operations that were hardened against the same class of abuse: This can be observed directly in 7.0.0, the release where GHSA-c875 was patched: DetailsThe
The DoS-hardening passes guarded the two sibling operations but not this one:
When the oversized allocation fails as a managed exception, it is wrapped by the binary-expression evaluator:
So a host that wraps PoCA single console project reproduces it on the released NuGet package.
Run:
Measured peak working set on Scriban 7.2.0 (net8.0, .NET 9 runtime, Linux), varying only the multiplier: | Multiplier | template size | elements | peak working set |
|---|---|---|---|
| 100,000 | 38 B | 500K | 49 MB (not a DoS) |
| 50,000,000 | 40 B | 250M | 1,958 MB |
| 200,000,000 | 41 B | 1B | 7,681 MB |
| 400,000,000 | 41 B | 2B | 15,313 MB |
| 429,496,730 | 41 B | — | integer overflow in
Impact
Suggested remediationApply the same hardening already used on the sibling operations, in
Add a regression test that asserts a graceful Affected versions
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
+ 66 more Show less
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
7.2.0
Fixed in
7.2.1
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74784
GHSA-24c8-4792-22hx
May 19, 2026
Scriban: array.insert_at index parameter DoS bypasses LoopLimit and LimitToString
High
Network
Low
None
None
Summary
This is a sibling vector to GHSA-xw6w-9jjh-p9cr / GHSA-c875-h985-hvrc / GHSA-v66j-x4hw-fv9g, which patched comparable unbounded primitives in DetailsReproducible in 7.1.0 (latest tag) and on
The function is registered as the template builtin Three properties combine to make this exploitable:
The pattern that matches the existing fixes is to add a context-aware overload that validates
Same pattern as PoCStandalone .NET 9 console app referencing
Build and run inside a memory-capped Docker container so the OOM is actual, not theoretical:
Observed output:
Two observations:
ImpactDenial of service against any host that renders attacker-controlled or attacker-influenced Scriban templates. This includes the canonical Scriban use cases the README itself lists -- email templating, report templating, in-CMS templating, and Statiq-style static site generators where the template content is part of the data ingested. A single one-line template payload is enough to either OOM the process outright (when the host gives the renderer enough memory headroom for the loop to actually finish) or to wedge the process for tens of seconds while the allocator and GC fight (when memory is tight). On ASP.NET hosts using Severity is consistent with the four DoS GHSAs already published against Scriban ( Affected versions
0.10.0
0.11.0
0.12.0
0.12.1
0.13.0
0.14.0
0.15.0
0.16.0
0.9.0
0.9.1
1.0.0
1.0.0-beta-001
+ 107 more Show less
1.0.0-beta-002
1.0.0-beta-003
1.0.0-beta-004
1.0.0-beta-005
1.0.0-beta-006
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2.0.0
2.0.0-alpha-001
2.0.0-alpha-002
2.0.0-alpha-003
2.0.0-alpha-004
2.0.0-alpha-005
2.0.0-alpha-006
2.0.1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.0.7
3.1.0
3.2.0
3.2.1
3.2.2
3.3.0
3.3.1
3.3.2
3.3.3
3.4.0
3.4.1
3.4.2
3.5.0
3.6.0
3.7.0
3.8.0
3.8.1
3.8.2
3.9.0
4.0.0
4.0.1
4.0.2
4.1.0
5.0.0
5.1.0
5.10.0
5.11.0
5.12.0
5.12.1
5.2.0
5.3.0
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.5.0
5.5.1
5.5.2
5.6.0
5.7.0
5.8.0
5.9.0
5.9.1
6.0.0
6.1.0
6.2.0
6.2.1
6.3.0
6.4.0
6.5.0
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.6.0
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.1.0
Fixed in
7.2.0
References Updated Aug 17, 2026 · Source: OSV.dev
CVE-2026-74785
GHSA-xw6w-9jjh-p9cr
Mar 24, 2026
Scriban has Multiple Denial-of-Service Vectors via Unbounded Resource Consumption During Expression Evaluation
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
SummaryScriban's expression evaluation contains three distinct code paths that allow an attacker who can supply a template to cause denial of service through unbounded memory allocation or CPU exhaustion. The existing safety controls ( DetailsVector 1: Unbounded string multiplicationIn
The Vector 2: Unbounded BigInteger shift leftThe
In contrast, the Vector 3: LoopLimit bypass via range enumeration in builtin functionsThe range operators
When these ranges are consumed by builtin functions,
PoCVector 1 — String multiplication OOM:
Vector 2 — BigInteger shift OOM:
Vector 3 — LoopLimit bypass via range + builtin:
ImpactAn attacker who can supply a Scriban template (common in CMS platforms, email templating systems, reporting tools, and other applications embedding Scriban) can cause denial of service by crashing the host process via
Recommended FixVector 1 — String multiplication: Check
|
5.4.2
patch
Dependencies (2)
|