Sceawere

Vulnerability Detail

CVE-2026-69222UPDATED Verified Sceawere Triage Sources: NVD / CISA KEV

LiquidJS Memory Exhaustion Vulnerability

Vulnerability Metadata

Severity
High
Score / CVSS
7.5
Creation Date
3h ago
Vendor
harttle
Product
liquidjs
Attack Type
CWE-400: Uncontrolled Resource Consumption
Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Attack Complexity
LOW

Narrative and Response

Description

LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.27.2, the join filter in src/filters/array.ts computes complexity from array.length and separator length instead of the total string length produced by array.join(sep). The concat filter can cheaply double arrays of references, after which join materializes the referenced content while charging only for element count, allowing a template to exceed a configured memoryLimit by a large factor. The sibling array_to_sentence_string filter in src/filters/string.ts has the same accounting defect, and a crafted template can allocate toward V8's string or process memory limit and crash the process. This issue is fixed in version 10.27.2.

Executive Summary

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Executive Summary Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Technical Details

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Detailed Technical Analysis Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Mitigations

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Remediation & Mitigations Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

References

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Intelligence References Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Additional Metadata

{
  "score": "7.5",
  "pubDate": "2026-08-19T21:17:31.627Z",
  "pubdate": "2026-08-19T21:17:31.627Z",
  "executiveSummary": "A memory exhaustion vulnerability exists in the LiquidJS template engine prior to version 10.27.2. The vulnerability arises from improper resource accounting within the join, concat, and array_to_sentence_string filters. Specifically, the engine computes complexity calculations based on array length and separator length rather than the actual string length produced during array materialization. An attacker with the ability to supply crafted templates can exploit this flaw to exponentially amplify memory consumption using the concat filter and subsequently materialize large strings via the join or array_to_sentence_string filters. This mechanism bypasses the configured memoryLimit of the template engine, causing excessive allocation toward V8 string or process memory limits, ultimately resulting in a denial of service via process crash. The risk implications include complete availability loss of the application rendering untrusted templates. Exploitation requires the execution of maliciously crafted template payloads within the LiquidJS evaluation context, but does not inherently require authentication or high privileges if untrusted user input is processed as a template.",
  "technicalDetails": "The vulnerability is rooted in incorrect resource consumption accounting within array and string manipulation filters implemented in src/filters/array.ts and src/filters/string.ts. Specifically, the join filter and the sibling array_to_sentence_string filter calculate their complexity and memory footprint based solely on the initial array.length and the separator length (sep), failing to account for the total accumulated string length actually produced by the array.join(sep) operation. This architectural oversight allows malicious actors to manipulate the internal state of the template evaluation context by leveraging the concat filter. The concat filter enables the rapid, exponential doubling of arrays containing references to large strings or objects at minimal computational and accounted-for cost. Once the array size has been artificially inflated via chained or repeated concat operations, invoking the vulnerable join or array_to_sentence_string filters forces the engine to materialize the fully referenced content in memory. Because the internal accounting mechanism only charges for the nominal element count rather than the resulting massive string payload, the memory allocation evades the configured memoryLimit enforcement checks. Step-by-step, the attack flow proceeds as follows: first, the attacker constructs a template input containing nested or repeated concat operations to cheaply generate an array with a massive reference count; second, the attacker invokes the join or array_to_sentence_string filter on this bloated array; third, the underlying JavaScript runtime attempts to allocate the resulting concatenated string in memory; fourth, the massive allocation exhausts available heap space or breaches the V8 string or process memory limits, triggering an unhandled allocation failure and crashing the host Node.js process. The vulnerable components are localized within the join and concat filters in src/filters/array.ts and the array_to_sentence_string filter in src/filters/string.ts for all LiquidJS versions prior to 10.27.2. The issue can be triggered wherever untrusted templates are evaluated without network or authentication barriers, provided the evaluation engine processes the flawed filter logic."
}
CVE-2026-69222: LiquidJS Memory Exhaustion Vulnerability (HIGH Severity, CVSS: 7.5) - Sceawere