{"id":"CVE-2026-126080","state":"PUBLISHED","title":"Active Support: Possible DoS vulnerability in Active Support safe_constantize","description":"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.","publishedAt":"2026-11-10T21:04:44.528Z","updatedAt":"2026-11-10T21:04:44.528Z","severity":{"score":7.5,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","source":"GitHub_M"},"assigner":"GitHub_M","products":["rails rails"],"affected":[{"vendor":"rails","product":"rails","versions":[{"version":">= 8.1, < 8.1.4.1","status":"affected"},{"version":"< 8.0.5.2","status":"affected"}]}],"references":["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"],"weaknesses":["CWE-74"],"ingestedAt":"2026-11-10T21:16:04.848Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/126xxx/CVE-2026-126080.json","commit":"c5a01f083f4f1bb59d77be7743a509cc9f9b04ca","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-126080","state":"PUBLISHED","datePublished":"2026-11-10T21:04:44.528Z","dateUpdated":"2026-11-10T21:04:44.528Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-11-10T17:07:43.285Z"},"containers":{"cna":{"title":"Active Support: Possible DoS vulnerability in Active Support safe_constantize","descriptions":[{"lang":"en","value":"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."}],"affected":[{"vendor":"rails","product":"rails","versions":[{"version":">= 8.1, < 8.1.4.1","status":"affected"},{"version":"< 8.0.5.2","status":"affected"}]}],"references":[{"url":"https://github.com/rails/rails/security/advisories/GHSA-8474-xrp6-wh69","name":"https://github.com/rails/rails/security/advisories/GHSA-8474-xrp6-wh69","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/rails/rails/commit/210ac22d446c8e2625b091e79256806b836eee20","name":"https://github.com/rails/rails/commit/210ac22d446c8e2625b091e79256806b836eee20","tags":["x_refsource_MISC"]},{"url":"https://github.com/rails/rails/commit/95aa9e416016524956d4904fed96eaed079580bb","name":"https://github.com/rails/rails/commit/95aa9e416016524956d4904fed96eaed079580bb","tags":["x_refsource_MISC"]},{"url":"https://github.com/rails/rails/releases/tag/v8.0.5.2","name":"https://github.com/rails/rails/releases/tag/v8.0.5.2","tags":["x_refsource_MISC"]},{"url":"https://github.com/rails/rails/releases/tag/v8.1.4.1","name":"https://github.com/rails/rails/releases/tag/v8.1.4.1","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"HIGH","baseScore":7.5,"baseSeverity":"HIGH","confidentialityImpact":"NONE","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-74","lang":"en","description":"CWE-74: Improper Neutralization of Special Elements in Output Used by a Downstream Component","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-11-10T21:04:44.528Z"},"source":{"advisory":"GHSA-8474-xrp6-wh69","discovery":"UNKNOWN"}}}}}