CVE Intelligence

Vulnerabilidades do Rubyconcurrency Concurrent Ruby

🔔 Criar alerta RSS Verificador de versão

CVEs publicadas que afetam Rubyconcurrency Concurrent Ruby: 3 registro(s), com versões afetadas e correções.
cpe:2.3:a:rubyconcurrency:concurrent_ruby

CVE-2026-54906 Crítica · 9.8 CWE-414 24/06/2026
concurrent-ruby ReadWriteLock: liberação de bloqueio de escrita sem verificação de posse
concurrent-ruby é uma ferramenta moderna de concorrência para Ruby. Antes da versão 1.3.7, Concurrent::ReadWriteLock#release_write_lock não verifica se a thread que chama adquiriu o bloqueio de escrita. Qualquer thread com acesso ao objeto de bloqueio pode liberar um bloqueio de escrita ativo mantido por outra thread. Um segundo escritor pode então entrar em sua seção crítica enquanto o primeiro escritor ainda está em execução. Concurrent::ReadWriteLock#release_read_lock também decrementa o contador compartilhado mesmo quando nenhum bloqueio de leitura é mantido. Chamá-lo em um bloqueio novo altera o contador de 0 para -1, após o que a aquisição normal de leitura lança Concurrent::ResourceLimitError. Esta é uma questão de correção de sincronização na API pública Concurrent::ReadWriteLock. Esta vulnerabilidade está corrigida na versão 1.3.7.
CVE-2026-54905 Média · 5.5 CWE-128 24/06/2026
concurrent-ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity
concurrent-ruby is a modern concurrency tools for Ruby. Prior to 1.3.7, Concurrent::ReentrantReadWriteLock can incorrectly grant a write lock after one thread acquires the read lock 32,768 times. 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 WRITE_LOCK_HELD. After 32,768 reentrant read acquisitions, the local read count crosses into the write-lock bit. try_write_lock then treats the thread as already holding a write lock and returns true without setting the global RUNNING_WRITER bit. 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. This vulnerability is fixed in 1.3.7.
CVE-2026-54904 Alta · 7.5 CWE-835 24/06/2026
concurrent-ruby: `AtomicReference#update` livelocks when the stored value is `Float::NAN`
concurrent-ruby is a modern concurrency tools for Ruby. Prior to 1.3.7, Concurrent::AtomicReference#update can enter a permanent busy retry loop when the current value is Float::NAN. The issue is caused by the interaction between AtomicReference#update, which retries until compare_and_set(old_value, new_value) succeeds; Numeric compare_and_set, which checks old == old_value before attempting the underlying atomic swap.; and Ruby NaN semantics, where Float::NAN == Float::NAN is always false. As a result, once an AtomicReference contains Float::NAN, calling #update repeatedly evaluates the caller's block and never returns. In services that store externally derived numeric values in an AtomicReference, this can cause CPU exhaustion or permanent request/job hangs. This vulnerability is fixed in 1.3.7.