CVE-2026-54904CWE-835

CVE-2026-54904

High · published June 24, 2026

CVSS v3.1
7.5
EPSS
1%
Percentile
51.5
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00673 · 51.5th percentile
Weakness
CWE-835 · Loop with Unreachable Exit Condition ('Infinite Loop')
Published
2026-06-24T21:17Z
Affected products (1)
ProductVersionsFixed in
rubyconcurrency/concurrent_ruby< 1.3.71.3.7
References (5)
EPSS history
Timeline
  • 24 JUN 15:44Z
    concurrent-ruby: `AtomicReference#update` livelocks when the stored value is `Float::NAN`
    cvelistv5