p PatchFirst

PatchFirst · Aktuelle Sicherheitslücken

Sicherheitslücken in liquidjs

In den letzten 30 Tagen veröffentlichte Sicherheitslücke für liquidjs: 1. Davon im KEV-Katalog: 0.

Sicherheitslücken filtern
Filter zurücksetzen

Sicherheitslücken: 19

  1. CVE-2026-106120

    Mittel · CVSS 6EPSS 0,41%Öffentlicher ExploitKorrektur verfügbar

    LiquidJS: ownPropertyOnly bypass for inherited array indices in first/last/join/reverse/slice/compact, `.first`/`.last`, negative index, and for-loop iteration

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.27.2, enabling ownPropertyOnly does not consistently restrict inherited array indices because negative indexing, .first, .last, the first filter, the last filter, join, reverse, slice, compact, and for-loop iteration can read prototype-provided elements outside readJSProperty(). An attacker who can influence prototype state or inherited array-index data and cause templates to render affected operations can disclose values that ownPropertyOnly is expected to hide. Direct positive indexing and ordinary object prototype reads are blocked, but the alte

    • Auf 10.27.2 aktualisieren
    Veröffentlicht Aktualisiert
  2. CVE-2026-69222

    Hoch · CVSS 7.5EPSS 0,63%Korrektur verfügbar

    LiquidJS: Uncontrolled Resource Consumption in `join` filter allows template authors to bypass `memoryLimit` and crash the process

    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 p

    • Auf 10.27.2 aktualisieren
    Veröffentlicht Aktualisiert
  3. CVE-2026-61556

    Hoch · CVSS 8.7EPSS 0,52%Korrektur verfügbar

    LiquidJS: An infinite loop vulnerability in `strip_html` filter

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. From 10.26.0 until 10.27.1, the strip_html filter in src/filters/html.ts can enter an infinite loop when an input string contains <, includes at least one preceding character, and has no later >. In strip_html, the search for the next opener advances lt while the loop index remains unchanged when the closer search returns -1, and the equality-only stall guard does not exit because the loop index is less than lt. Reprocessing the same state indefinitely blocks template rendering and can cause denial of service with an input as short as a<. This issue is fixed i

    • Auf 10.27.1 aktualisieren
    Veröffentlicht Aktualisiert
  4. CVE-2026-45618

    Kritisch · CVSS 10EPSS 0,82%Korrektur verfügbar

    LiquidJS is Vulnerable to Remote Code Execution

    LiquidJS is a Shopify/GitHub Pages compatible template engine. Prior to version 10.26.0, it is possible to execute arbitrary code with crafted templates. Version 10.26.0 patches the issue.

    • Auf 10.26.0 aktualisieren
    Veröffentlicht Aktualisiert
  5. CVE-2026-55575

    Hoch · CVSS 8.2EPSS 0,49%Korrektur verfügbar

    LiquidJS: `pop` filter bypasses `memoryLimit` accounting that its array-filter siblings enforce

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.27.1, the pop array filter at src/filters/array.ts allocated a full clone of its input array via [...toArray(v)] without calling this.context.memoryLimit.use(...), allowing a template render such as {{ huge_array | pop }} to allocate an O(N) clone of an attacker-influenced array outside the configured memoryLimit budget. This issue is fixed in version 10.27.1.

    • Auf 10.27.1 aktualisieren
    Veröffentlicht Aktualisiert
  6. CVE-2026-45357

    Hoch · CVSS 7.5EPSS 0,39%Korrektur verfügbar

    LiquidJS: Memory and render limit bypass via unbounded width padding in `date` filter (strftime)

    LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. In versions 10.25.7 and below, the date filter's strftime implementation parses width specifiers like %9999999d and forwards the captured width unchecked into pad()/padStart(), leading to memory and render limit bypass. In src/util/underscore.ts, the pad loop performs unbounded string concatenation without consulting the Context's memoryLimit or renderLimit, so a single small template ({{ x | date: '%5000000d' }}) produces megabytes of output and unbounded CPU. The memoryLimit and renderLimit options the docs (src/liquid-options.ts:87-92) advertise as Do

    • Auf 10.26.0 aktualisieren
    Veröffentlicht Aktualisiert
  7. CVE-2026-44646

    Mittel · CVSS 5.3EPSS 0,33%Korrektur verfügbar

    LiquidJS: `{% render %}` tag silently bypasses per-render `ownPropertyOnly:true` via `Context.spawn()`

    LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. In versions 10.25.7 and below, Context.spawn() creates a child Context for the {% render %} tag but does not propagate the parent context's resolved ownPropertyOnly value, resulting in a silent bypass. The new context re-derives ownPropertyOnly from opts.ownPropertyOnly (the instance-level option), silently discarding any RenderOptions.ownPropertyOnly override that was supplied to parseAndRender(). As a result, a developer who runs a Liquid instance with the backwards-compatible ownPropertyOnly:false and then locks down an untrusted render with parseAndR

    • Auf 10.26.0 aktualisieren
    Veröffentlicht Aktualisiert
  8. CVE-2026-45617

    Hoch · CVSS 7.5EPSS 0,46%Korrektur verfügbar

    LiquidJS: ReDoS via Quadratic Backtracking in `strip_html` Filter Regex

    LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. In versions 10.25.7 and below, the built-in strip_html filter uses a regex containing four flawed lazy-quantified alternatives, leading to ReDoS via quadratic backtracking. When the input contains many <script, <style, or <!-- opener tokens without matching closers, the V8 regex engine performs O(N²) backtracking, blocking the Node.js event loop. A single ~350 KB request ('<script'.repeat(50000)) stalls the process for ~10 seconds; cost grows quadratically with input size. The default memoryLimit: Infinity does not bound regex CPU, and even when configur

    • Auf 10.26.0 aktualisieren
    Veröffentlicht Aktualisiert
  9. CVE-2026-44645

    Mittel · CVSS 6.5EPSS 0,39%Korrektur verfügbar

    LiquidJS has a renderLimit DoS guard bypass via empty `{% for %}` body

    LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. In versions 10.25.7 and below, the renderLimit option can be fully bypassed by a {% for %} (or {% tablerow %}) tag whose body is empty. The renderLimit option is documented in docs/source/tutorials/dos.md as the mechanism that "mitigates this by limiting the time consumed by each render() call." The per-iteration time check is reached only when the body contains at least one template node, so a template such as {%- for i in (1..N) -%}{%- endfor -%} iterates the full collection without ever consulting renderLimit. With a configured renderLimit of 50 ms, a

    • Auf 10.26.0 aktualisieren
    Veröffentlicht Aktualisiert
  10. CVE-2026-44644

    Mittel · CVSS 6.1EPSS 0,25%Korrektur verfügbar

    LiquidJS's strip_html filter bypass via newline characters in HTML tags enables XSS

    LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. Versions 10.25.7 and below are vulnerable to XSS through a flaw in the strip_html filter logic. The strip_html filter is intended to remove HTML tags from a string before rendering, and is widely used as an XSS sanitizer. The implementation uses a regex whose catch-all branch (<.*?>) does not match line terminators, so any HTML tag containing a \n or \r character passes through unmodified. An attacker who can place a newline inside a tag (e.g. <img\nsrc=x\nonerror=alert(1)>) bypasses sanitization entirely, since browsers treat newlines as whitespace with

    • Auf 10.26.0 aktualisieren
    Veröffentlicht Aktualisiert
  11. CVE-2026-41311

    Hoch · CVSS 7.5EPSS 0,38%Korrektur verfügbar

    LiquidJS is vulnerable to Denial of Service via circular block reference in layout

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to version 10.25.7, a circular block reference in {% layout %} / {% block %} causes an infinite recursive loop, consuming all available memory (~4GB) and crashing the Node.js process with FATAL ERROR: JavaScript heap out of memory. This allows any user who can submit a Liquid template to perform a Denial of Service attack. This issue has been patched in version 10.25.7.

    • Auf 10.25.7 aktualisieren
    Veröffentlicht Aktualisiert
  12. CVE-2026-39859

    Mittel · CVSS 6.3EPSS 0,45%Korrektur verfügbar

    LiquidJS has a renderFile() / parseFile() bypass configured root and allow arbitrary file read

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.25.3, liquidjs 10.25.0 documents root as constraining filenames passed to renderFile() and parseFile(), but top-level file loads do not enforce that boundary. A Liquid instance configured with an empty temporary directory as root can return the contents of arbitrary files. This vulnerability is fixed in 10.25.3.

    • Auf 10.25.5 aktualisieren
    Veröffentlicht Aktualisiert
  13. CVE-2026-39412

    Mittel · CVSS 5.3EPSS 0,4%Korrektur verfügbar

    LiquidJS has an ownPropertyOnly bypass via sort_natural filter — prototype property information disclosure through sorting side-channel

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.25.4, the sort_natural filter bypasses the ownPropertyOnly security option, allowing template authors to extract values of prototype-inherited properties through a sorting side-channel attack. Applications relying on ownPropertyOnly: true as a security boundary (e.g., multi-tenant template systems) are exposed to information disclosure of sensitive prototype properties such as API keys and tokens. This vulnerability is fixed in 10.25.4.

    • Auf 10.25.4 aktualisieren
    Veröffentlicht Aktualisiert
  14. CVE-2026-35525

    Hoch · CVSS 8.2EPSS 0,4%Korrektur verfügbar

    LiquidJS has a root restriction bypass for partial and layout loading through symlinked templates

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.25.3, for {% include %}, {% render %}, and {% layout %}, LiquidJS checks whether the candidate path is inside the configured partials or layouts roots before reading it. That check is path-based, not realpath-based. Because of that, a file like partials/link.liquid passes the directory containment check as long as its pathname is under the allowed root. If link.liquid is actually a symlink to a file outside the allowed root, the filesystem follows the symlink when the file is opened and LiquidJS renders the external target. So the restriction is ap

    • Auf 10.25.3 aktualisieren
    Veröffentlicht Aktualisiert
  15. CVE-2026-34166

    Niedrig · CVSS 3.7EPSS 0,5%Korrektur verfügbar

    LiquidJS has a Memory Limit Bypass via Quadratic Amplification in `replace` Filter

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.25.3, the replace filter in LiquidJS incorrectly accounts for memory usage when the memoryLimit option is enabled. It charges str.length + pattern.length + replacement.length bytes to the memory limiter, but the actual output from str.split(pattern).join(replacement) can be quadratically larger when the pattern occurs many times in the input string. This allows an attacker who controls template content to bypass the memoryLimit DoS protection with approximately 2,500x amplification, potentially causing out-of-memory conditions. This vulnerability i

    • Auf 10.25.3 aktualisieren
    Veröffentlicht Aktualisiert
  16. CVE-2026-33285

    Hoch · CVSS 7.5EPSS 0,41%Keine Korrektur veröffentlicht

    LiquidJS: memoryLimit Bypass through Negative Range Values Leads to Process Crash

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to version 10.25.1, LiquidJS's `memoryLimit` security mechanism can be completely bypassed by using reverse range expressions (e.g., `(100000000..1)`), allowing an attacker to allocate unlimited memory. Combined with a string flattening operation (e.g., `replace` filter), this causes a V8 Fatal error that crashes the Node.js process, resulting in complete denial of service from a single HTTP request. Version 10.25.1 patches the issue.

    Veröffentlicht Aktualisiert
  17. CVE-2026-33287

    Hoch · CVSS 7.5EPSS 0,48%Keine Korrektur veröffentlicht

    LiquidJS has Exponential Memory Amplification through its replace_first Filter $& Pattern

    LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to version 10.25.1, the `replace_first` filter in LiquidJS uses JavaScript's `String.prototype.replace()` which interprets `$&` as a back reference to the matched substring. The filter only charges `memoryLimit` for the input string length, not the amplified output. An attacker can achieve exponential memory amplification (up to 625,000:1) while staying within the `memoryLimit` budget, leading to denial of service. Version 10.25.1 patches the issue.

    Veröffentlicht Aktualisiert
  18. CVE-2026-30952

    Hoch · CVSS 8.7EPSS 0,58%Korrektur verfügbar

    liquidjs has a path traversal fallback vulnerability

    liquidjs is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.25.0, the layout, render, and include tags allow arbitrary file access via absolute paths (either as string literals or through Liquid variables, the latter require dynamicPartials: true, which is the default). This poses a security risk when malicious users are allowed to control the template content or specify the filepath to be included as a Liquid variable. This vulnerability is fixed in 10.25.0.

    • Auf 10.25.0 aktualisieren
    Veröffentlicht Aktualisiert
  19. CVE-2022-25948

    Mittel · CVSS 5.3EPSS 1,01%Korrektur verfügbar

    Information Exposure

    The package liquidjs before 10.0.0 are vulnerable to Information Exposure when ownPropertyOnly parameter is set to False, which results in leaking properties of a prototype. Workaround For versions 9.34.0 and higher, an option to disable this functionality is provided.

    • Auf 10.0.0 aktualisieren
    Veröffentlicht Aktualisiert

Prüfen Sie Ihren Server

Gleichen Sie Ihren installierten Stack und seine Versionen mit den aktuellen Sicherheitsmeldungen ab.

Prüfen Sie Ihren Server →