Skip to main content
← Vulnerabilities

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.

7.5HighCNA
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.

Published
Last modified
Reference
Last checked
47/100 · provisional
Default setups
None on Exploit-DB, Metasploit or GitHub
On X
View the cve.now post

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”

github.com

cve.now Index

47Pcve.now Index 47 of 100 · methodology v3 · provisional
  • 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

  1. CVE published
  2. First seen by cve.now
  3. 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

  • From 8.1.0.beta1 · fixed in 8.1.4.1

  • fixed in 8.0.5.2

Evidence 7

Vendor advisory · 1

Establishes: Affected and fixed versions.

  1. Advisory

CVE record · 2

Establishes: The identifier and description.

  1. Record
  2. Record

Other links · 4

  1. Repository
  2. Repository
  3. Repository
  4. 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