PT-2026-51091 · Rubygems · Concurrent-Ruby

CVE-2026-54905

·

Published

2026-06-19

·

Updated

2026-07-21

CVSS v3.1

5.5

Medium

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

AZL-91290
CLEANSTART-2026-DE16221
CLEANSTART-2026-UT74115
CVE-2026-54905
GHSA-WV3X-4VXV-WHPP

Affected Products

Concurrent-Ruby