{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "cpe": "cpe:2.3:a:nlnetlabs:unbound:*:*:*:*:*:*:*:*",
            "extracted_events": [
              {
                "introduced": "1.22.0"
              },
              {
                "fixed": "1.26.1"
              }
            ],
            "source": "CPE_RANGE"
          },
          "events": [
            {
              "introduced": "0076736fc40298eb6252705e6e158462c6b24d06"
            },
            {
              "fixed": "13b6717f1716810523ffb60f971a6c9c5e8ce127"
            }
          ],
          "repo": "https://github.com/nlnetlabs/unbound",
          "type": "GIT"
        }
      ]
    }
  ],
  "database_specific": {},
  "details": "NLnet Labs Unbound 1.22.0 up to and including 1.26.1, has a use-after-free vulnerability when compiled for DNS-over-QUIC support with '--with-libngtcp2'. Each DoQ stream owns an output buffer that holds the DNS response. ngtcp2's retransmission buffer keeps a shallow pointer into the output buffer for as long as a STREAM frame may be resent. On a client RESET_STREAM, the output buffer is freed but ngtcp2 still holds the matching retransmission entries. The next PTO timeout makes ngtcp2 re-encode the STREAM frame and copy from the freed buffer. A malicious actor that can query Unbound over DoQ and that withholds ACKs, sends RESET_STREAM, and waits for PTO, reaches this use-after-free with no privilege. This leads to retransmissions against freed memory and eventually an abnormal server exit under a 20-query spray.",
  "id": "CVE-2026-78227",
  "modified": "2026-09-25T03:30:27.808217584Z",
  "published": "2026-09-16T09:17:05.987Z",
  "references": [
    {
      "type": "FIX",
      "url": "https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-78227.txt"
    }
  ],
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:L",
      "type": "CVSS_V3"
    }
  ]
}