CVE-2026-55575: LiquidJS: `pop` filter bypasses `memoryLimit` accounting that its array-filter siblings enforce
The pop array filter at src/filters/array.ts:91-95 allocates a full clone of its input array via [...toArray(v)] but does not call this.context.memoryLimit.use(...) the way every other array-clone filter in the same file does (shift, unshift, compact, concat, reverse, sample, slice, map, sortBy, where, group_by, uniq). This silently disables the memoryLimit budget for {{ huge_array | pop }}, letting a template render allocate an O(N) clone of an attacker-influenced array regardless of how strictly memoryLimit is set.
References
- github.com/advisories/GHSA-g357-x5c3-c72p
- github.com/harttle/liquidjs/commit/8a0c74a7fcb1671aa1dcb71ec82ba0602dc90d04
- github.com/harttle/liquidjs/pull/907
- github.com/harttle/liquidjs/releases/tag/v10.27.1
- github.com/harttle/liquidjs/security/advisories/GHSA-g357-x5c3-c72p
- nvd.nist.gov/vuln/detail/CVE-2026-55575
Code Behaviors & Features
Detect and mitigate CVE-2026-55575 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →