CVE-2026-44644 json
LiquidJS's strip_html filter bypass via newline characters in HTML tags enables XSS
published 2026-05-27 5 mo ago modified 2026-10-27 13 d ago also EUVD-2026-37815 , GHSA-2qv6-9wx5-cwv4
- cvss
- 6.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 16%
- public exploits
- 0
- none known
Summary
LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. Versions 10.25.7 and below are vulnerable to XSS through a flaw in the strip_html filter logic. The strip_html filter 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. Exploitation is possible for applications that both render attacker-controlled strings via {{ x | strip_html }} to defend against HTML injection and do not separately HTML-escape that output (default behavior — outputEscape is unset by default). This issue has been fixed in version 10.26.0.
Patch / fix
- npm liquidjs 10.26.0
- liquidjs liquidjs 10.26.0
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 4 mo ago
Exploit prediction
0.25% chance of exploitation in the next 30 days, higher than 16% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/harttle/liquidjs/security/advisories/GHSA-2qv6-9wx5-cwv4 referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N |
| GitHub | 3.1 | 6.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | liquidjs | <10.26.0 |
10.26.0 |
Affected products
- harttle liquidjs
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/harttle/liquidjs/commit/26ea2856c7a90aec892b98d94a9b7a3e18539045
web
-
github.com
/harttle/liquidjs/security/advisories/GHSA-2qv6-9wx5-cwv4
exploit, web
-
github.com
/harttle/liquidjs/releases/tag/v10.26.0
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-44644
advisory
-
github.com
/harttle/liquidjs
package
-
github.com
/harttle/liquidjs/blob/v10.26.0/CHANGELOG.md
web
Sources
- CVE List CVE-2026-44644
- GitHub Advisory GHSA-2qv6-9wx5-cwv4
- NVD CVE-2026-44644
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.