CVE-2026-44644: LiquidJS's strip_html filter bypass via newline characters in HTML tags enables XSS
(updated )
The strip_html filter in liquidjs is intended to remove HTML tags from a string before rendering, and is widely used as an XSS sanitizer. The implementation uses a regex whose catch-all branch (<.*?>) does not match line terminators, so any HTML tag containing a \n or \r character passes through unmodified. An attacker who can place a newline inside a tag (e.g. <img\nsrc=x\nonerror=alert(1)>) bypasses sanitization entirely, since browsers treat newlines as whitespace within a tag and execute the resulting onerror/onload/etc. handler. This results in stored or reflected XSS in any application that relies on strip_html to neutralize untrusted HTML.
References
- github.com/advisories/GHSA-2qv6-9wx5-cwv4
- github.com/harttle/liquidjs/blob/v10.26.0/CHANGELOG.md
- github.com/harttle/liquidjs/commit/26ea2856c7a90aec892b98d94a9b7a3e18539045
- github.com/harttle/liquidjs/releases/tag/v10.26.0
- github.com/harttle/liquidjs/security/advisories/GHSA-2qv6-9wx5-cwv4
- nvd.nist.gov/vuln/detail/CVE-2026-44644
Code Behaviors & Features
Detect and mitigate CVE-2026-44644 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →