Description
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.
Published: 2026-04-08
Score: 6.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Arbitrary File Read
Action: Patch
AI Analysis

Impact

LiquidJS, a plain‑JavaScript template engine used in Node.js projects, contains a flaw that bypasses the configured root directory when a template file is loaded with renderFile() or parseFile(). Because top‑level file loads do not enforce the root boundary, an instance that has an empty temporary directory as its root can return the contents of any file readable by the running process. If an attacker supplies a path that points outside the intended directory, the engine can expose sensitive configuration files, credentials, or other secrets, compromising data confidentiality and application integrity.

Affected Systems

Affected users run Harttle’s LiquidJS component, specifically versions 10.25.0 through 10.25.2. Versions after 10.25.3 include the fix. Projects that incorporate these earlier releases—including npm packages or private forks—are at risk unless the vulnerability has been mitigated by configuration or patching.

Risk and Exploitability

The CVSS score of 6.3 indicates medium severity, and the EPSS score of less than 1% suggests a low likelihood of widespread exploitation. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires the application to invoke renderFile() or parseFile() with a path that escapes the root constraint, which can be achieved if the instance is configured with an empty root directory. Based on the description, it is inferred that an attacker could trigger the read by supplying a malicious template, either locally or remotely, depending on how the application exposes these functions.

Generated by OpenCVE AI on April 10, 2026 at 22:50 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade LiquidJS to 10.25.3 or later.
  • If an upgrade is not immediately possible, change the root directory to a non‑empty, controlled location so that file loads are constrained to a safe path.

Generated by OpenCVE AI on April 10, 2026 at 22:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-v273-448j-v4qj LiquidJS: `renderFile()` / `parseFile()` bypass configured `root` and allow arbitrary file read
History

Fri, 10 Apr 2026 21:30:00 +0000

Type Values Removed Values Added
First Time appeared Liquidjs
Liquidjs liquidjs
CPEs cpe:2.3:a:liquidjs:liquidjs:*:*:*:*:*:node.js:*:*
Vendors & Products Liquidjs
Liquidjs liquidjs

Fri, 10 Apr 2026 21:15:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'}

ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 09 Apr 2026 08:30:00 +0000

Type Values Removed Values Added
First Time appeared Harttle
Harttle liquidjs
Vendors & Products Harttle
Harttle liquidjs

Wed, 08 Apr 2026 20:15:00 +0000

Type Values Removed Values Added
Description 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.
Title LiquidJS has a renderFile() / parseFile() bypass configured root and allow arbitrary file read
Weaknesses CWE-22
References
Metrics cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Harttle Liquidjs
Liquidjs Liquidjs
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-04-10T20:45:55.071Z

Reserved: 2026-04-07T19:13:20.379Z

Link: CVE-2026-39859

cve-icon Vulnrichment

Updated: 2026-04-10T20:45:47.311Z

cve-icon NVD

Status : Analyzed

Published: 2026-04-08T20:16:26.273

Modified: 2026-04-10T21:18:42.400

Link: CVE-2026-39859

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-13T14:25:03Z

Weaknesses