| 1.1.1.3 |
| 16-Jan-2026 |
christos | Import unbound 1.24.2 (previous was 1.23.1)
Unbound 1.24.2 Latest This security release has additional fixes for CVE-2025-11411.
Promiscuous NS RRSets that complement DNS replies in the authority section can be used to trick resolvers to update their delegation information for the zone.
The CVE is described here https://nlnetlabs.nl/downloads/unbound/CVE-2025-11411.txt
Unbound 1.24.1 included a fix that scrubs unsolicited NS RRSets (and their respective address records) from replies mitigating the possible poison effect.
Unbound 1.24.2 includes an additional fix that scrubs unsolicited NS RRSets (and their respective address records) from YXDOMAIN and non-referral nodata replies as well, mitigating the possible poison effect.
We would like to thank TaoFei Guo from Peking University, Yang Luo and JianJun Chen from Tsinghua University for discovering and responsibly disclosing the partial mitigation of CVE-2025-11411 in Unbound 1.24.1.
Bug Fixes:
Additional fix for CVE-2025-11411 (possible domain hijacking attack), to include YXDOMAIN and non-referral nodata answers in the mitigation as well, reported by TaoFei Guo from Peking University, Yang Luo and JianJun Chen from Tsinghua University. Assets 2 Source code (zip) Nov 26, 2025 Source code (tar.gz) Nov 26, 2025 11 people reacted Unbound 1.24.1 Oct 22, 2025 @gthess gthess release-1.24.1 a33f063 Unbound 1.24.1 This security release fixes CVE-2025-11411.
Promiscuous NS RRSets that complement DNS replies in the authority section can be used to trick resolvers to update their delegation information for the zone.
The CVE is described here https://nlnetlabs.nl/downloads/unbound/CVE-2025-11411.txt
We would like to thank Yuxiao Wu, Yunyi Zhang, Baojun Liu and Haixin Duan from Tsinghua University for discovering and responsibly disclosing the vulnerability.
Bug Fixes:
Fix CVE-2025-11411 (possible domain hijacking attack), reported by Yuxiao Wu, Yunyi Zhang, Baojun Liu and Haixin Duan from Tsinghua University. Assets 2 10 people reacted Unbound 1.24.0 Sep 18, 2025 @wcawijngaards wcawijngaards release-1.24.0 2dd821c Unbound 1.24.0 Unbound 1.24.0
This release features increased defaults, num.valops statistic, unbound-control cache_lookup, and bug fixes.
The default value increase for num-queries-per-thread is to make saturation of the task queue more resource intensive and less practical. Thanks to Shiming Liu, Network and Information Security Lab, Tsinghua University for the report.
The default value increase for so-sndbuf is to mitigate a cross-layer issue where the UDP socket send buffers are exhausted waiting for ARP/NDP resolution. Thanks to Reflyable for the report.
To help the server start more easily, the setsockopt for sndbuf buffer size prints a warning instead of a failure to start the server if it can not set the buffer size.
Various cache -slabs options are auto-configured if not specified in the config file. It uses a power of two close to the number of threads. When the option is specified in the config file that value is used instead.
An extra statistic is added to track the number of signature validation operations by the validator, num.valops.
The unbound-control cache_lookup command prints cache information for names in the domain given. This prints similar to dump_cache, but only names under the zone(s) specified. Because of that it locks the caches for a much shorter time, and this is good for server responsiveness.
The sock-queue-timeout option is adapted to work on FreeBSD as well as Linux.
Features
Increase default to num-queries-per-thread: 2048, when unbound is compiled with libevent. It makes saturation of the task queue more resource intensive and less practical. Thanks to Shiming Liu, Network and Information Security Lab, Tsinghua University for the report. Merge #1276: Auto-configure '-slabs' values. Change default for so-sndbuf to 1m, to mitigate a cross-layer issue where the UDP socket send buffers are exhausted waiting for ARP/NDP resolution. Thanks to Reflyable for the report. Adjusted so-sndbuf default to 4m. Merge #1289 from Roland van Rijswijk-Deij: Add extra statistic to track the number of signature validation operations. Adds 'num.valops' to extended statistics. Fix #1303: [FR] Disable TLSv1.2. unbound-control cache_lookup prints the cached rrsets and messages for those. unbound-control cache_lookup +t allows tld and root names. And subnet cache contents are printed. Fix #1319: [FR] zone status for Unbound auth-zones. Bug Fixes
Fix #1272: assertion failure testcode/unitverify.c:202. Merge #1275: Use macros for the fr_check_changed* functions. Fix for parallel build of dnstap protoc-c output. Fix dnstap to use protoc. Sync unbound and unbound-checkconf log output for unknown modules. Fix #1281: forward-zone "name: ." conflicts with auth-zone "name: ." in 1.23.0, but worked in 1.22.0. Fix #1283: Unsafe usage of atoi() while parsing the configuration file. Merge #1280: Fix auth nsec3 code. Fixes NSEC3 code to not break on broken auth zones that include unsigned out of zone (above apex) data. Could lead to hang while trying to prove a wildcard answer. Fix #1284: NULL pointer deref in az_find_nsec_cover() (latent bug) by adding a log_assert() to safeguard future development. Fix #1282: log-destaddr fail on long ipv6 addresses. Fix config of slab values when there is no config file. Fix for cname chain length with qtype ANY and qname minimisation. Thanks to Jim Greenwood from Nominet for the report. Merge #1285: RST man pages. It introduces restructuredText man pages to sync the online and source code man page documentation. The templated man pages (*.in) are still part of the repo but generated with docutils from their .rst counterpart. Documentation on how to generate those (mainly for core developers) is in README.man. Add more checks about respip in unbound-checkconf. Also fixes #310: unbound-checkconf not reporting RPZ configuration error. Fix #1288: [FR] Improve fuzzing of unbound by adapting the netbound program. Small manpage corrections for the 'disable-dnssec-lame-check' option. Fix unbound-anchor certificate file read for line ends and end of file. Fix comment for the dname_remove_label_limit_len function. iana portlist updated. Fix bitwise operators in conditional expressions with parentheses. Fix conditional expressions with parentheses for bitwise and. Fix header return value description for skip_pkt_rrs and parse_edns_from_query_pkt. Fix to check control-interface addresses in unbound-checkconf. Fix #1295: Windows 32-bit binaries download seems to be missing dll dependency. Fix for consistent use of local zone CNAME alias for configured auth zones. Now it also applies to downstream configured auth zones. Fix #1296: DNS over QUIC depends on a very outdated version of ngtcp2. Fixed so it works with ngtcp2 1.13.0 and OpenSSL 3.5.0. Merge #1297: edns-subnet: fix NULL_AFTER_DEREF on subnetmod. Fix rrset cache create allocation failure case. Fix #1293: EDE 6 is attached to insecure cached answers when client sends the CD bit. Fix #1247: forward-first: ssl handshake failed on root nameservers. For #1247, turn off fetch-policy for delegation when looking into parent side name servers that may not update the addresses and hit NXNS limits. For #1247, replay test (added tcp_transport to outnet_serviced_query). Merge #1299: Fix typos. Generate ltmain.sh and configure again. Fix #1300: Is 'sock-queue-timeout' a linux only feature. For #1300: implement sock-queue-timeout for FreeBSD as well. Fix layout of comm_point_udp_ancil_callback. Fix to improve dnstap discovery on Fedora. Fix detection of SSL_CTX_set_tmp_ecdh function. For #1301: configure cant find SSL_is_quic in OpenSSL 3.5.1. For #1289: test num.valops in existing stat_values.tdir. For #1289: add num.valops in the unbound-control man page. Add unit tests for non-ecs aggregation. Fix to not set rlimits in the unit tests. iana portlist updated. Redis checks for server down and throttles reconnects. Fix redis cachedb module gettimeofday init failure. Fix testbound test program to accurately output packets from hex. Fix #1309: incorrectly reclaimed tcp handler can cause data corruption and segfault. Fix to use assertions for consistency checks in #1309 reclaimed tcp handlers. Fix edns subnet, so that the subquery without subnet is stored in global cache if the querier used 0.0.0.0/0 and the name and address do not receive subnet treatment. If the name and address are configured for subnet, it is stored in the subnet cache. Fix dname_str for printout of long names. Thanks to Jan Komissar for the fix. Fix that edns-subnet failure to create a subquery errors as servfail, and not formerror. Fix to whitespace in dname_str. Fix that unbound-control dump_cache releases the cache locks every so often, so that the server stays responsive. Fix to remove debug from cache_lookup. Fix to unlock cache_lookup message for malformed records. Fix to increase responsiveness of dump_cache. Fix to decouple file descriptor activity and cache lookups in dump_cache. Fix cache_lookup subnet printout to wipe zero part of the prefix. Fix cache_lookup subnet print to not print messages without rrsets and perform in-depth check on node in the addrtree. Fix to check for extraneous command arguments for unbound-control, when the command takes no arguments but there are arguments present. Fix #1317: Unbound starts too early. Add Wants=network-online.target under [Unit] in unbound.service. Fix for #1317: Fix contrib/unbound.service comment path for systemd network configuration. For #1318: Fix compile warnings for DoH compile on windows. Fix sha1 enable environment variable in test code on windows. Fix that the zone acquired timestamp is set after the zonefile is read. Fix ports workflow to install expat for macos. Fix unbound-control dump_cache for double unlock of lruhash table. Fix setup_listen_sslctx warning for nettle compile. Limit the number of consecutive reads on an HTTP/2 session. Thanks to Gal Bar Nahum for exposing the possibility of infinite reads on the session. Fix for #1324: Fix to free edns options scratch in ratelimit case. Fix #1235: Outdated Python2 code in unbound/pythonmod/examples/log.py. Fix #1324: Memory leak in 'msgparse.c' in 'parse_edns_options_from_query(...)'. Fix indentation in tcp-mss option parsing. For #1328: make depend. Update documentation for using "SET ... EX" in Redis. Document max buffer sizes for Redis commands. Update man pages. Fix #1332: CNAME chains are sometimes not followed when RPZs add a local CNAME rewrite. Update contrib/aaaa-filter-iterator.patch so it applies on 1.24.0. Small debug output improvement when attaching an EDE. Fix to print warning for when so-sndbuf setsockopt is not granted. Too many quotes for the EDE message debug printout. Assets 2 16 people reacted
|
| 1.1.1.2 |
| 03-Sep-2018 |
christos | branches: 1.1.1.2.14; Import unbound-1.7.3
19 June 2018: Wouter - Fix for unbound-control on Windows and set TCP socket parameters more closely. - Fix windows unbound-control no cert bad file descriptor error.
18 June 2018: Wouter - Fix that control-use-cert: no works for 127.0.0.1 to disable certs. - Fix unbound-checkconf for control-use-cert.
15 June 2018: Wouter - tag for 1.7.3rc1.
14 June 2018: Wouter - #4103: Fix that auth-zone does not insist on SOA record first in file for url downloads. - Fix that first control-interface determines if TLS is used. Warn when IP address interfaces are used without TLS. - Fix nettle compile.
12 June 2018: Ralph - Don't count CNAME response types received during qname minimisation as query restart.
12 June 2018: Wouter - #4102 for NSD, but for Unbound. Named unix pipes do not use certificate and key files, access can be restricted with file and directory permissions. The option control-use-cert is no longer used, and ignored if found in unbound.conf. - Rename tls-additional-ports to tls-additional-port, because every line adds one port. - Fix buffer size warning in unit test. - remade dependencies in the Makefile.
6 June 2018: Wouter - Patch to fix openwrt for mac os build darwin detection in configure.
5 June 2018: Wouter - Fix crash if ratelimit taken into use with unbound-control instead of with unbound.conf.
4 June 2018: Wouter - Fix deadlock caused by incoming notify for auth-zone. - tag for 1.7.2rc1, became 1.7.2 release on 11 June 2018, trunk is 1.7.3 in development from this point. - #4100: Fix stub reprime when it becomes useless.
1 June 2018: Wouter - Rename additional-tls-port to tls-additional-ports. The older name is accepted for backwards compatibility.
30 May 2018: Wouter - Patch from Syzdek: Add ability to ignore RD bit and treat all requests as if the RD bit is set.
29 May 2018: Wouter - in compat/arc4random call getentropy_urandom when getentropy fails with ENOSYS. - Fix that fallback for windows port.
28 May 2018: Wouter - Fix windows tcp and tls spin on events. - Add routine from getdns to add windows cert store to the SSL_CTX. - tls-win-cert option that adds the system certificate store for authenticating DNS-over-TLS connections. It can be used instead of the tls-cert-bundle option, or with it to add certificates.
25 May 2018: Wouter - For TCP and TLS connections that don't establish, perform address update in infra cache, so future selections can exclude them. - Fix that tcp sticky events are removed for closed fd on windows. - Fix close events for tcp only.
24 May 2018: Wouter - Fix that libunbound can do DNS-over-TLS, when configured. - Fix that windows unbound service can use DNS-over-TLS. - unbound-host initializes ssl (for potential DNS-over-TLS usage inside libunbound), when ssl upstream or a cert-bundle is configured.
23 May 2018: Wouter - Use accept4 to speed up incoming TCP (and TLS) connections, available on Linux, FreeBSD and OpenBSD.
17 May 2018: Ralph - Qname minimisation default changed to yes.
15 May 2018: Wouter - Fix low-rtt-pct to low-rtt-permil, as it is parts in one thousand.
11 May 2018: Wouter - Fix contrib/libunbound.pc for libssl libcrypto references, from https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226914
7 May 2018: Wouter - Fix windows to not have sticky TLS events for TCP. - Fix read of DNS over TLS length and data in one read call. - Fix mesh state assertion failure due to callback removal.
3 May 2018: Wouter - Fix that configure --with-libhiredis also turns on cachedb. - Fix gcc 8 buffer warning in testcode. - Fix function type cast warning in libunbound context callback type.
2 May 2018: Wouter - Fix fail to reject dead peers in forward-zone, with ssl-upstream.
1 May 2018: Wouter - Fix that unbound-control reload frees the rrset keys and returns the memory pages to the system.
30 April 2018: Wouter - Fix spelling error in man page and note defaults as no instead of off.
26 April 2018: Wouter - Fix for crash in daemon_cleanup with dnstap during reload, from Saksham Manchanda. - Also that for dnscrypt. - tag for 1.7.1rc1 release. Became 1.7.1 release on 3 May, trunk is from here 1.7.2 in development.
25 April 2018: Ralph - Fix memory leak when caching wildcard records for aggressive NSEC use
24 April 2018: Wouter - Fix contrib/fastrpz.patch for this release. - Fix auth https for libev.
24 April 2018: Ralph - Added root-key-sentinel support
23 April 2018: Wouter - makedist uses bz2 for expat code, instead of tar.gz. - Fix #4092: libunbound: use-caps-for-id lacks colon in config_set_option. - auth zone http download stores exact copy of downloaded file, including comments in the file. - Fix sldns parse failure for CDS alternate delete syntax empty hex. - Attempt for auth zone fix; add of callback in mesh gets from callback does not skip callback of result. - Fix cname classification with qname minimisation enabled. - list_auth_zones unbound-control command.
20 April 2018: Wouter - man page documentation for dns-over-tls forward-addr '#' notation. - removed free from failed parse case. - Fix #4091: Fix that reload of auth-zone does not merge the zonefile with the previous contents. - Delete auth zone when removed from config.
19 April 2018: Wouter - Can set tls authentication with forward-addr: IP#tls.auth.name And put the public cert bundle in tls-cert-bundle: "ca-bundle.pem". such as forward-addr: 9.9.9.9@853#dns.quad9.net or 1.1.1.1@853#cloudflare-dns.com - Fix #658: unbound using TLS in a forwarding configuration does not verify the server's certificate (RFC 8310 support). - For addr with #authname and no @port notation, the default is 853.
18 April 2018: Wouter - Fix auth-zone retry timer to be on schedule with retry timeout, with backoff. Also time a refresh at the zone expiry.
17 April 2018: Wouter - auth zone notify work. - allow-notify: config statement for auth-zones. - unit test for allow-notify
16 April 2018: Wouter - Fix auth zone target lookup iterator. - auth zone notify with prefix - auth zone notify work.
13 April 2018: Wouter - Fix for max include depth for authzones. - Fix memory free on fail for $INCLUDE in authzone. - Fix that an internal error to look up the wrong rr type for auth zone gets stopped, before trying to send there. - auth zone notify work.
10 April 2018: Ralph - num.query.aggressive.NOERROR and num.query.aggressive.NXDOMAIN statistics counters.
10 April 2018: Wouter - documentation for low-rtt and low-rtt-pct. - auth zone notify work.
9 April 2018: Wouter - Fix that flush_zone sets prefetch ttl expired, so that with serve-expired enabled it'll start prefetching those entries. - num.query.authzone.up and num.query.authzone.down statistics counters. - Fix downstream auth zone, only fallback when auth zone fails to answer and fallback is enabled. - Accept both option names with and without colon for get_option and set_option. - low-rtt and low-rtt-pct in unbound.conf enable the server selection of fast servers for some percentage of the time.
5 April 2018: Wouter - Combine write of tcp length and tcp query for dns over tls. - nitpick fixes in example.conf. - Fix above stub queries for type NS and useless delegation point. - Fix unbound-control over pipe with openssl 1.1.1, the TLSv1.3 tls_choose_sigalg routine does not allow the ciphers for the pipe, so use TLSv1.2. - ED448 support.
3 April 2018: Wouter - Fix #4043: make test fails due to v6 presentation issue in macOS. - Fix unable to resolve after new WLAN connection, due to auth-zone failing with a forwarder set. Now, auth-zone is only used for answers (not referrals) when a forwarder is set.
29 March 2018: Ralph - Check "result" in dup_all(), by Florian Obser.
23 March 2018: Ralph - Fix unbound-control get_option aggressive-nsec
21 March 2018: Ralph - Do not use cached NSEC records to generate negative answers for domains under DNSSEC Negative Trust Anchors.
19 March 2018: Wouter - iana port update.
16 March 2018: Wouter - corrected a minor typo in the changelog. - move htobe64/be64toh portability code to cachedb.c.
15 March 2018: Wouter - Add --with-libhiredis, unbound support for a new cachedb backend that uses a Redis server as the storage. This implementation depends on the hiredis client library (https://redislabs.com/lp/hiredis/). And unbound should be built with both --enable-cachedb and --with-libhiredis[=PATH] (where $PATH/include/hiredis/hiredis.h should exist). Patch from Jinmei Tatuya (Infoblox). - Fix #3817: core dump happens in libunbound delete, when queued servfail hits deleted message queue. - Create additional tls service interfaces by opening them on other portnumbers and listing the portnumbers as additional-tls-port: nr.
13 March 2018: Wouter - Fix typo in documentation. - Fix #3736: Fix 0 TTL domains stuck on SERVFAIL unless manually flushed with serve-expired on.
12 March 2018: Wouter - Added documentation for aggressive-nsec: yes. - tag 1.7.0rc3. That became the 1.7.0 release on 15 Mar, trunk now has 1.7.1 in development. - Fix #3727: Protocol name is TLS, options have been renamed but documentation is not consistent. - Check IXFR start serial.
9 March 2018: Wouter - Fix #3598: Fix swig build issue on rhel6 based system. configure --disable-swig-version-check stops the swig version check.
8 March 2018: Wouter - tag 1.7.0rc2.
7 March 2018: Wouter - Fixed contrib/fastrpz.patch, even though this already applied cleanly for me, now also for others. - patch to log creates keytag queries, from A. Schulze. - patch suggested by Debian lintian: allow to -> allow one to, from A. Schulze. - Attempt to remove warning about trailing whitespace.
6 March 2018: Wouter - Reverted fix for #3512, this may not be the best way forward; although it could be changed at a later time, to stay similar to other implementations. - svn trunk contains 1.7.0, this is the number for the next release. - Fix for windows compile. - tag 1.7.0rc1.
5 March 2018: Wouter - Fix to check define of DSA for when openssl is without deprecated. - iana port update. - Fix #3582: Squelch address already in use log when reuseaddr option causes same port to be used twice for tcp connections.
27 February 2018: Wouter - Fixup contrib/fastrpz.patch so that it applies. - Fix compile without threads, and remove unused variable. - Fix compile with staticexe and python module. - Fix nettle compile.
22 February 2018: Ralph - Save wildcard RRset from answer with original owner for use in aggressive NSEC.
21 February 2018: Wouter - Fix #3512: unbound incorrectly reports SERVFAIL for CAA query when there is a CNAME loop. - Fix validation for CNAME loops. When it detects a cname loop, by finding the cname, cname in the existing list, it returns the partial result with the validation result up to then. - more robust cachedump rrset routine.
19 February 2018: Wouter - Fix #3505: Documentation for default local zones references wrong RFC. - Fix #3494: local-zone noview can be used to break out of the view to the global local zone contents, for queries for that zone. - Fix for more maintainable code in localzone.
16 February 2018: Wouter - Fixes for clang static analyzer, the missing ; in edns-subnet/addrtree.c after the assert made clang analyzer produce a failure to analyze it.
13 February 2018: Ralph - Aggressive NSEC tests
13 February 2018: Wouter - tls-cert-bundle option in unbound.conf enables TLS authentication. - iana port update.
12 February 2018: Wouter - Unit test for auth zone https url download.
12 February 2018: Ralph - Added tests with wildcard expanded NSEC records (CVE-2017-15105 test) - Processed aggressive NSEC code review remarks Wouter
8 February 2018: Ralph - Aggressive use of NSEC implementation. Use cached NSEC records to generate NXDOMAIN, NODATA and positive wildcard answers.
8 February 2018: Wouter - iana port update. - auth zone url config.
5 February 2018: Wouter - Fix #3451: dnstap not building when you have a separate build dir. And removed protoc warning, set dnstap.proto syntax to proto2. - auth-zone provides a way to configure RFC7706 from unbound.conf, eg. with auth-zone: name: "." for-downstream: no for-upstream: yes fallback-enabled: yes and masters or a zonefile with data.
2 February 2018: Wouter - Fix unfreed locks in log and arc4random at exit of unbound. - unit test with valgrind - Fix lock race condition in dns cache dname synthesis. - lock subnet new item before insertion to please checklocks, no modification of critical regions outside of lock region.
1 February 2018: Wouter - fix unaligned structure making a false positive in checklock unitialised memory.
29 January 2018: Ralph - Use NSEC with longest ce to prove wildcard absence. - Only use *.ce to prove wildcard absence, no longer names.
25 January 2018: Wouter - ltrace.conf file for libunbound in contrib.
23 January 2018: Wouter - Fix that unbound-checkconf -f flag works with auto-trust-anchor-file for startup scripts to get the full pathname(s) of anchor file(s). - Print fatal errors about remote control setup before log init, so that it is printed to console.
22 January 2018: Wouter - Accept tls-upstream in unbound.conf, the ssl-upstream keyword is also recognized and means the same. Also for tls-port, tls-service-key, tls-service-pem, stub-tls-upstream and forward-tls-upstream. - Fix #3397: Fix that cachedb could return a partial CNAME chain. - Fix #3397: Fix that when the cache contains an unsigned DNAME in the middle of a cname chain, a result without the DNAME could be returned.
|