CVE-2026-33170 json
Rails Active Support has a possible XSS vulnerability in SafeBuffer#%
published 2026-03-23 7 mo ago modified 2026-09-10 59 d ago also EUVD-2026-14624 , GHSA-89vf-4333-qx8v
- cvss
- 6.1
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 27%
- public exploits
- 0
- none known
Summary
Active Support is a toolkit of support libraries and Ruby core extensions extracted from the Rails framework. Prior to versions 8.1.2.1, 8.0.4.1, and 7.2.3.1, `SafeBuffer#%` does not propagate the `@html_unsafe` flag to the newly created buffer. If a `SafeBuffer` is mutated in place (e.g. via `gsub!`) and then formatted with `%` using untrusted arguments, the result incorrectly reports `html_safe? == true`, bypassing ERB auto-escaping and possibly leading to XSS. Versions 8.1.2.1, 8.0.4.1, and 7.2.3.1 contain a patch.
Patch / fix
- rubygems activesupport 7.2.3.1, 8.0.4.1, 8.1.2.1
- activesupport_project activesupport 7.2.3.1, 8.0.4.1, 8.1.2.1
- rails activesupport 7.2.3.1, 8.0.4.1, 8.1.2.1
- rubyonrails activesupport 7.2.3.1, 8.0.4.1, 8.1.2.1
- rails Debian 12 2:6.1.7.10+dfsg-1~deb12u3
- rails Debian 13 2:7.2.2.2+dfsg-2~deb13u2
- rails Debian 14 2:7.2.3.1+dfsg-1
debian advisories DEBIAN-CVE-2026-33170
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-33170 updated cvss 5.4
Rails: Active Support: Active Support: Cross-Site Scripting (XSS) due to improper HTML safety flag propagation in SafeBuffer#%
-
Red Hat Satellite 6 rubygem-activesupportaffected: workaround, no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 7 mo ago
Exploit prediction
0.34% chance of exploitation in the next 30 days, higher than 27% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 5.3 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N |
| CNA | 4.0 | 5.3 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/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:X |
| NVD | 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 | activesupport | >=8.1.0.beta1, <8.1.2.1 >=8.0.0.beta1, <8.0.4.1 <7.2.3.1 |
8.1.2.1 8.0.4.1 7.2.3.1 |
Affected products
- rails activesupport
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
- Technology feeds
References
-
github.com
/rails/rails/commit/50d732af3b7c8aaf63cbcca0becbc00279b215b7
web, patch
-
github.com
/rails/rails/commit/6e8a81108001d58043de9e54a06fca58962fc2db
web, patch
-
github.com
/rails/rails/commit/c1ad0e8e1972032f3395853a5e99cea035035beb
web, patch
-
github.com
/rails/rails/security/advisories/GHSA-89vf-4333-qx8v
web, vendor-advisory, advisory
-
github.com
/rails/rails/releases/tag/v7.2.3.1
web, release-notes
-
github.com
/rails/rails/releases/tag/v8.0.4.1
web, release-notes
-
github.com
/rails/rails/releases/tag/v8.1.2.1
web, release-notes
-
nvd.nist.gov
/vuln/detail/CVE-2026-33170
advisory
-
github.com
/rails/rails
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/activesupport/CVE-2026-33170.yml
web
Sources
- CVE List CVE-2026-33170
- GitHub Advisory GHSA-89vf-4333-qx8v
- NVD CVE-2026-33170
- Maintainer advisory GHSA-89vf-4333-qx8v
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.
The maintainers of rails/rails published their own advisory on GitHub. Reviewed sources take precedence over it.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.