{"id":"CVE-2026-33170","summary":"Rails Active Support has a possible XSS vulnerability in SafeBuffer#%","details":"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.","aliases":["GHSA-89vf-4333-qx8v"],"modified":"2026-09-09T03:47:46.600924189Z","published":"2026-03-23T23:09:48.923Z","database_specific":{"cwe_ids":["CWE-79"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33170.json","cna_assigner":"GitHub_M"},"references":[{"type":"WEB","url":"https://github.com/rails/rails/releases/tag/v7.2.3.1"},{"type":"WEB","url":"https://github.com/rails/rails/releases/tag/v8.0.4.1"},{"type":"WEB","url":"https://github.com/rails/rails/releases/tag/v8.1.2.1"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33170.json"},{"type":"ADVISORY","url":"https://github.com/rails/rails/security/advisories/GHSA-89vf-4333-qx8v"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-33170"},{"type":"FIX","url":"https://github.com/rails/rails/commit/50d732af3b7c8aaf63cbcca0becbc00279b215b7"},{"type":"FIX","url":"https://github.com/rails/rails/commit/6e8a81108001d58043de9e54a06fca58962fc2db"},{"type":"FIX","url":"https://github.com/rails/rails/commit/c1ad0e8e1972032f3395853a5e99cea035035beb"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/rails/rails","events":[{"introduced":"0"},{"fixed":"ba76fca032a66f3716ca8a661c9ddb006acaf885"},{"introduced":"dd8f7185faeca6ee968a6e9367f6d8601a83b8db"},{"fixed":"a79efed95797b196575a98845dc989e3106a9acb"},{"introduced":"1cdd190a25e483b65f1f25bbd0f13a25d696b461"},{"fixed":"1db4b89687cc18311fc3f92623136705df24e671"},{"fixed":"50d732af3b7c8aaf63cbcca0becbc00279b215b7"},{"fixed":"6e8a81108001d58043de9e54a06fca58962fc2db"},{"fixed":"c1ad0e8e1972032f3395853a5e99cea035035beb"}],"database_specific":{"cpe":"cpe:2.3:a:rubyonrails:rails:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"0"},{"fixed":"7.2.3.1"},{"introduced":"8.0.0"},{"fixed":"8.0.4.1"},{"introduced":"8.1.0"},{"fixed":"8.1.2.1"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["v7.2.3","v8.0.4","v8.1.2","v8.1.1","v8.1.0","v8.0.3","v8.0.2","v8.0.1","v8.0.0","v7.2.2","v7.2.1","v7.2.0.rc1","v7.2.0.beta3","v7.2.0.beta2","v7.2.0.beta1","v7.1.0.beta1","v7.0.0.alpha2","v7.0.0.alpha1","v6.1.0.rc1","v6.0.0.beta2","v6.0.0.beta1","v5.1.0.beta1","v5.0.0.beta4","v5.0.0.beta2","v5.0.0.beta1","v4.2.0.beta1","v4.0.0.rc1","v4.0.0.beta1","v3.2.0.rc1","v3.1.0.rc1","v3.1.0.beta1","v3.0.0.beta3","v3.0.0.beta.3","v2.0.1","v2.0.0","v2.0.0_RC2","v2.0.0_RC1","v2.0.0_PR","v1.1.1","v1.1.0","v1.1.0_RC1","v0.14.3","v0.14.1","v0.13.1","v0.13.0","v0.12.0","v0.11.1","v0.11.0","v0.10.1","v0.10.0","v0.9.5","v0.9.4.1","v0.9.4","v0.9.3","v0.9.2","v0.9.1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-33170.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}]}