Read the docs
TI-2026-39676 Aliases CVE-2026-54904GHSA-h8w8-99g7-qmvj

concurrent-ruby: `AtomicReference#update` livelocks when the stored value is `Float::NAN`

Priority HIGH 69CWE-835Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-835.

Summary

concurrent-ruby is a modern concurrency tools for Ruby. Prior to 1.3.7, Concurrent::AtomicReference#update can enter a permanent busy retry loop when the current value is Float::NAN. The issue is caused by the interaction between AtomicReference#update, which retries until compare_and_set(old_value, new_value) succeeds; Numeric compare_and_set, which checks old == old_value before attempting the underlying atomic swap.; and Ruby NaN semantics, where Float::NAN == Float::NAN is always false. As a result, once an AtomicReference contains Float::NAN, calling #update repeatedly evaluates the caller's block and never returns. In services that store externally derived numeric values in an AtomicReference, this can cause CPU exhaustion or permanent request/job hangs. This vulnerability is fixed in 1.3.7.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00673 52nd percentileScored 2026-11-07
Public exploit Yes 1 exploit referenceTagged by NVD
Fix Fixed concurrent-ruby (ruby-concurrency): 1.3.7concurrent-ruby (RubyGems): 1.3.7

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
ruby-concurrencyconcurrent-rubybefore 1.3.71.3.7Patch availableCNA
—concurrent-ruby (RubyGems)before 1.3.71.3.7Patch availableGHSA-h8w8-99g7-qmvj
  • concurrent-ruby Vendorruby-concurrency Affected before 1.3.7 Fixed in 1.3.7 Patch available CNA
  • concurrent-ruby (RubyGems) Vendor— Affected before 1.3.7 Fixed in 1.3.7 Patch available GHSA-h8w8-99g7-qmvj

CPE configurations NVD · 1

CPEVersionsRoleVendor
cpe:2.3:a:rubyconcurrency:concurrent_ruby:*:*:*:*:*:ruby:*:*before 1.3.7Vulnerableruby-concurrency
  • cpe:2.3:a:rubyconcurrency:concurrent_ruby:*:*:*:*:*:ruby:*:* Versions before 1.3.7 Vulnerable ·ruby-concurrency

Remediation

  • Fix · CNA concurrent-ruby (ruby-concurrency) Fixed in 1.3.7
  • Fix · GHSA-h8w8-99g7-qmvj concurrent-ruby (RubyGems) Fixed in 1.3.7 Advisory →

Vendor assessments

Red Hat

Red Hat rating: Moderate. Red Hat's page for this CVE →

Not affected: 3 products
  • Red Hat 3scale API Management Platform 2
  • Red Hat OpenStack Platform 17.1
  • Red Hat Satellite 6

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-54904
  2. 2026-10-03 Alias added: GHSA-h8w8-99g7-qmvj

References

  • TI-2026-39678 concurrent-ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption CVSS 4.0LOW 2.1
  • TI-2026-39677 concurrent-ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity CVSS 4.0LOW 2.0

Sources