Skip to content
Heist/ feed
Back to feed
MediumFix available

unbound — security advisory

Type: advisorySources: OSVAdvisory ID: DEBIAN-CVE-2026-55991

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.

Products
unbound
Affected versions
1.17.1-2, 1.17.1-2+deb12u1, 1.17.1-2+deb12u2, 1.17.1-2+deb12u3, 1.17.1-2+deb12u4, 1.17.1-2+loong64, 1.18.0-1, 1.18.0-2, 1.19.1-1, 1.19.2-1, 1.20.0-1, 1.21.1-1, 1.22.0-1, 1.22.0-2, 1.22.0-2+deb13u1, 1.22.0-2+deb13u2, 1.22.0-2+deb13u3, 1.23.1-1, 1.24.0-1, 1.24.0-2, 1.24.1-1, 1.24.1-2, 1.24.2-1, 1.25.0-1, 1.25.1-1, 1.25.2-1, 1.26.0-1, 1.26.0-2, 1.26.1-1, 1.26.2-1
Fixed versions
1.25.2-1, 1.26.1-0+deb13u1
CVEs
CVE-2026-55991
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 09:57 UTC · Revision 2

Source evidence

DEBIAN-CVE-2026-55991

core-osv · Original source

Published 22 Jul 2026, 14:17 UTC

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.

osv:DEBIAN-CVE-2026-55991

unbound

Fixed versions: Not specified

unbound

Fixed versions: 1.26.1-0+deb13u1

unbound

Fixed versions: 1.25.2-1

Complete source record
{
  "id": "3ee2a41658cb3b09ee7bca6747a5ef8a2fdbff60da8cddd6a97820238bb781aa",
  "url": "https://osv.dev/vulnerability/DEBIAN-CVE-2026-55991",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "DEBIAN-CVE-2026-55991",
    "summary": "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.",
    "evidence": "osv:DEBIAN-CVE-2026-55991",
    "products": [
      {
        "name": {
          "value": "unbound",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "1.17.1-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.17.1-2+deb12u1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.17.1-2+deb12u2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.17.1-2+deb12u3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.17.1-2+deb12u4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.17.1-2+loong64",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.18.0-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.18.0-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.19.1-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.19.2-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.20.0-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.21.1-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.22.0-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.22.0-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.23.1-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.24.0-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.24.0-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.24.1-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.24.1-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.24.2-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.25.0-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.25.1-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.25.2-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.26.0-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.26.0-2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.26.1-1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.26.2-1",
            "evidence": "/affected/0/versions"
          }
        ]
      },
      {
        "name": {
          "value": "unbound",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "1.26.1-0+deb13u1",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "1.22.0-2",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.22.0-2+deb13u1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.22.0-2+deb13u2",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.22.0-2+deb13u3",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.23.1-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.24.0-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.24.0-2",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.24.1-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.24.1-2",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.24.2-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.25.0-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.25.1-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.25.2-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.26.0-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "1.26.0-2",
            "evidence": "/affected/1/versions"
          }
        ]
      },
      {
        "name": {
          "value": "unbound",
          "evidence": "/affected/2/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "1.25.2-1",
            "evidence": "/affected/2/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "1.22.0-2",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.23.1-1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.24.0-1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.24.0-2",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.24.1-1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.24.1-2",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.24.2-1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.25.0-1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "1.25.1-1",
            "evidence": "/affected/2/versions"
          }
        ]
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "DEBIAN-CVE-2026-55991",
      "aliases": [
        "DEBIAN-CVE-2026-55991"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "unbound",
            "purl": "pkg:deb/debian/unbound?arch=source&distro=bookworm",
            "ecosystem": "Debian:12"
          },
          "versions": [
            "1.17.1-2",
            "1.17.1-2+deb12u1",
            "1.17.1-2+deb12u2",
            "1.17.1-2+deb12u3",
            "1.17.1-2+deb12u4",
            "1.17.1-2+loong64",
            "1.18.0-1",
            "1.18.0-2",
            "1.19.1-1",
            "1.19.2-1",
            "1.20.0-1",
            "1.21.1-1",
            "1.22.0-1",
            "1.22.0-2",
            "1.23.1-1",
            "1.24.0-1",
            "1.24.0-2",
            "1.24.1-1",
            "1.24.1-2",
            "1.24.2-1",
            "1.25.0-1",
            "1.25.1-1",
            "1.25.2-1",
            "1.26.0-1",
            "1.26.0-2",
            "1.26.1-1",
            "1.26.2-1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-55991.json"
          },
          "ecosystem_specific": {
            "urgency": "not yet assigned"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "1.26.1-0+deb13u1"
                }
              ]
            }
          ],
          "package": {
            "name": "unbound",
            "purl": "pkg:deb/debian/unbound?arch=source&distro=trixie",
            "ecosystem": "Debian:13"
          },
          "versions": [
            "1.22.0-2",
            "1.22.0-2+deb13u1",
            "1.22.0-2+deb13u2",
            "1.22.0-2+deb13u3",
            "1.23.1-1",
            "1.24.0-1",
            "1.24.0-2",
            "1.24.1-1",
            "1.24.1-2",
            "1.24.2-1",
            "1.25.0-1",
            "1.25.1-1",
            "1.25.2-1",
            "1.26.0-1",
            "1.26.0-2"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-55991.json"
          },
          "ecosystem_specific": {
            "urgency": "not yet assigned"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "1.25.2-1"
                }
              ]
            }
          ],
          "package": {
            "name": "unbound",
            "purl": "pkg:deb/debian/unbound?arch=source&distro=forky",
            "ecosystem": "Debian:14"
          },
          "versions": [
            "1.22.0-2",
            "1.23.1-1",
            "1.24.0-1",
            "1.24.0-2",
            "1.24.1-1",
            "1.24.1-2",
            "1.24.2-1",
            "1.25.0-1",
            "1.25.1-1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-55991.json"
          },
          "ecosystem_specific": {
            "urgency": "not yet assigned"
          }
        }
      ],
      "modified": "2026-10-25T10:00:57.992591470Z",
      "provider": "osv",
      "upstream": [
        "CVE-2026-55991"
      ],
      "references": [
        "https://security-tracker.debian.org/tracker/CVE-2026-55991"
      ]
    },
    "related_cves": [
      {
        "value": "CVE-2026-55991",
        "evidence": "/upstream"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 445386,
  "published_at": "2026-07-22T14:17:21.957+00:00"
}