Uncontrolled recursion in Crass CSS parser enables denial of service
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · Low
- Fix status
- Partial Red Hat: 2 without a fix
Attack profile from CVSS 4.0 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-674.
Summary
Crass, a Ruby CSS parser, is affected before 1.0.7. When the default option that discards comments is in use, the parser removes comments through uncontrolled recursion (CWE-674). An attacker who supplies a stylesheet with a very large number of adjacent comments triggers a SystemStackError and denies service to the parsing application.
Written with Claude Haiku 5.5 from the sources below · 2026-11-02
Description from the CNA
Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3 specification. Prior to 1.0.7, when the `:preserve_comments` option is not enabled, which is the default, Crass discards CSS comments by recursively consuming the next token. An attacker-provided stylesheet containing a very large number of adjacent comments can cause excessive recursion and trigger a `SystemStackError`, denying service to the parsing application. Preserving comments avoids this recursive path. This issue is fixed in version 1.0.7.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| rgrove | crass | before 1.0.7 | 1.0.7 | Patch available | CNA |
| — | crass (RubyGems) | before 1.0.7 | 1.0.7 | Patch available | GHSA-wwpr-jff3-395c |
- crass Vendorrgrove Affected before 1.0.7 Fixed in 1.0.7 Patch available CNA
- crass (RubyGems) Vendor— Affected before 1.0.7 Fixed in 1.0.7 Patch available GHSA-wwpr-jff3-395c
Remediation
Update the RubyGems package crass to version 1.0.7, which fixes the issue. Until then, enabling the preserve_comments option avoids the recursive path. Red Hat 3scale API Management Platform 2 has no fix planned, and Red Hat Satellite 6 has no fix available.
Written with Claude Haiku 5.5 from the sources below · 2026-11-02
- Fix · CNA crass (rgrove) Fixed in 1.0.7
- Fix · GHSA-wwpr-jff3-395c crass (RubyGems) Fixed in 1.0.7 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Important. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat 3scale API Management Platform 2 | Affected | No fix planned: Will not fix |
| Red Hat Satellite 6 | Affected | No fix yet |
Not affected: 1 product
- Red Hat 3scale API Management Platform 2
Timeline
- 2026-10-30 Threatist record created from CVE-2026-61847
- 2026-10-30 CISA SSVC decision points changed
- 2026-10-30 Priority changed: MEDIUM → LOW
- 2026-10-31 Affected versions changed · Red Hat
- 2026-10-31 CVSS score added · Red Hat
- 2026-11-02 Affected versions changed · Red Hat
References
More rgrove vulnerabilities
- TI-2026-83291 Large numeric exponents in Crass CSS parser exhaust CPU and memory CVSS 4.0HIGH 8.9
- TI-2020-03543 Cross-site Scripting in Sanitize CVSS 3.1HIGH 7.3
- TI-2018-02737 Cross-site scripting in Ryan Grove sanitize CVSS 3.0HIGH 7.5
- TI-2026-83327 Uncontrolled recursion in Crass CSS parser exhausts stack or memory CVSS 4.0MEDIUM 6.3
- TI-2023-18617 Sanitize vulnerable to Cross-site Scripting via insufficient neutralization of `style` element content CVSS 3.1HIGH 7.1
- TI-2026-83329 Superlinear CPU use in Crass CSS parser with non-ASCII input CVSS 4.0MEDIUM 6.3
Sources
- CVE-2026-61847 · CVE Program
- CVE-2026-61847 · NVD
- FIRST EPSS
- CVE-2026-61847 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences