<?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>Thu, 08 Oct 2026 04:26:57 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-55991 — Remote DNS-over-QUIC (DoQ) flow-control assertion failure in libngtcp2</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-55991</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; NLnet Labs Unbound&lt;/p&gt;
&lt;p&gt;In NLnet Labs Unbound 1.22.0 up to and including 1.25.1, a remote unauthenticated client can trigger a libngtcp2 assertion (if compiled with assertions on) and terminate the entire Unbound process using a single DNS-over-QUIC (DoQ) connection and one normal DNS query. This is caused by an erroneous error value passed to libngtcp2. When &amp;#39;ngtcp2_conn_writev_stream()&amp;#39; returns &amp;#39;NGTCP2_ERR_STREAM_DATA_BLOCKED&amp;#39;, Unbound continues to call &amp;#39;ngtcp2_ccerr_set_application_error()&amp;#39; with a &amp;#39;-1&amp;#39; error value. The &amp;#39;int&amp;#39; literal &amp;#39;-1&amp;#39; is implicitly converted to the function&amp;#39;s &amp;#39;uint64_t error_code&amp;#39; parameter as &amp;#39;0xFFFFFFFFFFFFFFFF&amp;#39;. The follow-on &amp;#39;ngtcp2_conn_write_connection_close()&amp;#39; serialises that value as a QUIC variable-length integer; because &amp;#39;2^64-1&amp;#39; exceeds the 62-bit varint ceiling, &amp;#39;ngtcp2_put_uvarintlen()&amp;#39; fails &amp;#39;assert(n &amp;lt; 4611686018427387904ULL)&amp;#39; and the whole resolver process aborts. A remote, unauthenticated DoQ client can trigger this deterministically with a single QUIC connection by advertising &amp;#39;initial_max_stream_data_bidi_local = 1&amp;#39; in its transport parameters and sending one DoQ query without ever reading the stream.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; NLnet Labs Unbound&lt;/p&gt;
&lt;p&gt;In NLnet Labs Unbound 1.22.0 up to and including 1.25.1, a remote unauthenticated client can trigger a libngtcp2 assertion (if compiled with assertions on) and terminate the entire Unbound process using a single DNS-over-QUIC (DoQ) connection and one normal DNS query. This is caused by an erroneous error value passed to libngtcp2. When &amp;#39;ngtcp2_conn_writev_stream()&amp;#39; returns &amp;#39;NGTCP2_ERR_STREAM_DATA_BLOCKED&amp;#39;, Unbound continues to call &amp;#39;ngtcp2_ccerr_set_application_error()&amp;#39; with a &amp;#39;-1&amp;#39; error value. The &amp;#39;int&amp;#39; literal &amp;#39;-1&amp;#39; is implicitly converted to the function&amp;#39;s &amp;#39;uint64_t error_code&amp;#39; parameter as &amp;#39;0xFFFFFFFFFFFFFFFF&amp;#39;. The follow-on &amp;#39;ngtcp2_conn_write_connection_close()&amp;#39; serialises that value as a QUIC variable-length integer; because &amp;#39;2^64-1&amp;#39; exceeds the 62-bit varint ceiling, &amp;#39;ngtcp2_put_uvarintlen()&amp;#39; fails &amp;#39;assert(n &amp;lt; 4611686018427387904ULL)&amp;#39; and the whole resolver process aborts. A remote, unauthenticated DoQ client can trigger this deterministically with a single QUIC connection by advertising &amp;#39;initial_max_stream_data_bidi_local = 1&amp;#39; in its transport parameters and sending one DoQ query without ever reading the stream.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-55991</guid>
    </item>
  </channel>
</rss>
