CVE-2026-61846
NoneCVSS
—
EPSS
—
Published
Oct 30, 2026
CISA due date
—
Cloudanix analysis
A flaw in a Ruby library that reads CSS code lets attackers send specially crafted style information that can crash or slow down the program handling it.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
Unbounded recursive parsing of CSS simple blocks and functions allows an attacker-supplied CSS value to trigger Ruby SystemStackError or excessive memory consumption until the process crashes or becomes unresponsive.
Why it matters to the business
Applications or services that parse untrusted CSS can be taken offline or degraded, causing denial of service to users and requiring emergency restarts or resource limits.
How an attack unfolds
An attacker crafts a CSS string containing many levels of nested blocks or functions and supplies it to any code path that invokes Crass parsing; the parser recurses until the Ruby stack limit is hit or memory is exhausted, resulting in an unhandled exception or process termination.
How to fix it
Upgrade Crass to version 1.0.7 or later, which introduces a configurable recursion depth limit with a safe default; restart affected services after the upgrade.
How to confirm the fix worked
Confirm the installed gem version is at least 1.0.7; test by submitting a CSS payload with nesting depth greater than the configured limit and verify that a controlled error is raised instead of a stack overflow.
Typical attack path
- Identify an entry point that accepts attacker-controlled CSS input
- Generate a deeply nested CSS value exceeding the default recursion depth
- Submit the value through the normal parsing code path
- Observe process crash or high CPU/memory consumption confirming impact
How to detect it
Monitor application logs for uncaught SystemStackError exceptions originating from Crass parsing routines; review request logs for unusually large or deeply nested CSS payloads submitted shortly before crashes.
What your security team should do
- Immediately inventory all Ruby applications that depend on the Crass gem and schedule the upgrade to 1.0.7
- Add dependency scanning to CI pipelines to block future builds that use versions prior to 1.0.7
- Implement runtime resource limits or circuit breakers around CSS parsing to reduce blast radius until patches are applied
The record
Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3 specification. Prior to 1.0.7, Crass recursively parses `CSS simple blocks and functions` without a depth guard. An attacker-controlled CSS value containing deeply nested blocks or functions can recurse until Ruby raises `SystemStackError`: stack level too deep, or cause excessive memory usage. Version 1.0.7 adds a configurable depth limit with a conservative default. This issue is fixed in version 1.0.7.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-62303 Pistache is a high-performance REST toolkit written in C++. CWE-674
- CVE-2026-61847 Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3… CWE-674
- CVE-2026-119762 Axigen Mail Server before 10.5.69, 10.6.x before 10.6.40, and 10.7.x before 10.7.2… CWE-674
- CVE-2026-119542 A flaw was found in the Ickle query parser in Infinispan. CWE-674
- CVE-2026-119591 SQLite before 3.54.0 contains a stack exhaustion vulnerability in… CWE-674
- CVE-2026-119376 SQLite before 3.54.0 contains a stack exhaustion vulnerability that allows attackers to… CWE-674
- CVE-2026-119371 SQLite before 3.54.0 contains a stack exhaustion vulnerability that allows attackers to… CWE-674
- CVE-2026-119191 Forge (also called node-forge) is a native implementation of Transport Layer Security in… CWE-674