{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-128069", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-11-12T21:24:51.129Z", "datePublished": "2026-11-13T17:17:47.954Z", "dateUpdated": "2026-11-13T17:17:47.954Z" }, "containers": { "cna": { "title": "rails-html-sanitizer: Possible XSS via shared scrubber state in concurrent calls", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-79", "lang": "en", "description": "CWE-79: Improper Neutralization of Input During Web Page Generation", "type": "CWE" } ] }, { "descriptions": [ { "cweId": "CWE-362", "lang": "en", "description": "CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "HIGH", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 4.7, "baseSeverity": "MEDIUM", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "privilegesRequired": "NONE", "scope": "CHANGED", "userInteraction": "REQUIRED", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N", "version": "3.1" } } ], "references": [ { "name": "https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-h7wh-q2qr-458c", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-h7wh-q2qr-458c" }, { "name": "https://github.com/rails/rails-html-sanitizer/issues/228", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/rails/rails-html-sanitizer/issues/228" }, { "name": "https://github.com/rails/rails-html-sanitizer/commit/15f764c3563d5dd9b97ad32eaa7454577ccec4b9", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/rails/rails-html-sanitizer/commit/15f764c3563d5dd9b97ad32eaa7454577ccec4b9" }, { "name": "https://github.com/rails/rails-html-sanitizer/releases/tag/v1.7.2", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/rails/rails-html-sanitizer/releases/tag/v1.7.2" } ], "affected": [ { "vendor": "rails", "product": "rails-html-sanitizer", "versions": [ { "version": "< 1.7.2", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-11-13T17:17:47.954Z" }, "descriptions": [ { "lang": "en", "value": "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." } ], "source": { "advisory": "GHSA-h7wh-q2qr-458c", "discovery": "UNKNOWN" } } } }