high7.5
CVE-2026-39859
LiquidJS: `renderFile()` / `parseFile()` bypass configured `root` and allow arbitrary file read
Impact
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.
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | liquidjs | <= 10.25.4 | 10.25.5 |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Liquidjs | Liquidjs | before 10.25.3 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- https://github.com/advisories/GHSA-v273-448j-v4qj
- https://github.com/harttle/liquidjs/security/advisories/GHSA-v273-448j-v4qj
- https://github.com/harttle/liquidjs/pull/870
- https://github.com/harttle/liquidjs/commit/f41c1fc02fe901598f3328118b42b13bc6bc9b04
- https://github.com/harttle/liquidjs/releases/tag/v10.25.5
- https://nvd.nist.gov/vuln/detail/CVE-2026-39859