Active Support: Possible DoS vulnerability in Active Support safe_constantize
Affects Rails apps that mount Action Cable (on by default at /cable) and accept connections from untrusted clients, on ActiveSupport before 8.0.5.2 or 8.1 before 8.1.4.1. Fixed in 8.1.4.1 and 8.0.5.2.
Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.
- Exploited
- No known exploitation
- Fix
- Fixed in 8.1.4.1, 8.0.5.2
- Who is exposed
- Default setups
Do first: Check every install: default setups are affected.
- Last modified
- Whether it needs action now or is a reference record, by fixed rules, with why. Last checked is when cve.now last re-read it.What do these mean? →
- Reference
- Last checked
- A 0-100 score for how much a CVE matters across the industry: exploitation, exposure, how widely the software is used, severity and whether a fix exists.What do these mean? →
- 47/100 · provisional
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Default setups
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
Active Support is a collection of utility classes and standard library extensions used by Rails and other Ruby projects. Prior to 8.1.4.1 and 8.0.5.2, when constant lookup raises LoadError, ActiveSupport::Inflector#safe_constantize (and String#safe_constantize) builds a regular expression from the requested constant name without escaping it, so a caller that passes untrusted input lets the attacker choose the source of a pattern that the application compiles. Crafted patterns can trigger defects in Ruby's regular expression compiler, possibly leading to a crash of the server process, and repeated requests could keep the application unavailable. Action Cable passes the channel value of each subscribe command to safe_constantize before any channel lookup, so an unauthenticated client can reach this code when the application mounts Action Cable and accepts connections from untrusted clients without an added authentication check. This issue is fixed in versions 8.1.4.1 and 8.0.5.2.
Who should check
Teams running Ruby on Rails apps with Action Cable mounted (default /cable) that accept unauthenticated connections, and any ActiveSupport user passing untrusted input to safe_constantize
Not fixed by: Rejecting unauthenticated Action Cable connections does not remove the exposure.
Read the source excerpt
“Mounts Action Cable, which a new Rails application does by default at /cable”
cve.now Index
- Exploitation?/40Unknown. No CISA SSVC exploitation rating yet
- Exposure22/25Default setups, reachable over the network without a login
- Reach17/20Affects Ruby on Rails (a widely deployed server, runtime, framework or database)
- Severity7.5/10CVSS 7.5
- No patch0/5No signal
What would change the score
- Would score about 87 if added to CISA KEV
- Would score about 82 if CISA's SSVC rates exploitation active
What to do
Check every install: default setups are affected.
Upgrade to a fixed version: 8.1.4.1, 8.0.5.2.
Workaround: Set config.action_cable.mount_path = nil if Action Cable is not used; otherwise reject unauthenticated connections in ApplicationCable::Connection#connect, which does not remove the exposure.
Check your systems with an agent
Paste this into a coding or ops agent. It checks your systems read-only and reports a table per asset.
Check whether my systems are affected by CVE-2026-126080 (Active Support: Possible DoS vulnerability in Active Support safe_constantize), using the cve.now data below. Rules: work read-only. Do not run exploit code, proof-of-concept scripts or scanners that send attack payloads, and do not change any configuration, package, image or deployment. Report findings only. What cve.now has for CVE-2026-126080 (entry last updated 2026-11-10): Affected: - rails rails: from 8.1, fixed in 8.1.4.1; fixed in 8.0.5.2 - RubyGems package activesupport: from 8.1.0.beta1, fixed in 8.1.4.1 - RubyGems package activesupport: fixed in 8.0.5.2 Fixed versions: 8.1.4.1, 8.0.5.2. Conditions (all must be true for the bug to be hit): - Application mounts Action Cable, which a new Rails application does by default at /cable (source: https://github.com/rails/rails/security/advisories/GHSA-8474-xrp6-wh69) - Application accepts Action Cable connections from untrusted clients without an added authentication check (source: https://github.com/rails/rails/security/advisories/GHSA-8474-xrp6-wh69) - ActiveSupport versions before 8.0.5.2, or 8.1 before 8.1.4.1 (source: https://github.com/rails/rails/security/advisories/GHSA-8474-xrp6-wh69) Setup: the bug is reachable in a default setup; no special feature or setting is needed. Attacker needs: network access, no login, no user action. Workaround: Set config.action_cable.mount_path = nil if Action Cable is not used; otherwise reject unauthenticated connections in ApplicationCable::Connection#connect, which does not remove the exposure. (source: https://github.com/rails/rails/security/advisories/GHSA-8474-xrp6-wh69) CISA KEV: CVE-2026-126080 is not listed as of cve.now's last read. This KEV status is for CVE-2026-126080 only. If you also check another CVE, look up its own KEV status; never assume it from this one. How to check: - Packages (RubyGems): find every lockfile in each project and run check_stack from the cve.now MCP server on each one. Compare the resolved versions, not the ranges a manifest declares, with the affected versions above. Include transitive dependencies. - Installed software: check what is actually running, not what a repo declares. Read the version from each host, container image and Kubernetes node (the binary's version output, the OS package database, image layers), and check whether the conditions above hold there. Distribution packages may carry a backported fix under an older version number; confirm against the distribution's own advisory. Verify against the linked advisories before concluding, and cite the date you read each one: - https://github.com/rails/rails/security/advisories/GHSA-8474-xrp6-wh69 - https://github.com/rails/rails/commit/210ac22d446c8e2625b091e79256806b836eee20 - https://github.com/rails/rails/commit/95aa9e416016524956d4904fed96eaed079580bb - https://github.com/rails/rails/releases/tag/v8.0.5.2 - https://github.com/rails/rails/releases/tag/v8.1.4.1 Do not conclude an asset is unaffected unless you checked it and the evidence covers both its version and the conditions above. If you could not check something, mark it unknown and say what is missing. Report a table with one row per asset and these columns: Asset | Version or build | Status (affected, fixed, not applicable, unknown) | Compensating controls | Exposure (internet-facing, internal, none) | Evidence | Next action. Entry: https://cve.now/CVE-2026-126080 For follow-up questions, use the cve.now MCP server at https://mcp.cve.now/mcp (no authentication), for example get_vulnerability with id CVE-2026-126080.
Timeline
- CVE published
- First seen by cve.now
- Posted on X by cve.now
Affected versions
- rails rails
From 8.1 · fixed in 8.1.4.1; fixed in 8.0.5.2
- activesupportRubyGems
From 8.1.0.beta1 · fixed in 8.1.4.1
- activesupportRubyGems
fixed in 8.0.5.2
Evidence 7
Vendor advisory · 1
Establishes: Affected and fixed versions.
- Advisory
CVE record · 2
Establishes: The identifier and description.
- Record
- Record
Other links · 4
- Repository
- Repository
- Repository
- Repository
Corrections
None so far.
Something wrong on this page? Report an error. Every fix is listed here.
Questions about CVE-2026-126080
Is CVE-2026-126080 being exploited?
It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data
What does this mean?
Crafted patterns passed to ActiveSupport's safe_constantize can crash the server process. Repeated requests could keep the application unavailable, which is a denial of service.Source: github.com
Which versions are affected by CVE-2026-126080?
rails: from 8.1 before 8.1.4.1; before 8.0.5.2. activesupport (RubyGems): from 8.1.0.beta1 before 8.1.4.1. activesupport (RubyGems): before 8.0.5.2.Source: cve.now feed data
Am I affected, and how do I check?
ActiveSupport versions before 8.0.5.2 and 8.1 before 8.1.4.1 are in scope, which covers Rails 8.0 before 8.0.5.2 and Rails 8.1 before 8.1.4.1. The exposure also requires Action Cable to be mounted and accepting connections from untrusted clients, so check the activesupport version in Gemfile.lock and whether config.action_cable.mount_path is set.Source: github.com
How do I fix CVE-2026-126080?
Upgrade to 8.1.4.1 on the 8.1 line or 8.0.5.2 on the 8.0 line. If Action Cable is not used, set config.action_cable.mount_path = nil as a workaround until the upgrade is done.Source: github.com