Crass: Incorrect tokenization of bad URLs enables CSS sanitizer bypass
Crass is a Ruby CSS parser that is compliant with the CSS Syntax Level 3 specification. Prior to 1.0.8, Crass incorrectly treats a closing parenthesis after an escaped backslash as escaped while consuming the remnants of a bad URL. Crass therefore keeps declarations, style rules, or at-rules inside a bad URL token even though a browser treats them as live CSS. A sanitizer that parses untrusted CSS with Crass and reserializes it without rejecting the bad URL can allow CSS used for UI redress, external resource loading, or CSS-based data exfiltration, but this issue does not enable script execution in modern browsers. This issue is fixed in version 1.0.8.
- Products
- crass
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-116695
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 15:56 UTC · Revision 1
Source evidence
Crass: Incorrect tokenization of bad URLs enables CSS sanitizer bypass
core-cve · Original sourcePublished 27 Oct 2026, 20:10 UTC
Crass is a Ruby CSS parser that is compliant with the CSS Syntax Level 3 specification. Prior to 1.0.8, Crass incorrectly treats a closing parenthesis after an escaped backslash as escaped while consuming the remnants of a bad URL. Crass therefore keeps declarations, style rules, or at-rules inside a bad URL token even though a browser treats them as live CSS. A sanitizer that parses untrusted CSS with Crass and reserializes it without rejecting the bad URL can allow CSS used for UI redress, external resource loading, or CSS-based data exfiltration, but this issue does not enable script execution in modern browsers. This issue is fixed in version 1.0.8.
cve:CVE-2026-116695
crass
Fixed versions: Not specified
Complete source record
{
"id": "37ce63556a6a2d820840f6676a0a0ddf2f823e5512025b2a93203c5f4080c5d1",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-116695",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Crass: Incorrect tokenization of bad URLs enables CSS sanitizer bypass",
"summary": "Crass is a Ruby CSS parser that is compliant with the CSS Syntax Level 3 specification. Prior to 1.0.8, Crass incorrectly treats a closing parenthesis after an escaped backslash as escaped while consuming the remnants of a bad URL. Crass therefore keeps declarations, style rules, or at-rules inside a bad URL token even though a browser treats them as live CSS. A sanitizer that parses untrusted CSS with Crass and reserializes it without rejecting the bad URL can allow CSS used for UI redress, external resource loading, or CSS-based data exfiltration, but this issue does not enable script execution in modern browsers. This issue is fixed in version 1.0.8.",
"evidence": "cve:CVE-2026-116695",
"products": [
{
"name": {
"value": "crass",
"evidence": "/containers/cna/affected/0/product"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": []
}
],
"severity": "medium",
"structured": {
"id": "CVE-2026-116695",
"aliases": [
"CVE-2026-116695"
],
"metrics": [
{
"cvssV4_0": {
"version": "4.0",
"baseScore": 5.3,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N",
"userInteraction": "PASSIVE",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"subIntegrityImpact": "LOW",
"vulnIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "LOW",
"vulnConfidentialityImpact": "NONE"
}
}
],
"affected": [
{
"vendor": "rgrove",
"product": "crass",
"versions": [
{
"status": "affected",
"version": "< 1.0.8"
}
]
}
],
"modified": "2026-10-27T20:10:34.010Z",
"provider": "cve",
"references": [
"https://github.com/rgrove/crass/security/advisories/GHSA-pq4g-8rxf-4g29",
"https://github.com/rgrove/crass/commit/689fc45c632fdf3803b2f4e844ffc9cca3b08f34",
"https://github.com/rgrove/crass/releases/tag/v1.0.8"
],
"provider_metadata": {
"cna": {
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M",
"dateUpdated": "2026-10-27T20:10:34.010Z"
}
}
},
"related_cves": [
{
"value": "CVE-2026-116695",
"evidence": "/cveMetadata/cveId"
}
],
"security_relevant": true,
"severity_evidence": "/containers/cna/metrics"
},
"source_id": "core-cve",
"document_id": 398626,
"published_at": "2026-10-27T20:10:34.01+00:00"
}