1 .. Copyright (C) Internet Systems Consortium, Inc. ("ISC") 2 .. 3 .. SPDX-License-Identifier: MPL-2.0 4 .. 5 .. This Source Code Form is subject to the terms of the Mozilla Public 6 .. License, v. 2.0. If a copy of the MPL was not distributed with this 7 .. file, you can obtain one at https://mozilla.org/MPL/2.0/. 8 .. 9 .. See the COPYRIGHT file distributed with this work for additional 10 .. information regarding copyright ownership. 11 12 Notes for BIND 9.20.5 13 --------------------- 14 15 Security Fixes 16 ~~~~~~~~~~~~~~ 17 18 - DNS-over-HTTPS flooding fixes. :cve:`2024-12705` 19 20 Fix DNS-over-HTTPS implementation issues that arise under heavy 21 query load. Optimize resource usage for :iscman:`named` instances that 22 accept queries over DNS-over-HTTPS. 23 24 Previously, :iscman:`named` processed all incoming HTTP/2 data at 25 once, which could overwhelm the server, especially when dealing with 26 clients that sent requests but did not wait for responses. That has been 27 fixed. Now, :iscman:`named` handles HTTP/2 data in smaller chunks and 28 throttles reading until the remote side reads the response data. It 29 also throttles clients that send too many requests at once. 30 31 In addition, :iscman:`named` now evaluates excessive streams opened by 32 clients that include no DNS data, which is considered "flooding." It 33 logs these clients and drops connections from them. :gl:`#4795` 34 35 In some cases, :iscman:`named` could leave DNS-over-HTTPS 36 connections in the `CLOSE_WAIT` state indefinitely. That has also been 37 fixed. :gl:`#5083` 38 39 ISC would like to thank Jean-Franois Billaud for his assistance with 40 investigating this issue. 41 42 - Limit additional section processing for large RDATA sets. 43 :cve:`2024-11187` 44 45 When answering queries, don't add data to the additional section if 46 the answer has more than 13 names in the RDATA. This limits the number 47 of lookups into the database(s) during a single client query, reducing 48 the query-processing load. :gl:`#5034` 49 50 ISC would like to thank Toshifumi Sakaguchi for bringing this 51 vulnerability to our attention. 52 53 New Features 54 ~~~~~~~~~~~~ 55 56 - Add Extended DNS Error Code 22 - No Reachable Authority. 57 58 When the resolver is trying to query an authoritative server and 59 eventually times out, a SERVFAIL answer is given to the client. Add 60 the Extended DNS Error Code 22 - No Reachable Authority to the 61 response. :gl:`#2268` 62 63 - Add a new option to configure the maximum number of outgoing queries 64 per client request. 65 66 The configuration option :any:`max-query-count` sets how many outgoing 67 queries per client request are allowed. The existing 68 :any:`max-recursion-queries` value is the number of permissible queries for a 69 single name and is reset on every CNAME redirection. This new option 70 is a global limit on the client request. The default is 200. 71 72 The default for :any:`max-recursion-queries` is changed from 32 to 73 50. This allows :any:`named` to send a few more queries 74 while looking up a single name. :gl:`#4980` :gl:`#4921` 75 76 - Use the Server Name Indication (SNI) extension for all outgoing TLS 77 connections. 78 79 This improves compatibility with other DNS server software. 80 :gl:`#5099` 81 82 Feature Changes 83 ~~~~~~~~~~~~~~~ 84 85 - Performance optimization for NSEC3 lookups introduced in BIND 9.20.2 was 86 reverted to avoid risks associated with a complex code change. :gl:`#5108` 87 88 - The configuration clauses ``parental-agents`` and ``primaries`` are renamed to 89 :any:`remote-servers`. 90 91 The top blocks ``primaries`` and ``parental-agents`` are no longer 92 preferred and should be renamed to :any:`remote-servers`. The zone 93 statements :any:`parental-agents` and :any:`primaries` are still used, and may 94 refer to any :any:`remote-servers` top block. :gl:`#4544` 95 96 - Add `none` parameter to :namedconf:ref:`query-source` and 97 :namedconf:ref:`query-source-v6` to disable IPv4 or IPv6 upstream queries but 98 allow listening to queries from clients on IPv4 or IPv6. :gl:`#4981` 99 100 Bug Fixes 101 ~~~~~~~~~ 102 103 - Fix :iscman:`nsupdate` hang when processing a large update. 104 105 To mitigate DNS flood attacks over a single TCP connection, throttle 106 the connection when the other side does not read the data. Throttling 107 should only occur on server-side sockets, but erroneously also 108 happened for :iscman:`nsupdate`, which acts as a client. When 109 :iscman:`nsupdate` started throttling the connection, it never 110 attempted to read again. This has been fixed. :gl:`#4910` 111 112 - Fix possible assertion failure when reloading server while processing 113 update policy rules. :gl:`#5006` 114 115 - Preserve cache across reconfig when using :any:`attach-cache`. 116 117 When the :any:`attach-cache` option is used in the ``options`` block with an 118 arbitrary name, it causes all views to use the same cache. Previously, 119 this configuration caused the cache to be deleted and a new cache 120 to be created every time the server was reconfigured. This has been fixed. 121 :gl:`#5061` 122 123 - Resolve the spurious drops in performance due to glue cache. 124 125 For performance reasons, the returned glue records are cached on the 126 first use. The current implementation could randomly cause a 127 performance drop and increased memory use. This has been fixed. 128 :gl:`#5064` 129 130 - Fix :iscman:`dnssec-signzone` signing non-DNSKEY RRsets with revoked keys. 131 132 :any:`dnssec-signzone` was using revoked keys for signing RRsets other than 133 DNSKEY. This has been corrected. :gl:`#5070` 134 135 - Fix improper handling of unknown directives in ``resolv.conf``. 136 137 The line after an unknown directive in ``resolv.conf`` could accidentally be 138 skipped, potentially affecting :iscman:`dig`, :iscman:`host`, 139 :iscman:`nslookup`, :iscman:`nsupdate`, or :iscman:`delv`. This has been 140 fixed. :gl:`#5084` 141 142 - Fix response policy zones and catalog zones with an ``$INCLUDE`` statement 143 defined. 144 145 Response policy zones (RPZ) and catalog zones were not working 146 correctly if they had an ``$INCLUDE`` statement defined. This has been 147 fixed. :gl:`#5111` 148 149 150