Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

redhat логотип

CVE-2026-54904

Опубликовано: 24 июн. 2026
Источник: redhat
CVSS3: 5.9

Описание

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.

A flaw was found in concurrent-ruby. A remote attacker could exploit a vulnerability in the Concurrent::AtomicReference#update method, which can enter a permanent busy retry loop. This occurs when the current value is a special 'Not a Number' (Float::NAN) floating-point value, causing the method to repeatedly attempt an operation without success. This can lead to a Denial of Service (DoS), where the affected application experiences CPU exhaustion or becomes unresponsive.

Отчет

The issue arises when the AtomicReference#update method encounters a Float::NAN value, leading to an infinite retry loop and potential CPU exhaustion. The vulnerable AtomicReference#update method is not used with externally-controlled (e.g: Float::NAN) values - thus exploitation is not possible.

Меры по смягчению последствий

The vulnerable AtomicReference#update code path is not exercised with externally-derived numeric values, making exploitation not possible in this context. Updating to concurrent-ruby 1.3.7 when available in upstream dependencies will fully resolve this issue.

Затронутые пакеты

ПлатформаПакетСостояниеРекомендацияРелиз
Red Hat 3scale API Management Platform 23scale-amp21/backendNot affected
Red Hat 3scale API Management Platform 23scale-amp21/systemNot affected
Red Hat 3scale API Management Platform 23scale-amp21/zyncNot affected
Red Hat 3scale API Management Platform 23scale-amp22/backendNot affected
Red Hat 3scale API Management Platform 23scale-amp22/systemNot affected
Red Hat 3scale API Management Platform 23scale-amp22/zyncNot affected
Red Hat 3scale API Management Platform 23scale-amp26/toolboxNot affected
Red Hat 3scale API Management Platform 23scale-amp2/backend-rhel8Not affected
Red Hat 3scale API Management Platform 23scale-amp2/system-rhel7Not affected
Red Hat 3scale API Management Platform 23scale-amp2/system-rhel8Not affected

Показывать по

Дополнительная информация

Статус:

Moderate
Дефект:
CWE-835
https://bugzilla.redhat.com/show_bug.cgi?id=2492250concurrent-ruby: rubygem-concurrent-ruby: concurrent-ruby: Denial of Service due to infinite loop in AtomicReference#update

5.9 Medium

CVSS3

Связанные уязвимости

CVSS3: 7.5
ubuntu
около 1 месяца назад

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.

CVSS3: 7.5
nvd
около 1 месяца назад

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.

CVSS3: 7.5
debian
около 1 месяца назад

concurrent-ruby is a modern concurrency tools for Ruby. Prior to 1.3.7 ...

github
около 1 месяца назад

Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`

CVSS3: 7.5
fstec
около 2 месяцев назад

Уязвимость метода #update класса Concurrent::AtomicReference библиотеки для Ruby Concurrent Ruby, позволяющая нарушителю вызвать отказ в обслуживании

5.9 Medium

CVSS3