CVE-2026-55991: CWE-195: Signed to Unsigned Conversion Error in NLnet Labs Unbound
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 'ngtcp2_conn_writev_stream()' returns 'NGTCP2_ERR_STREAM_DATA_BLOCKED', Unbound continues to call 'ngtcp2_ccerr_set_application_error()' with a '-1' error value. The 'int' literal '-1' is implicitly converted to the function's 'uint64_t error_code' parameter as '0xFFFFFFFFFFFFFFFF'. The follow-on 'ngtcp2_conn_write_connection_close()' serialises that value as a QUIC variable-length integer; because '2^64-1' exceeds the 62-bit varint ceiling, 'ngtcp2_put_uvarintlen()' fails 'assert(n < 4611686018427387904ULL)' and the whole resolver process aborts. A remote, unauthenticated DoQ client can trigger this deterministically with a single QUIC connection by advertising 'initial_max_stream_data_bidi_local = 1' in its transport parameters and sending one DoQ query without ever reading the stream.
AI Analysis
Technical Summary
CVE-2026-55991 is a signed to unsigned conversion error in NLnet Labs Unbound DNS resolver versions 1.22.0 through 1.25.1. When compiled with assertions enabled, a remote unauthenticated DNS-over-QUIC client can trigger a libngtcp2 assertion failure and terminate the Unbound process. The vulnerability arises because when 'ngtcp2_conn_writev_stream()' returns 'NGTCP2_ERR_STREAM_DATA_BLOCKED', Unbound incorrectly calls 'ngtcp2_ccerr_set_application_error()' with a signed '-1' error code, which is implicitly converted to an unsigned 64-bit integer with a value exceeding the maximum allowed for QUIC variable-length integers. This causes an assertion failure in 'ngtcp2_put_uvarintlen()', aborting the resolver. The attack is deterministic and requires only a single QUIC connection and one DNS query with specific transport parameters.
Potential Impact
The vulnerability allows a remote unauthenticated attacker to cause a denial of service by terminating the Unbound DNS resolver process. There is no impact on confidentiality or integrity, but availability is affected due to process abort triggered by a crafted DNS-over-QUIC query.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, consider disabling DNS-over-QUIC support or compiling Unbound without assertions enabled to prevent process termination. Monitor vendor communications for official patches or updates.
CVE-2026-55991: CWE-195: Signed to Unsigned Conversion Error in NLnet Labs Unbound
Description
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 'ngtcp2_conn_writev_stream()' returns 'NGTCP2_ERR_STREAM_DATA_BLOCKED', Unbound continues to call 'ngtcp2_ccerr_set_application_error()' with a '-1' error value. The 'int' literal '-1' is implicitly converted to the function's 'uint64_t error_code' parameter as '0xFFFFFFFFFFFFFFFF'. The follow-on 'ngtcp2_conn_write_connection_close()' serialises that value as a QUIC variable-length integer; because '2^64-1' exceeds the 62-bit varint ceiling, 'ngtcp2_put_uvarintlen()' fails 'assert(n < 4611686018427387904ULL)' and the whole resolver process aborts. A remote, unauthenticated DoQ client can trigger this deterministically with a single QUIC connection by advertising 'initial_max_stream_data_bidi_local = 1' in its transport parameters and sending one DoQ query without ever reading the stream.
CVSS v3.1
Score 5.9medium
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
CVE-2026-55991 is a signed to unsigned conversion error in NLnet Labs Unbound DNS resolver versions 1.22.0 through 1.25.1. When compiled with assertions enabled, a remote unauthenticated DNS-over-QUIC client can trigger a libngtcp2 assertion failure and terminate the Unbound process. The vulnerability arises because when 'ngtcp2_conn_writev_stream()' returns 'NGTCP2_ERR_STREAM_DATA_BLOCKED', Unbound incorrectly calls 'ngtcp2_ccerr_set_application_error()' with a signed '-1' error code, which is implicitly converted to an unsigned 64-bit integer with a value exceeding the maximum allowed for QUIC variable-length integers. This causes an assertion failure in 'ngtcp2_put_uvarintlen()', aborting the resolver. The attack is deterministic and requires only a single QUIC connection and one DNS query with specific transport parameters.
Potential Impact
The vulnerability allows a remote unauthenticated attacker to cause a denial of service by terminating the Unbound DNS resolver process. There is no impact on confidentiality or integrity, but availability is affected due to process abort triggered by a crafted DNS-over-QUIC query.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, consider disabling DNS-over-QUIC support or compiling Unbound without assertions enabled to prevent process termination. Monitor vendor communications for official patches or updates.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- NLnet Labs
- Date Reserved
- 2026-06-22T10:11:10.505Z
- Cvss Version
- 3.1
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a60c4249c2644c7f80e9266
Added to database: 07/22/2026, 13:22:44 UTC
Last enriched: 07/22/2026, 13:38:16 UTC
Last updated: 07/22/2026, 23:13:27 UTC
Views: 11
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
External Links
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.