CVE-2026-78227

Name
CVE-2026-78227
Description
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.
NVD Severity
unknown
Other trackers
Mailing lists
Exploits
Forges
GitHub (code, issues), Aports (code, issues)

References

Type URI
Patch https://www.nlnetlabs.nl/downloads/unbound/CVE-2026-78227.txt

Match rules

CPE URI Source package Min version Max version
cpe:2.3:a:nlnetlabs:unbound:*:*:*:*:*:*:*:* unbound >= 1.22.0 < 1.26.1

Vulnerable and fixed packages

Source package Branch Version Maintainer Status
unbound edge-main 1.26.0-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.25.2-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.25.1-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.25.0-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.24.2-r1 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.24.2-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.24.1-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.24.0-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.23.1-r1 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.23.1-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.23.0-r2 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.23.0-r1 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.23.0-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound edge-main 1.22.0-r0 Jakub Jirutka <jakub@jirutka.cz> fixed
unbound 3.24-main 1.25.2-r2 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.24-main 1.25.2-r1 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.24-main 1.25.2-r0 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.24-main 1.25.1-r0 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.23-main 1.25.2-r1 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.23-main 1.25.2-r0 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.23-main 1.24.2-r0 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.22-main 1.25.2-r1 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.22-main 1.25.2-r0 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.22-main 1.23.1-r1 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.22-main 1.23.1-r0 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.22-main 1.23.0-r2 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.21-main 1.22.0-r1 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable
unbound 3.21-main 1.22.0-r0 Jakub Jirutka <jakub@jirutka.cz> possibly vulnerable