# CVE-2026-39859: LiquidJS path traversal in renderFile and parseFile

Source: https://junglewise.ai/threats/cve-2026-39859-liquidjs-path-traversal-in-renderfile-and-parsefile  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-04-08. Updated: 2026-07-24  
License: CC BY 4.0 with a link back

CVE-2026-39859 · Severity: high · CVSS 7.5 · Published 2026-04-08

LiquidJS is a template engine used to generate dynamic web content, similar to those used by Shopify and GitHub Pages. A security flaw allows the software to read files from the server that should be off-limits, even when a restricted "root" folder is configured. If an application allows users to influence which template file is loaded, an attacker could steal sensitive system files or configuration data.

Technologies: [liquidjs (npm)](https://junglewise.ai/threats/technologies/liquidjs). Vendors: [npm](https://junglewise.ai/threats/vendors/npm).

## Quick answers

**Is CVE-2026-39859 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-39859 being exploited in the wild.

**How severe is CVE-2026-39859?** High severity, with a CVSS score of 7.5, published 8 April 2026.

**Which products and versions are affected?** liquidjs (npm) SEMVER:introduced=0,fixed=10.25.5.

**Is there a fix for CVE-2026-39859?** Yes. liquidjs (npm): upgrade to 10.25.5 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-39859 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-39859?** Check whether you run liquidjs (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- liquidjs (npm): upgrade to 10.25.5 or later

  ```sh
  npm install liquidjs@10.25.5
  ```


## Technical details

A path traversal vulnerability exists in LiquidJS due to improper validation of the 'root' constraint in the renderFile() and parseFile() functions. While the engine is designed to restrict file access to a specific root directory, the top-level file loader fails to enforce this boundary for absolute paths or fallback results. Specifically, in src/fs/loader.ts, the 'enforceRoot' check is bypassed for LookupType.Root, allowing the engine to resolve and read files like /etc/hosts even when a different root is configured. An attacker who can provide input to these functions can achieve arbitrary file disclosure. The issue is fixed in version 10.25.3.

## Affected products

- harttle liquidjs < 10.25.3

## Identifiers

- CVE-2026-39859
- GHSA-v273-448j-v4qj

## Timeline

- 2026-04-08: disclosed
- 2026-04-08: advisory
- 2026-04-08: patched

## References

- [https://github.com/harttle/liquidjs/security/advisories/GHSA-v273-448j-v4qj](https://github.com/harttle/liquidjs/security/advisories/GHSA-v273-448j-v4qj)

## Related threats

- [LiquidJS ownPropertyOnly bypass via inherited array indices](https://junglewise.ai/threats/cve-2026-106120-liquidjs-is-a-shopify-github-pages-compatible-template-engine-in)
- [LiquidJS join filter uncontrolled resource consumption](https://junglewise.ai/threats/cve-2026-69222-liquidjs-uncontrolled-resource-consumption-in-join-filter)
- [LiquidJS infinite loop in strip_html filter](https://junglewise.ai/threats/cve-2026-61556-liquidjs-infinite-loop-in-strip-html-filter)
- [LiquidJS remote code execution via crafted templates](https://junglewise.ai/threats/cve-2026-45618-liquidjs-remote-code-execution-via-crafted-templates)
- [LiquidJS memory limit bypass in pop array filter](https://junglewise.ai/threats/cve-2026-55575-liquidjs-memory-limit-bypass-in-pop-array-filter)
