concurrent-ruby: `AtomicReference#update` livelocks when the stored value is `Float::NAN`
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| ruby-concurrency | concurrent-ruby | affected |
|
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Ruby-concurrency | Concurrent-ruby |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-h8w8-99g7-qmvj | Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN` |
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.673% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| References |
|
| Type | Values Removed | Values Added |
|---|---|---|
| References |
| |
| Metrics |
threat_severity
|
cvssV3_1
|
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Ruby-concurrency
Ruby-concurrency concurrent-ruby |
|
| Vendors & Products |
Ruby-concurrency
Ruby-concurrency concurrent-ruby |
| Type | Values Removed | Values Added |
|---|---|---|
| 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. | |
| Title | concurrent-ruby: `AtomicReference#update` livelocks when the stored value is `Float::NAN` | |
| Weaknesses | CWE-835 | |
| References |
| |
| Metrics |
cvssV4_0
|