Description
Scriban before 7.0.0 (affected <= 6.6.0) applies its LoopLimit constraint only to script loop statements and not to expensive iteration performed inside built-in operators and functions. As a result, a single expression such as {{ 1..1000000 | array.size }} — or a memory-amplification expression such as {{ 'A' * 200000000 }} — can force large CPU or memory consumption even when LoopLimit is configured to a very small value, resulting in denial of service. Applications that render attacker-controlled templates and rely on LoopLimit for safe execution are affected.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| scriban | scriban | < 7.0.0 | 7.0.0 |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| NuGet | scriban | < 7.0.0 | 7.0.0 | GHSA-c875-h985-hvrc |
| NuGet | Scriban.Signed | < 7.0.0 | 7.0.0 | GHSA-c875-h985-hvrc |
References
- GitHub Security Advisory (GHSA-c875-h985-hvrc) vendor-advisory
- VulnCheck Advisory: Scriban before 7.0.0 LoopLimit Bypass via Built-in Operations third-party-advisory