CVE-2026-35525
Liquidjs ≤ 10.25.3
Raw vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XCVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). Risk Priority is our own derived reading, not an NVD score.
Summary
CVE-2026-35525 is a high-severity UNIX Symbolic Link (Symlink) Following (CWE-61) vulnerability in Liquidjs Liquidjs. Its CVSS base score is 8.2 (High).
Operationally, exploitation aligns with the MITRE ATT&CK technique Path Interception (T1034); ranked at the 33th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.
The strongest mitigations our analysis identified map to AC-3 (Access Enforcement) and AC-4 (Information Flow Enforcement) — see the control section below for these in your framework.
Deeper analysis AI-assisted summary
Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.
CVE-2026-35525 is a vulnerability in LiquidJS, a Shopify- and GitHub Pages-compatible template engine implemented in pure JavaScript. Versions prior to 10.25.3 are affected due to improper path validation in the {% include %}, {% render %}, and {% layout %} tags. LiquidJS performs a path-based check to ensure candidate paths are within configured partials or layouts roots before reading files, but this does not use realpath resolution. As a result, a symlink like partials/link.liquid—whose pathname appears under the allowed root—can bypass the check, allowing the engine to follow the symlink and render content from an external file outside the trusted root.
An attacker can exploit this in environments where they can place or influence files under a trusted template root, such as uploaded themes, extracted archives, mounted content, or repository-controlled template trees. No privileges are required (PR:N), and exploitation is straightforward over the network with low complexity (AV:N/AC:L). Successful exploitation enables high confidentiality impact (C:H), as the engine reads and renders arbitrary external files, potentially leaking sensitive data without integrity or availability disruption.
The vulnerability is fixed in LiquidJS version 10.25.3, as detailed in the project's security advisory (GHSA-56p5-8mhr-2fph), release notes, and associated pull request. Security practitioners should upgrade to 10.25.3 or later to mitigate the issue, which is rated 7.5 (High) under CVSS:3.1 and mapped to CWE-61 (symlink issues).
OWASP Top 10 for Web (2025)
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2026-20594
Vulnerability Data
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…
more
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.
- CWE(s)
Related Threats
MITRE ATT&CK Enterprise Techniques
CVEs Like This One
Affected Assets
Mitigating Controls
Control response
—
—
- 2 hardening rules · 2 OS baselines
V5.2.5
Mitigating Controls (NIST 800-53 r5) AI
Access enforcement must resolve the actual target of any file reference and apply authorizations to it, directly stopping symlink traversal to unauthorized objects.
Information-flow enforcement on file operations must follow the resolved target rather than the link name, blocking unauthorized data movement via symlinks.
Least-privilege restrictions on the directories that may contain links or targets reduce the set of files an attacker can reach even if a symlink is followed.
Mitigating Controls (NIST CSF 2.0) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.
Vulnerability identification can discover existing symlink issues but does not prevent or remediate them in code.
Least-privilege access policies can limit damage from symlink attacks but do not address the coding flaw itself.
Secure SDLC practices directly prevent introduction of symlink-following flaws in file-handling code.
Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.
Secure-architecture principles require safe file-handling and canonicalization, directly addressing symlink attacks.
Secure-coding standards mandate explicit symlink checks and safe open patterns, fully mitigating CWE-61.
Security testing can detect symlink-following vulnerabilities before deployment, covering most of the weakness.
Access-control rules can restrict which files a process may open, reducing symlink-following risk but not eliminating the underlying path-resolution flaw.
Hardening callouts derived
Configuration rules from DISA STIG baselines that bear on weaknesses of the type cited by this CVE. Each rule is shown with the relationship its mapping actually records, against the CWE it was authored against. Derived via CVE→CWE over `controls_xwalks` (higher-evidence rows only; rows rated `none` are excluded).
Oracle Linux 8 (1 rule)
- V-248577 OL 8 must enable kernel parameters to enforce Discretionary Access Control (DAC) on symlinks. prevents CWE-61