Description
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.
Published: 2026-10-30
Score: 6.3 Medium
EPSS: n/a
KEV: No
Impact: Denial of Service
Action: Apply Patch
AI Analysis

Impact

Crass is a Ruby CSS parser that, before version 1.0.7, discards CSS comments by recursively consuming the next token. When presented with a stylesheet that contains a very large number of adjacent comments, the parser performs excessive recursion and triggers a SystemStackError, which causes the host application to crash. This flaw results in a denial of service condition for any process that processes untrusted CSS with Crass without comment preservation. The weakness is an instance of uncontrolled recursion (CWE-674). The likely attack vector is an attacker supplying a stylesheet that contains many adjacent comments to the parser.

Affected Systems

The vulnerability affects the Ruby library Crass supplied by the vendor rgrove. Any Ruby application that uses Crass with a version earlier than 1.0.7 and does not enable the :preserve_comments option is impacted. Upgrading to 1.0.7 or newer removes the problem, as the parser no longer uses the recursive comment consumption path.

Risk and Exploitability

The CVSS score of 6.3 indicates moderate severity. An EPSS score is not available, so the current likelihood of exploitation is unknown. The vulnerability is not listed in the CISA KEV catalogue. The attack is inferable from the description: an attacker can trigger the denial of service by injecting a stylesheet with a large number of comments into any application that parses CSS with Crass without comment preservation. Because the flaw can be triggered by any untrusted CSS input, an attacker who can provide such input has a direct path to cause a SystemStackError and bring the application down. The defense is to upgrade to the patched version or enable the :preserve_comments option. While no exploit has been reported publicly, the moderate CVSS score and lack of evidence of widespread exploitation suggest the risk is significant but not immediate.

Generated by OpenCVE AI on October 30, 2026 at 20:51 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Crass to version 1.0.7 or newer to eliminate the recursive comment consumption path.
  • If upgrading cannot be performed immediately, configure Crass with the :preserve_comments option so that comments are not recursively consumed and the recursion flaw is bypassed.
  • Audit any code paths that pass externally supplied CSS to Crass and apply input size limits, sandboxing, or other denial of service mitigation controls to contain potential memory exhaustion.

Generated by OpenCVE AI on October 30, 2026 at 20:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-wwpr-jff3-395c Crass: A large number of adjacent CSS comments can trigger a SystemStackError
History

Fri, 30 Oct 2026 20:45:00 +0000

Type Values Removed Values Added
First Time appeared Rgrove
Rgrove crass
Vendors & Products Rgrove
Rgrove crass

Fri, 30 Oct 2026 19:00:00 +0000

Type Values Removed Values Added
Description 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.
Title Crass: A large number of adjacent CSS comments can trigger a SystemStackError
Weaknesses CWE-674
References
Metrics cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:L'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T18:44:22.330Z

Reserved: 2026-07-10T20:28:17.513Z

Link: CVE-2026-61847

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-30T19:18:28.540

Modified: 2026-10-30T19:39:14.897

Link: CVE-2026-61847

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-30T21:00:26Z

Weaknesses