Executive brief
Unbound is a widely used DNS resolver that translates human-readable domain names into IP addresses. A vulnerability in its DNS-over-QUIC implementation allows a remote attacker to crash the entire service with a single specially crafted request. This results in a complete denial of service, preventing users and applications from resolving domain names until the service is manually restarted.
Technical details
A signed-to-unsigned conversion error (CWE-195) exists in Unbound's DNS-over-QUIC (DoQ) implementation when interacting with the libngtcp2 library. When 'ngtcp2_conn_writev_stream()' returns a 'DATA_BLOCKED' error, Unbound incorrectly passes a '-1' integer literal to 'ngtcp2_ccerr_set_application_error()', which is implicitly converted to a 64-bit unsigned integer (0xFFFFFFFFFFFFFFFF). During serialization as a QUIC variable-length integer, this value exceeds the 62-bit maximum, triggering an assertion failure in libngtcp2 and aborting the Unbound process. An unauthenticated remote attacker can trigger this deterministically by manipulating QUIC transport parameters and sending a single query. The issue is fixed in Unbound version 1.25.2.
Affected products
- NLnet Labs Unbound 1.22.0 to 1.25.1
Timeline
- 2026-07-22: advisory: NLnet Labs published the security advisory and released version 1.25.2.
- 2026-07-22: patched