PT-2026-51090 · Rubygems · Concurrent-Ruby

CVE-2026-54904

·

Published

2026-06-17

·

Updated

2026-08-05

CVSS v4.0

8.2

High

VectorAV: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

BDU:2026-10083
CLEANSTART-2026-DE16221
CLEANSTART-2026-UT74115
CVE-2026-54904
GHSA-H8W8-99G7-QMVJ

Affected Products

Concurrent-Ruby