notes-9.20.23.rst revision 1.1 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.23
13 ----------------------
14
15 Security Fixes
16 ~~~~~~~~~~~~~~
17
18 - Limit resolver server list size. :cve:`2026-3592`
19
20 When resolving a domain with many nameservers that shared overlapping
21 IP addresses (e.g., 10 NS records all pointing at the same set of
22 addresses), BIND could previously waste time querying duplicate
23 addresses and build up excessively large server lists. Addresses in
24 the resolver's server list are now deduplicated so that each unique IP is only
25 queried once per resolution attempt, regardless of how many NS records
26 point to it. The number of addresses stored per nameserver name
27 is also now capped at six (combined A and AAAA), preventing memory and CPU overhead from
28 domains with unusually large NS/glue sets.
29
30 ISC would like to thank Shuhan Zhang from Tsinghua University for
31 reporting this issue. :gl:`#5641`
32
33 - Fix GSS-API resource leak. :cve:`2026-3039`
34
35 A memory leak was fixed where each GSS-API TKEY negotiation leaked a
36 security context inside the GSS library. An unauthenticated attacker
37 could exhaust server memory by sending repeated TKEY queries to a
38 server with :any:`tkey-gssapi-keytab` configured. The leaked memory was
39 allocated by the GSS library, bypassing BIND's memory accounting.
40
41 Multi-round GSS-API negotiation (GSS_S_CONTINUE_NEEDED) is now
42 rejected, as BIND never supported it correctly and Kerberos/SPNEGO
43 completes in a single round.
44
45 ISC would like to thank Vitaly Simonovich for bringing this
46 vulnerability to our attention. :gl:`#5752`
47
48 - Disable recursion, UPDATE, and NOTIFY for non-IN views.
49 :cve:`2026-5946`
50
51 Recursion, dynamic updates (UPDATE), and zone change notifications
52 (NOTIFY) are now disabled for views with a class other than IN (such
53 as CHAOS or HESIOD); authoritative service for non-IN zones (e.g.
54 version.bind in class CHAOS) continues to work as before. Servers
55 configured with :namedconf:ref:`recursion yes; <recursion>`
56 in a non-IN view log a warning at
57 startup, and :iscman:`named-checkconf` flags the same condition. UPDATE and
58 NOTIFY messages that specify the meta-classes ANY or NONE in the
59 question section are now rejected with FORMERR.
60
61 This addresses a set of closely related security issues collectively
62 identified as CVE-2026-5946. ISC would like to thank Mcsky23 for
63 bringing these issues to our attention. :gl:`#5784`
64
65 - Avoid unbounded recursion loop. :cve:`2026-5950`
66
67 A bug during bad server handling could cause the resolver to enter an
68 infinite loop, continuously sending queries to an upstream server with
69 no exit condition, until the resolver query timeout was hit. This has
70 been fixed.
71
72 ISC would like to thank Billy Baraja (BielraX) for bringing this issue
73 to our attention. :gl:`#5804`
74
75 - Fix crash in resolver when SIG(0)-signed responses are received under
76 load. :cve:`2026-5947`
77
78 A resolver could crash when handling a SIG(0)-signed response if the
79 matching client query was cancelled while signature verification was
80 still in progress for example, when the recursive-clients quota was
81 exhausted. This has been fixed.
82
83 ISC would like to thank Naoki Wakamatsu for bringing this
84 vulnerability to our attention. :gl:`#5819`
85
86 - Fix use-after-free error in DNS-over-HTTPS when processing HTTP/2
87 SETTINGS frames. :cve:`2026-3593`
88
89 Previously, a use-after-free vulnerability in the DNS-over-HTTPS implementation
90 could cause :iscman:`named` to crash when a client sent a flood of HTTP/2
91 SETTINGS frames while a DoH response was being written. This affected
92 servers with DoH (DNS-over-HTTPS) enabled and has been fixed.
93
94 ISC would like to thank Naresh Kandula Parmar (Nottiboy) for reporting
95 this. :gl:`#5755`
96
97 - Fix outgoing zone transfers' quota issue.
98
99 Unauthorized clients could consume the entire outgoing zone-transfer quota and
100 block authorized zone transfer clients. This has been fixed.
101 :gl:`#3589`
102
103 Feature Changes
104 ~~~~~~~~~~~~~~~
105
106 - Fix CPU spikes and slow queries when cache approaches memory limit.
107
108 Cache cleanup is now spread probabilistically to avoid CPU usage spikes and a
109 drop in query throughput. :gl:`#5891`
110
111 Bug Fixes
112 ~~~~~~~~~
113
114 - Use the zone file's basename as origin in DNSSEC tools.
115
116 In :iscman:`dnssec-signzone` and :iscman:`dnssec-verify`, when the zone origin is not
117 specified using the ``-o`` parameter, the default behavior is to try to
118 sign using the zone's file name as the origin. So, for example,
119 ``dnssec-signzone -S example.com`` will work, so long as the file name
120 matches the zone name.
121
122 This now also works if the zone is in a different directory. For
123 example, ``dnssec-signzone -S zones/example.com`` will set the origin
124 value to ``example.com``. :gl:`#5678`
125
126 - Fix a possible race condition during zone transfers.
127
128 The :iscman:`named` process could terminate unexpectedly when
129 processing an IXFR message during a zone transfer. This has been
130 fixed. :gl:`#5767`
131
132 - Fix :iscman:`named` crash when processing SIG records in dynamic updates.
133
134 Previously, :iscman:`named` could abort if a client sent a dynamic
135 update containing a SIG record (the legacy signature type) to a zone
136 configured with an update-policy. The function `dns_db_findrdataset`
137 had an incorrect requirements prerequisite that prevented SIG records
138 from being looked up, which was triggered as part of processing an UPDATE
139 request and could be triggered remotely by any client permitted to
140 send updates. This has been fixed by ensuring that SIG records are
141 handled consistently with RRSIG records during update processing.
142 :gl:`#5818`
143
144 - Fix :option:`rndc modzone` behavior for a zone in named.conf.
145
146 If a zone was present in the configuration file and not originally
147 added by :option:`rndc addzone`, :option:`rndc modzone` for that zone would succeed
148 once but subsequent :option:`rndc modzone` attempts would fail. This has been
149 fixed. :gl:`#5826`
150
151 - Fix zone verification of NSEC3 signed zones.
152
153 Previously, when computing the compressed bitmap during verification
154 of an NSEC3-signed zone, an undersized buffer was used that resulted
155 in an out-of-bounds write if there were too many active windows in the
156 bitmap. This impacted the mirror zones which are NSEC3-signed,
157 :iscman:`dnssec-signzone` and :iscman:`dnssec-verify`. This has been fixed.
158 :gl:`#5834`
159
160 - Prevent a crash when using both :any:`dns64` and :any:`filter-aaaa`.
161
162 An assertion failure could be triggered if both :any:`dns64` and the
163 :any:`filter-aaaa` plugin were in use simultaneously. This happened if the
164 plugin triggered a second recursion process, which then attempted to
165 store DNS64 state information in a pointer that had already been set
166 by the original recursion process. This has been fixed. :gl:`#5854`
167
168 - Fixed an assertion failure when processing catalog zones.
169
170 If a TXT record containing an invalid name TSIG key name was found
171 when processing a catalog zone member's primaries definition,
172 ``dns_name_free`` was incorrectly called, triggering an assertion. This has
173 been fixed. :gl:`#5858`
174
175 - Prevent malicious DNSSEC zones from exhausting validator CPU.
176
177 A DNSSEC-signed zone could publish a DNSKEY with an unusually large
178 RSA public exponent and force any validator resolving names in that
179 zone to spend disproportionate CPU verifying signatures. The
180 validator now rejects such DNSKEYs, matching the limit already applied
181 to keys read from files or HSMs. :gl:`#5881`
182
183 - Fix :iscman:`rndc-confgen` aborting on HMAC-SHA-384/512 keys above 512 bits.
184
185 :iscman:`rndc-confgen` (with either ``-A hmac-sha384`` or
186 ``-A hmac-sha512``) previously documented a ``-b``
187 range of 1..1024, but any value above 512 aborted on hardened builds
188 instead of producing a key. The full advertised range now works.
189 :gl:`#5903`
190
191 - Prevent crafted queries from degrading RRL performance.
192
193 With response rate limiting enabled, an attacker sending queries from
194 many spoofed source addresses could steer entries into the same slot
195 of the internal rate-limit table and slow down query processing on the
196 affected server. The table now uses a per-process keyed hash so the
197 placement of entries cannot be predicted or influenced from the
198 network. :gl:`#5906`
199
200 - Prevent rare :iscman:`named` crash when notifies are cancelled.
201
202 Under heavy load, :iscman:`named` could occasionally crash when a queued
203 outbound notify or zone refresh was cancelled at the moment it was
204 being sent for example, while a zone was being reloaded or removed.
205 The race that caused the crash is now prevented. :gl:`#5915`
206
207 - Stop :iscman:`delv` from aborting on a malformed query name.
208
209 :iscman:`delv` previously aborted with SIGABRT instead of exiting cleanly when given a query
210 name that failed wire-format conversion (e.g. a label longer than 63
211 octets). After this change :iscman:`delv` prints the parse error and exits with
212 a normal failure code. :gl:`#5916`
213
214 - Fix a crash when reconfiguring while an NTA is being rechecked.
215
216 Previously, if :iscman:`named` was reconfigured or shut down while a negative trust anchor
217 was being rechecked against authoritative servers, the in-flight
218 recheck could outlive the view that owned it and cause :iscman:`named` to
219 crash. This has been fixed. :gl:`#5938`
220
221 - Fix a bug in :any:`allow-query`/:any:`allow-transfer` catalog zone custom
222 properties.
223
224 The :iscman:`named` process could terminate unexpectedly when
225 processing a catalog zone with an invalid :any:`allow-query` or
226 :any:`allow-transfer` custom property (i.e. having a non-APL type)
227 coexisting with the valid property. This has been fixed. :gl:`#5941`
228
229 - Fix a memory leak issue in catalog zones.
230
231 The :iscman:`named` process could leak small amounts of memory when
232 processing a catalog zone entry which had defined custom primary
233 servers with TSIG keys, if both the regular ``primaries`` custom
234 property syntax and the legacy alternative syntax (``masters``) were used at the
235 same time. This has been fixed. :gl:`#5943`
236
237 - Fix suppressed missing-glue check in :iscman:`named-checkzone`.
238
239 :iscman:`named-checkzone` and :option:`named-checkconf -z` silently
240 skipped the missing-glue check for any NS name that had already
241 triggered an extra-AAAA-glue warning, so zones missing required A glue
242 could pass validation and be deployed with broken delegations.
243 :gl:`!11899`
244
245 - Implement seamless outgoing TCP connection reuse.
246
247 The resolver can and will reuse outgoing TCP connections to the same
248 host, as recommended by :rfc:`7766`. This prevents a whole class of
249 attacks that abuse the fact that establishing a TCP connection is
250 expensive and it is fairly easy to deplete the outgoing TCP ports by
251 putting them into ``TIME_WAIT`` state.
252
253 The number of pipelined queries per connection is capped at 256 to
254 limit the impact of a connection drop. :gl:`!11845`
255
256 - Reject record sets too large to serve in DNS.
257
258 When BIND was asked to store a record set whose total size exceeded
259 what fit in a DNS message, it would allocate memory and build the
260 structure, then fail later at response time. Such oversized record
261 sets are now rejected at the time of storage with an error, avoiding
262 wasted work on data that can never be served. :gl:`!11963`
263
264
265