CVE Catalog

CVE-2026-35525

HighCVSS 7.5
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.40%

32th percentile - higher than 32% of all known CVEs

Summary

LiquidJS before version 10.25.3 has a path restriction bypass vulnerability in {% include %}, {% render %}, and {% layout %} directives. The containment check is path-based, not realpath-based, so a symlink inside the allowed root pointing outside bypasses the restriction.

Risk Assessment

An attacker who can place template files in a trusted directory (e.g., via uploaded themes, extracted archives, or repository content) can use symlinks to read and render files outside the allowed root, leading to sensitive data exposure.

Recommendation

Upgrade LiquidJS to version 10.25.3 or later immediately, which fixes this vulnerability.

Other vulnerabilities in LiquidJS

See all
Original NVD description (English source)

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 applied to the path string that was requested, not to the file that is actually read. This matters in environments where an attacker can place templates or otherwise influence files under a trusted template root, including uploaded themes, extracted archives, mounted content, or repository-controlled template trees. This vulnerability is fixed in 10.25.3.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS