<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sat, 03 Oct 2026 13:25:51 +0000</lastBuildDate>
    <item>
      <title>BREW-asciidoctor-CVE-2026-54905 — Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity</title>
      <link>https://cve.radiocsirt.org/vuln/brew-asciidoctor-cve-2026-54905</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: asciidoctor&lt;/p&gt;
&lt;p&gt;### Summary
`Concurrent::ReentrantReadWriteLock` can incorrectly grant a write lock after one thread acquires the read lock 32,768 times.&lt;/p&gt;
&lt;p&gt;The lock stores a thread&amp;#39;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Version
Software: concurrent-ruby
Version: 1.3.6
Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:&lt;/p&gt;
&lt;p&gt;```ruby
READER_BITS    = 15
WRITER_BITS    = 14&lt;/p&gt;
&lt;p&gt;WAITING_WRITER = 1 &amp;lt;&amp;lt; READER_BITS
RUNNING_WRITER = 1 &amp;lt;&amp;lt; (READER_BITS + WRITER_BITS)
MAX_READERS    = WAITING_WRITER - 1
MAX_WRITERS    = RUNNING_WRITER - MAX_READERS - 1&lt;/p&gt;
&lt;p&gt;WRITE_LOCK_HELD = 1 &amp;lt;&amp;lt; READER_BITS
READ_LOCK_MASK  = WRITE_LOCK_HELD - 1
WRITE_LOCK_MASK = MAX_WRITERS
```&lt;/p&gt;
&lt;p&gt;When a thread already holds a lock, `acquire_read_lock` increments `@HeldCount`:&lt;/p&gt;
&lt;p&gt;```ruby
if (held = @HeldCount.value) &amp;gt; 0
  if held &amp;amp; READ_LOCK_MASK == 0
    @Counter.update { |c| c + 1 }
  end
  @HeldCount.value = held…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: asciidoctor&lt;/p&gt;
&lt;p&gt;### Summary
`Concurrent::ReentrantReadWriteLock` can incorrectly grant a write lock after one thread acquires the read lock 32,768 times.&lt;/p&gt;
&lt;p&gt;The lock stores a thread&amp;#39;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Version
Software: concurrent-ruby
Version: 1.3.6
Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:&lt;/p&gt;
&lt;p&gt;```ruby
READER_BITS    = 15
WRITER_BITS    = 14&lt;/p&gt;
&lt;p&gt;WAITING_WRITER = 1 &amp;lt;&amp;lt; READER_BITS
RUNNING_WRITER = 1 &amp;lt;&amp;lt; (READER_BITS + WRITER_BITS)
MAX_READERS    = WAITING_WRITER - 1
MAX_WRITERS    = RUNNING_WRITER - MAX_READERS - 1&lt;/p&gt;
&lt;p&gt;WRITE_LOCK_HELD = 1 &amp;lt;&amp;lt; READER_BITS
READ_LOCK_MASK  = WRITE_LOCK_HELD - 1
WRITE_LOCK_MASK = MAX_WRITERS
```&lt;/p&gt;
&lt;p&gt;When a thread already holds a lock, `acquire_read_lock` increments `@HeldCount`:&lt;/p&gt;
&lt;p&gt;```ruby
if (held = @HeldCount.value) &amp;gt; 0
  if held &amp;amp; READ_LOCK_MASK == 0
    @Counter.update { |c| c + 1 }
  end
  @HeldCount.value = held…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/brew-asciidoctor-cve-2026-54905</guid>
    </item>
    <item>
      <title>certfr-2026-avi-0958 — De multiples vulnérabilités ont été découvertes dans les produits IBM. Certaines d'entre elles permettent à un attaquan…</title>
      <link>https://cve.radiocsirt.org/vuln/certfr-2026-avi-0958</link>
      <description>certfr-2026-avi-0958</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/certfr-2026-avi-0958</guid>
    </item>
    <item>
      <title>CLEANSTART-2026-CH23308 — Security fix for CVE-2026-54905 applied in: logstash-fips 9.4.3-r1, ruby-fluentd-1.18 1.18.0-r4, ruby-fluentd-1.19 1.19…</title>
      <link>https://cve.radiocsirt.org/vuln/cleanstart-2026-ch23308</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; CleanStart: logstash-fips, CleanStart: ruby-fluentd-1.18, CleanStart: ruby-fluentd-1.19&lt;/p&gt;
