CVE-2026-126203 json
Loofah: Mutation XSS in the HTML5 scrubbers through unescaped attribute values
published 13d ago modified 2d ago also EUVD-2026-124615 , GHSA-h6v6-rg66-fqj4
- 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 19%
- public exploits
- 0
- none known
Summary
Loofah is a general library for manipulating and transforming HTML/XML documents and fragments, built on top of Nokogiri. From 2.21.0 until 2.25.3, Loofah's HTML5 APIs Loofah.html5_fragment, Loofah.html5_document, and the scrub_html5_* methods can emit sanitized output that a browser reparses as different markup when used with Nokogiri before 1.19.5, because those Nokogiri versions do not escape angle brackets in attribute values. MathML can place markup inside an allowed attribute so the reparsed output becomes live HTML. The :strip scrubber is affected in every browser, while :prune and :escape are affected in WebKit browsers. Loofah's HTML4 APIs, Loofah::Helpers.sanitize, :whitewash, rails-html-sanitizer's default configuration, and JRuby are not affected. This issue is fixed in version 2.25.3.
Patch / fix
- rubygems loofah 2.25.3
- github.com/flavorjones/loofah@7ba1e7b commit
- github.com/sparklemotion/nokogiri@635abc8 commit
- github.com/flavorjones/loofah#324 pull request
- github.com/sparklemotion/nokogiri#3741 pull request
- github.com/flavorjones/loofah/releases/tag/v2.25.3 release
- github.com/sparklemotion/nokogiri/releases/tag/v1.19.5 release
Is CVE-2026-126203 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2d ago
Exploit prediction
0.27% chance of exploitation in the next 30 days, higher than 19% of all scored CVEs (FIRST EPSS, 2026-11-14).
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 |
|---|---|---|---|
| rubygems | loofah | >=2.21.0, <2.25.3 |
2.25.3 |
Affected products
- flavorjones loofah
Classification
References
-
github.com
/flavorjones/loofah/pull/324
web
-
github.com
/sparklemotion/nokogiri/pull/3741
web
-
github.com
/flavorjones/loofah/commit/7ba1e7b77e043fb7dc832ef746fcbf83137135e6
web
-
github.com
/sparklemotion/nokogiri/commit/635abc8d65c75d594ddf8957fbfbfd822c2c0dbd
web
-
github.com
/flavorjones/loofah/security/advisories/GHSA-h6v6-rg66-fqj4
web, advisory
-
github.com
/flavorjones/loofah/releases/tag/v2.25.3
web
-
github.com
/sparklemotion/nokogiri/releases/tag/v1.19.5
web
-
github.com
/flavorjones/loofah
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/loofah/GHSA-h6v6-rg66-fqj4.yml
web
Sources
- CVE List CVE-2026-126203
- GitHub Advisory GHSA-h6v6-rg66-fqj4
- NVD CVE-2026-126203
- Maintainer advisory GHSA-h6v6-rg66-fqj4
Fencer Intel 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.
The maintainers of flavorjones/loofah published their own advisory on GitHub. Reviewed sources take precedence over it.