PT-2026-51090 · Rubygems · Concurrent-Ruby
CVE-2026-54904
·
Published
2026-06-17
·
Updated
2026-08-05
CVSS v4.0
8.2
High
| Vector | AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
Name of the Vulnerable Software and Affected Versions
concurrent-ruby versions prior to 1.3.7
Description
The
Concurrent::AtomicReference#update function can enter a permanent busy retry loop when the current value is Float::NAN. This occurs due to the interaction between AtomicReference#update, which retries until compare and set(old value, new value) succeeds, and the numeric compare and set function, which checks if old == old value before attempting an atomic swap. Because Ruby NaN (Not a Number) semantics dictate that Float::NAN == Float::NAN is always false, the comparison fails every time, causing the function to repeatedly evaluate the caller's block without returning. In services storing externally derived numeric values in an AtomicReference, this can lead to CPU exhaustion or permanent request and job hangs.Recommendations
Update to version 1.3.7.
Exploit
Fix
DoS
Infinite Loop
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
Concurrent-Ruby