concurrent-ruby
Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more. Inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency patterns.
Activity
- Latest release
- 1mo ago
- Total releases
- 79
- Cadence
- ~33 days
- Last 12 months
- 3
Reach
- Stars
- —
Details
- License
- MIT
- First release
- Jul 23, 2013
| Version | Released | |
|---|---|---|
1.3.8
patch
| ||
1.3.7
patch
| ||
1.3.6
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.3.5
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.3.4
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.3.3
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.3.2
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.3.1
minor
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.3.1.pre
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.2.3
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.2.2
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.2.1
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.2.0
minor
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.10
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.9
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.8
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.7
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.6
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.6.pre1
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.5
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.4
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.3
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.2
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.1
minor
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.0.pre2
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.1.0.pre1
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.5
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.4
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.3
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.3.pre3
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.2
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.1
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.0
major
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.9.2
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.0.pre5
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.0.pre4
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.0.pre3
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.0.pre2
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
1.0.0.pre1
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.9.1
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.9.0
minor
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.9.0.pre3
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.9.0.pre2
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.8.0
minor
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.7.2
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.8.0.pre2
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.8.0.pre1
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.7.1
patch
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.7.0
minor
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
0.7.0.rc2
pre
3 CVEs
CVE-2026-54906
GHSA-6wx8-w4f5-wwcr
Jun 19, 2026
Concurrent Ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Low
Local
High
None
None
Summary
This is a synchronization correctness issue in the public VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
Because ownership is not checked, a different thread can clear the
On a fresh lock, this changes the counter from ReproduceFrom the root of a
Expected result:
Log evidenceLocal reproduction output:
ImpactThis can break the write-lock mutual exclusion guarantee and can also leave a lock unusable after a stray read release.
The impact is local to applications that expose or misuse the manual CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54905
GHSA-wv3x-4vxv-whpp
Jun 19, 2026
Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
Low
Local
Low
Low
None
Summary
The lock stores a thread's local read and write hold counts in one integer. The low 15 bits are used for the read hold count, and bit 15 is used as This breaks the core mutual-exclusion guarantee: the caller is told it has a write lock, but other threads can still hold or acquire read locks at the same time. VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab DetailsThe implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:
When a thread already holds a lock,
After 32,768 read acquisitions, the per-thread held count becomes
This branch does not set the global PoC
Log evidence
ImpactThis breaks the write-lock exclusivity guarantee. After the overflow, a thread can be told it has acquired the write lock while other threads can still hold or acquire read locks, allowing races and inconsistent reads of protected mutable state. CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-54904
GHSA-h8w8-99g7-qmvj
Jun 19, 2026
Concurrent Ruby : `AtomicReference#update` livelocks when the stored value is `Float::NAN`
High
Network
Low
None
None
Summary
The issue is caused by the interaction between:
As a result, once an VersionSoftware: concurrent-ruby Version: 1.3.6 Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab Details
For numeric expected values,
When the stored value is This is reachable through the public PoC
Log evidence
ImpactThis is an application-level denial of service issue. If an application stores externally derived numeric data in a CreditPranjali Thakur - depthfirst (depthfirst.com) Affected versions
0.0.1
0.1.0
0.1.1
0.1.1.pre.1
0.1.1.pre.2
0.1.1.pre.3
0.1.1.pre.4
0.1.1.pre.5
0.2.0
0.2.1
0.2.2
0.3.0
+ 65 more Show less
0.3.0.pre.1
0.3.0.pre.2
0.3.0.pre.3
0.3.1
0.3.1.pre.1
0.3.1.pre.2
0.3.2
0.4.0
0.4.1
0.5.0
0.5.0.pre.1
0.6.0
0.6.0.pre.1
0.6.0.pre.2
0.6.1
0.7.0
0.7.0.rc0
0.7.0.rc1
0.7.0.rc2
0.7.1
0.7.2
0.8.0
0.8.0.pre1
0.8.0.pre2
0.9.0
0.9.0.pre2
0.9.0.pre3
0.9.1
0.9.2
1.0.0
1.0.0.pre1
1.0.0.pre2
1.0.0.pre3
1.0.0.pre4
1.0.0.pre5
1.0.1
1.0.2
1.0.3
1.0.3.pre3
1.0.4
1.0.5
1.1.0.pre1
1.1.0.pre2
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.6.pre1
1.1.7
1.1.8
1.1.9
1.2.0
1.2.1
1.2.2
1.2.3
1.3.1
1.3.1.pre
1.3.2
1.3.3
1.3.4
1.3.5
1.3.6
Fixed in
1.3.7
References
Updated Sep 10, 2026 · Source: OSV.dev |