PT-2026-51091 · Rubygems · Concurrent-Ruby
CVE-2026-54905
·
Published
2026-06-19
·
Updated
2026-07-21
CVSS v3.1
5.5
Medium
| Vector | AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
Name of the Vulnerable Software and Affected Versions
concurrent-ruby versions prior to 1.3.7
Description
Concurrent::ReentrantReadWriteLock can incorrectly grant a write lock after a single thread acquires the read lock 32,768 times. The lock manages a thread's local read and write hold counts within a single integer, using the low 15 bits for the read hold count and bit 15 as
WRITE LOCK HELD. When the read acquisition count reaches 32,768, the count overflows into the write-lock bit. Consequently, the try write lock() function treats the thread as if it already holds a write lock and returns true without setting the global RUNNING WRITER bit. This failure breaks the mutual-exclusion guarantee, allowing a thread to believe it has exclusive write access while other threads continue to hold or acquire read locks, potentially leading to data races and inconsistent reads of protected mutable state.Recommendations
Update to version 1.3.7.
Exploit
Fix
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
Concurrent-Ruby