CVE-2026-54904: CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop') in ruby-concurrency concurrent-ruby
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.
AI Analysis
Technical Summary
The vulnerability arises from the interaction between Concurrent::AtomicReference#update, which retries until compare_and_set succeeds, and Ruby's Float::NAN comparison behavior where Float::NAN == Float::NAN always returns false. When an AtomicReference contains Float::NAN, the update method enters a permanent busy retry loop, repeatedly evaluating the caller's block without returning. This can lead to CPU exhaustion or indefinite request/job hangs in services that store external numeric values in AtomicReference. The flaw is addressed in concurrent-ruby version 1.3.7.
Potential Impact
Applications using concurrent-ruby versions prior to 1.3.7 that store externally derived numeric values in AtomicReference may experience CPU exhaustion or permanent hangs due to infinite loops triggered by Float::NAN values. This can degrade service availability and performance, potentially causing denial of service conditions.
Mitigation Recommendations
Upgrade concurrent-ruby to version 1.3.7 or later, where this infinite loop issue is fixed. No other mitigations are indicated by the vendor advisory. Patch status is confirmed fixed in 1.3.7.
CVE-2026-54904: CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop') in ruby-concurrency concurrent-ruby
Description
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.
CVSS v4.0
Score 8.2high
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability arises from the interaction between Concurrent::AtomicReference#update, which retries until compare_and_set succeeds, and Ruby's Float::NAN comparison behavior where Float::NAN == Float::NAN always returns false. When an AtomicReference contains Float::NAN, the update method enters a permanent busy retry loop, repeatedly evaluating the caller's block without returning. This can lead to CPU exhaustion or indefinite request/job hangs in services that store external numeric values in AtomicReference. The flaw is addressed in concurrent-ruby version 1.3.7.
Potential Impact
Applications using concurrent-ruby versions prior to 1.3.7 that store externally derived numeric values in AtomicReference may experience CPU exhaustion or permanent hangs due to infinite loops triggered by Float::NAN values. This can degrade service availability and performance, potentially causing denial of service conditions.
Mitigation Recommendations
Upgrade concurrent-ruby to version 1.3.7 or later, where this infinite loop issue is fixed. No other mitigations are indicated by the vendor advisory. Patch status is confirmed fixed in 1.3.7.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2026-06-16T13:49:33.556Z
- Cvss Version
- 4.0
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a3c04afeed863c81e18d766
Added to database: 06/24/2026, 16:24:15 UTC
Last enriched: 08/06/2026, 13:25:55 UTC
Last updated: 08/07/2026, 13:54:35 UTC
Views: 82
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.