CVE-2026-128069 json
rails-html-sanitizer: Possible XSS via shared scrubber state in concurrent calls
published 13d ago modified yesterday also EUVD-2026-125593 , GHSA-h7wh-q2qr-458c
- cvss
- 4.7
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 12%
- public exploits
- 0
- none known
Summary
rails-html-sanitizer is responsible for sanitizing HTML fragments in Rails applications. Before 1.7.2, the HTML4 and HTML5 variants of Rails::HTML::SafeListSanitizer reuse one Rails::HTML::PermitScrubber across calls and mutate its tags and attributes without synchronization. In a multithreaded process, concurrent sanitize calls using different tags: or attributes: options can interleave and cause one call to use the other call's allowlist. If a permissive call admits a script element or event-handler attribute, output expected to be sanitized under a stricter policy can retain it and cause cross-site scripting when rendered. Applications that are single-threaded, use one identical allowlist everywhere, or provide a separate scrubber: are not affected. This issue is fixed in version 1.7.2.
Patch / fix
- rubygems rails-html-sanitizer 1.7.2
Is CVE-2026-128069 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 FencerExploit prediction
0.22% chance of exploitation in the next 30 days, higher than 12% of all scored CVEs (FIRST EPSS, 2026-11-14).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 4.7 | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N |
| GitHub | 3.1 | 4.7 | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | rails-html-sanitizer | <1.7.2 |
1.7.2 |
Affected products
- rails rails-html-sanitizer
Classification
- Weakness
- Technology feeds
References
-
github.com
/rails/rails-html-sanitizer/commit/15f764c3563d5dd9b97ad32eaa7454577ccec4b9
web
-
github.com
/rails/rails-html-sanitizer/security/advisories/GHSA-h7wh-q2qr-458c
web, advisory
-
github.com
/rails/rails-html-sanitizer/issues/228
web
-
github.com
/rails/rails-html-sanitizer/releases/tag/v1.7.2
web
-
github.com
/rails/rails-html-sanitizer
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/rails-html-sanitizer/GHSA-h7wh-q2qr-458c.yml
web
Sources
- CVE List CVE-2026-128069
- GitHub Advisory GHSA-h7wh-q2qr-458c
- NVD CVE-2026-128069
- Maintainer advisory GHSA-h7wh-q2qr-458c
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 rails/rails-html-sanitizer published their own advisory on GitHub. Reviewed sources take precedence over it.