&lt;p&gt;CVE-2026-54905 affects multiple packages. This issue is resolved in later releases. See references for individual vulnerability details.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; CleanStart: logstash-fips, CleanStart: ruby-fluentd-1.18, CleanStart: ruby-fluentd-1.19&lt;/p&gt;
&lt;p&gt;CVE-2026-54905 affects multiple packages. This issue is resolved in later releases. See references for individual vulnerability details.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cleanstart-2026-ch23308</guid>
    </item>
    <item>
      <title>EUVD-2026-330001</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-330001</link>
      <description>EUVD-2026-330001</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-330001</guid>
    </item>
    <item>
      <title>fkie_cve-2026-54905</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-54905</link>
      <description>&lt;p&gt;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&amp;#39;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;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&amp;#39;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-54905</guid>
    </item>
    <item>
      <title>GHSA-wv3x-4vxv-whpp — Concurrent Ruby: `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-wv3x-4vxv-whpp</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; RubyGems: concurrent-ruby&lt;/p&gt;
&lt;p&gt;### Summary
`Concurrent::ReentrantReadWriteLock` can incorrectly grant a write lock after one thread acquires the read lock 32,768 times.&lt;/p&gt;
&lt;p&gt;The lock stores a thread&amp;#39;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Version
Software: concurrent-ruby
Version: 1.3.6
Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:&lt;/p&gt;
&lt;p&gt;```ruby
READER_BITS    = 15
WRITER_BITS    = 14&lt;/p&gt;
&lt;p&gt;WAITING_WRITER = 1 &amp;lt;&amp;lt; READER_BITS
RUNNING_WRITER = 1 &amp;lt;&amp;lt; (READER_BITS + WRITER_BITS)
MAX_READERS    = WAITING_WRITER - 1
MAX_WRITERS    = RUNNING_WRITER - MAX_READERS - 1&lt;/p&gt;
&lt;p&gt;WRITE_LOCK_HELD = 1 &amp;lt;&amp;lt; READER_BITS
READ_LOCK_MASK  = WRITE_LOCK_HELD - 1
WRITE_LOCK_MASK = MAX_WRITERS
```&lt;/p&gt;
&lt;p&gt;When a thread already holds a lock, `acquire_read_lock` increments `@HeldCount`:&lt;/p&gt;
&lt;p&gt;```ruby
if (held = @HeldCount.value) &amp;gt; 0
  if held &amp;amp; READ_LOCK_MASK == 0
    @Counter.update { |c| c + 1 }
  end
  @HeldCount.value = held…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; RubyGems: concurrent-ruby&lt;/p&gt;
&lt;p&gt;### Summary
`Concurrent::ReentrantReadWriteLock` can incorrectly grant a write lock after one thread acquires the read lock 32,768 times.&lt;/p&gt;
&lt;p&gt;The lock stores a thread&amp;#39;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Version
Software: concurrent-ruby
Version: 1.3.6
Commit: 7a1b78941c081106c20a9ca0144ac73a48d254ab&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The implementation uses a shared counter to track global readers/writers and a per-thread local counter to support reentrancy:&lt;/p&gt;
&lt;p&gt;```ruby
READER_BITS    = 15
WRITER_BITS    = 14&lt;/p&gt;
&lt;p&gt;WAITING_WRITER = 1 &amp;lt;&amp;lt; READER_BITS
RUNNING_WRITER = 1 &amp;lt;&amp;lt; (READER_BITS + WRITER_BITS)
MAX_READERS    = WAITING_WRITER - 1
MAX_WRITERS    = RUNNING_WRITER - MAX_READERS - 1&lt;/p&gt;
&lt;p&gt;WRITE_LOCK_HELD = 1 &amp;lt;&amp;lt; READER_BITS
READ_LOCK_MASK  = WRITE_LOCK_HELD - 1
WRITE_LOCK_MASK = MAX_WRITERS
```&lt;/p&gt;
&lt;p&gt;When a thread already holds a lock, `acquire_read_lock` increments `@HeldCount`:&lt;/p&gt;
&lt;p&gt;```ruby
if (held = @HeldCount.value) &amp;gt; 0
  if held &amp;amp; READ_LOCK_MASK == 0
    @Counter.update { |c| c + 1 }
  end
  @HeldCount.value = held…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-wv3x-4vxv-whpp</guid>
    </item>
    <item>
      <title>msrc_CVE-2026-54905 — concurrent-ruby:  `ReentrantReadWriteLock` read-count overflow grants a write lock without exclusivity</title>
      <link>https://cve.radiocsirt.org/vuln/msrc_cve-2026-54905</link>
      <description>msrc_CVE-2026-54905</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/msrc_cve-2026-54905</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-54905</title>
      <link>https://cve.radiocsirt.org/vuln/ubuntu-cve-2026-54905</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:16.04:LTS: ruby-concurrent, Ubuntu:18.04:LTS: ruby-concurrent, Ubuntu:20.04:LTS: ruby-concurrent, Ubuntu:22.04:LTS: ruby-concurrent, Ubuntu:24.04:LTS: ruby-concurrent, Ubuntu:25.10: ruby-concurrent, Ubuntu:26.04:LTS: ruby-concurrent&lt;/p&gt;
&lt;p&gt;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&amp;#39;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:16.04:LTS: ruby-concurrent, Ubuntu:18.04:LTS: ruby-concurrent, Ubuntu:20.04:LTS: ruby-concurrent, Ubuntu:22.04:LTS: ruby-concurrent, Ubuntu:24.04:LTS: ruby-concurrent, Ubuntu:25.10: ruby-concurrent, Ubuntu:26.04:LTS: ruby-concurrent&lt;/p&gt;
&lt;p&gt;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&amp;#39;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ubuntu-cve-2026-54905</guid>
    </item>
  </channel>
</rss>
