concurrent-ruby: ReadWriteLock allows wrong-thread write release and stray read-release counter corruption
Key facts
- Attack vector
- Local
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Attack requirements
- None
- Impact type
- —
- Confidentiality · integrity · availability
- None · Low · Low
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub.
Summary
concurrent-ruby is a modern concurrency tools for Ruby. Prior to 1.3.7, Concurrent::ReadWriteLock#release_write_lock does not verify that the calling thread acquired the write lock. Any thread with access to the lock object can release an active write lock held by another thread. A second writer can then enter its critical section while the first writer is still running. Concurrent::ReadWriteLock#release_read_lock also decrements the shared counter even when no read lock is held. Calling it on a fresh lock changes the counter from 0 to -1, after which normal read acquisition raises Concurrent::ResourceLimitError. This is a synchronization correctness issue in the public Concurrent::ReadWriteLock API. This vulnerability is fixed in 1.3.7.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| ruby-concurrency | concurrent-ruby | before 1.3.7 | 1.3.7 | Patch available | CNA |
| — | concurrent-ruby (RubyGems) | before 1.3.7 | 1.3.7 | Patch available | GHSA-6wx8-w4f5-wwcr |
- concurrent-ruby Vendorruby-concurrency Affected before 1.3.7 Fixed in 1.3.7 Patch available CNA
- concurrent-ruby (RubyGems) Vendor— Affected before 1.3.7 Fixed in 1.3.7 Patch available GHSA-6wx8-w4f5-wwcr
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:rubyconcurrency:concurrent_ruby:*:*:*:*:*:ruby:*:* | before 1.3.7 | Vulnerable | ruby-concurrency |
- cpe:2.3:a:rubyconcurrency:concurrent_ruby:*:*:*:*:*:ruby:*:* Versions before 1.3.7 Vulnerable ·ruby-concurrency
Remediation
- Fix · CNA concurrent-ruby (ruby-concurrency) Fixed in 1.3.7
- Fix · GHSA-6wx8-w4f5-wwcr concurrent-ruby (RubyGems) Fixed in 1.3.7 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Low. Red Hat's page for this CVE →
Not affected: 3 products
- Red Hat 3scale API Management Platform 2
- Red Hat OpenStack Platform 17.1
- Red Hat Satellite 6
Timeline
- 2026-10-02 Threatist record created from CVE-2026-54906
- 2026-10-03 Alias added: GHSA-6wx8-w4f5-wwcr
References
More ruby-concurrency Concurrent Ruby vulnerabilities
- TI-2026-39676 concurrent-ruby: `AtomicReference#update` livelocks when the stored value is `Float::NAN` CVSS 4.0HIGH 8.2
- TI-2026-39677 concurrent-ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity CVSS 4.0LOW 2.0
Sources
- CVE-2026-54906 · CVE Program
- CVE-2026-54906 · NVD
- FIRST EPSS
- GHSA-6wx8-w4f5-wwcr · GitHub Advisory Database · CC BY 4.0
- CVE-2026-54906 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences