changelog-9.20.29.rst revision 1.1 1 1.1 christos .. Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2 1.1 christos ..
3 1.1 christos .. SPDX-License-Identifier: MPL-2.0
4 1.1 christos ..
5 1.1 christos .. This Source Code Form is subject to the terms of the Mozilla Public
6 1.1 christos .. License, v. 2.0. If a copy of the MPL was not distributed with this
7 1.1 christos .. file, you can obtain one at https://mozilla.org/MPL/2.0/.
8 1.1 christos ..
9 1.1 christos .. See the COPYRIGHT file distributed with this work for additional
10 1.1 christos .. information regarding copyright ownership.
11 1.1 christos
12 1.1 christos BIND 9.20.29
13 1.1 christos ------------
14 1.1 christos
15 1.1 christos Security Fixes
16 1.1 christos ~~~~~~~~~~~~~~
17 1.1 christos
18 1.1 christos - [CVE-2026-19668] Prevent excessive CPU use validating crafted DNSSEC
19 1.1 christos responses. ``a0a61dba9e``
20 1.1 christos
21 1.1 christos A malicious authoritative server could serve a securely delegated zone
22 1.1 christos whose DS and DNSKEY records carry many distinct key tags but no valid
23 1.1 christos match, forcing a validating resolver into excessive key-tag matching
24 1.1 christos and high CPU use for every query. BIND now bounds this work with the
25 1.1 christos per-query validation limit (max-validations-per-fetch). :gl:`#5349`
26 1.1 christos
27 1.1 christos - [CVE-2026-19033] Require a TSIG on every message of incoming zone
28 1.1 christos transfers. ``9404cd2b8c``
29 1.1 christos
30 1.1 christos BIND 9 used to accept TSIG-signed zone transfers in which some
31 1.1 christos messages were unsigned, and processed those messages before the next
32 1.1 christos signature could vouch for them. It now requires a TSIG on every
33 1.1 christos message of an incoming AXFR or IXFR; all modern nameserver already
34 1.1 christos sign every message, so no change is expected in practice. :gl:`#6062`
35 1.1 christos
36 1.1 christos - [CVE-2026-77119] Prevent a DNSSEC downgrade of secure delegations via
37 1.1 christos unrelated NSEC3. ``3bed9c8e9e``
38 1.1 christos
39 1.1 christos A validating resolver could be tricked into treating a secure
40 1.1 christos delegation as unsigned and accepting forged answers for names beneath
41 1.1 christos it, if an attacker could inject responses to its queries. Such forged
42 1.1 christos proofs are now rejected. :gl:`#6234`
43 1.1 christos
44 1.1 christos - [CVE-2026-19941] Prevent forged DNSSEC-validated NXDOMAIN responses.
45 1.1 christos ``a36bf58daf``
46 1.1 christos
47 1.1 christos A validating resolver could accept a signed NSEC record from an
48 1.1 christos unrelated zone as proof that a wildcard did not exist. An on-path
49 1.1 christos attacker or malicious forwarder controlling a signed zone could
50 1.1 christos therefore forge an authenticated NXDOMAIN response for a name that
51 1.1 christos should resolve through a wildcard. BIND now requires the
52 1.1 christos wildcard-denial and name-nonexistence proofs to be signed by the same
53 1.1 christos zone. :gl:`#6253`
54 1.1 christos
55 1.1 christos - [CVE-2026-19666] DNS64 with break-dnssec could cause an assertion
56 1.1 christos failure. ``4cec4965c4``
57 1.1 christos
58 1.1 christos When a "dns64" statement is configured with "break-dnssec yes" and its
59 1.1 christos "exclude" list matches some but not all of the addresses in an AAAA
60 1.1 christos RRset, named removes the excluded addresses from the answer instead of
61 1.1 christos synthesizing new ones. If the answer being filtered had been cached
62 1.1 christos together with a proof that the queried name does not exist -- which is
63 1.1 christos what a wildcard match produces -- named terminated with an assertion
64 1.1 christos failure.
65 1.1 christos
66 1.1 christos Only recursive resolvers are affected, and only when "break-dnssec
67 1.1 christos yes" is in use; the answer has to come from the cache, so a server
68 1.1 christos that is only authoritative cannot reach this. :gl:`#6301`
69 1.1 christos
70 1.1 christos - [CVE-2026-19667] Reject negative cache records that do not fit in a
71 1.1 christos dns_rdata_t. ``dbf08c8581``
72 1.1 christos
73 1.1 christos A single crafted response from a server could make a resolver cache a
74 1.1 christos malformed negative entry and then terminate with an assertion failure
75 1.1 christos when reading it back. Only recursive resolvers are affected, on a
76 1.1 christos default configuration. :gl:`#6302`
77 1.1 christos
78 1.1 christos - [CVE-2026-19662] Prevent resolver crash with cached DNSSEC proofs.
79 1.1 christos ``c884cc1ba0``
80 1.1 christos
81 1.1 christos Under certain timing conditions, concurrent recursive queries could
82 1.1 christos cause named to crash when cached DNSSEC NOQNAME proof data was
83 1.1 christos replaced while still in use. Cached proof data is now retained until
84 1.1 christos all queries using it have completed. :gl:`#6333`
85 1.1 christos
86 1.1 christos - [CVE-2026-75029] Discard repeated SOA, CNAME, and DNAME records when
87 1.1 christos parsing DNS messages. ``0d630758c2``
88 1.1 christos
89 1.1 christos A DNS message could carry the same SOA, CNAME, or DNAME record many
90 1.1 christos times, and named kept every copy while parsing it. With name
91 1.1 christos compression those copies took up far more memory internally than in
92 1.1 christos the message itself, and every later processing step had to handle all
93 1.1 christos of them. named now keeps the first copy of such a record and discards
94 1.1 christos identical repeats. :gl:`#6335`
95 1.1 christos
96 1.1 christos - [CVE-2026-77692] Fix an unauthenticated crash on HTTPS using SIG(0)
97 1.1 christos ``5a24401c5c``
98 1.1 christos
99 1.1 christos A specifically crafted HTTPS query using SIG(0) as authentication
100 1.1 christos could crash named if the client closes the connection before named
101 1.1 christos actually verifies the signature. This is now fixed. :gl:`#6343`
102 1.1 christos
103 1.1 christos - [CVE-2026-81736] Cached HTTPS/SVCB aliases could exhaust resolver CPU.
104 1.1 christos ``20bbb1639a``
105 1.1 christos
106 1.1 christos A recursive resolver that had cached a large set of interlinked HTTPS
107 1.1 christos or SVCB records in alias form could be driven to do an excessive
108 1.1 christos amount of work assembling a single response, because it followed every
109 1.1 christos cached alias target when building the additional section. A client
110 1.1 christos permitted to use recursion, together with an attacker-controlled zone
111 1.1 christos used to plant the records, could repeat small queries to consume
112 1.1 christos enough CPU to delay or deny service to other clients. The amount of
113 1.1 christos additional processing done for one query is now bounded. :gl:`#6347`
114 1.1 christos
115 1.1 christos - [CVE-2026-76163] Prevent TKEY queries from terminating named without
116 1.1 christos global options. ``7645138538``
117 1.1 christos
118 1.1 christos named could terminate unexpectedly when a remote client sent a TKEY
119 1.1 christos query if the configuration did not include a global options statement.
120 1.1 christos This has been fixed.
121 1.1 christos
122 1.1 christos ISC thanks Owais Lone (thesecguy) for reporting the issue. :gl:`#6357`
123 1.1 christos
124 1.1 christos - [CVE-2026-78301] Out-of-zone records in a zone database could be
125 1.1 christos served as authoritative. ``72a10c3a0b``
126 1.1 christos
127 1.1 christos When a zone database contained records for names outside the zone
128 1.1 christos such as a delegation above the zone apex, left behind by a secondary
129 1.1 christos that had accepted out-of-zone data from its primary the server could
130 1.1 christos treat them as authoritative and answer queries for names inside the
131 1.1 christos zone with that out-of-zone data instead of the zone's own. A server
132 1.1 christos that was also a resolver could follow such a delegation and cache the
133 1.1 christos answers of the server it named, affecting names outside the configured
134 1.1 christos zone. Zone database lookups are now confined to names at or below the
135 1.1 christos zone's origin.
136 1.1 christos
137 1.1 christos ISC would like to thank Henrique Pereira for reporting the issue.
138 1.1 christos :gl:`#6361`
139 1.1 christos
140 1.1 christos - [CVE-2026-80274] Crash on wildcard answers carrying both NSEC and
141 1.1 christos NSEC3 proofs. ``0e44451b1a``
142 1.1 christos
143 1.1 christos When a wildcard answer arrived with both NSEC and NSEC3 records at the
144 1.1 christos name proving that the queried name does not exist, the resolver could
145 1.1 christos pick different records when caching the answer and when retrieving the
146 1.1 christos proof, depending on the order in which the authoritative server sent
147 1.1 christos them. This could terminate named with an assertion failure, fail the
148 1.1 christos query with SERVFAIL, or serve a denial record other than the one that
149 1.1 christos had been verified. The resolver now caches and serves the same denial
150 1.1 christos record it accepted when the answer was received.
151 1.1 christos
152 1.1 christos ISC would like to thank hythyt for reporting the issue. :gl:`#6369`
153 1.1 christos
154 1.1 christos - [CVE-2026-81563] Following HTTPS/SVCB aliases could leak resolver
155 1.1 christos cache memory. ``3162df369e``
156 1.1 christos
157 1.1 christos When a recursive server answered a query for an HTTPS or SVCB record
158 1.1 christos in alias form and the alias target had more than 13 records, the
159 1.1 christos target records were pinned in the cache permanently instead of being
160 1.1 christos released once the answer was sent. A remote party who could make the
161 1.1 christos server follow such aliases to a steady stream of fresh names could
162 1.1 christos grow the cache beyond the configured max-cache-size until the server
163 1.1 christos was unable to resolve unrelated names. The records are now released
164 1.1 christos correctly.
165 1.1 christos
166 1.1 christos ISC would like to thank Samy Medjahed/Ap4sh for reporting the issue.
167 1.1 christos :gl:`#6374`
168 1.1 christos
169 1.1 christos New Features
170 1.1 christos ~~~~~~~~~~~~
171 1.1 christos
172 1.1 christos - Add an agent skill for the isc_job/isc_async/isc_work APIs.
173 1.1 christos ``fe32990b06``
174 1.1 christos
175 1.1 christos Documents when to use isc_job_run(), isc_async_run() or
176 1.1 christos isc_work_enqueue(), and the contract each one imposes. No functional
177 1.1 christos change. :gl:`!12561`
178 1.1 christos
179 1.1 christos Removed Features
180 1.1 christos ~~~~~~~~~~~~~~~~
181 1.1 christos
182 1.1 christos - Remove unused closest encloser proof caching. ``abd8b5bfd8``
183 1.1 christos
184 1.1 christos BIND used to cache an NSEC3 closest encloser proof alongside positive
185 1.1 christos wildcard answers so that a resolver could re-send it when answering
186 1.1 christos from its cache. That stopped being used in BIND 9.9 (2011), when
187 1.1 christos positive wildcard responses were changed to omit that NSEC3 record
188 1.1 christos RFC 5155 requires only the next closer name proof and the closest
189 1.1 christos encloser came to be derived during validation instead. The caching
190 1.1 christos code has been unreachable ever since, so this removes it with no
191 1.1 christos change in behaviour. :gl:`#5803` :gl:`!12660`
192 1.1 christos
193 1.1 christos Feature Changes
194 1.1 christos ~~~~~~~~~~~~~~~
195 1.1 christos
196 1.1 christos - Reject oversized and malformed DNSKEY records up front. ``6c22109924``
197 1.1 christos
198 1.1 christos Oversized RSA key material in a DNSKEY record was only rejected after
199 1.1 christos it had been converted, allocating memory proportional to the record
200 1.1 christos size. Such records are now rejected before conversion, as are Ed25519
201 1.1 christos and Ed448 keys with trailing bytes that were previously silently
202 1.1 christos ignored. :gl:`#4537` :gl:`!12560`
203 1.1 christos
204 1.1 christos Bug Fixes
205 1.1 christos ~~~~~~~~~
206 1.1 christos
207 1.1 christos - Prevent a crash when using both dns64 and filter-a. ``bce5d10d18``
208 1.1 christos
209 1.1 christos An assertion failure was possible when using both `dns64` and the
210 1.1 christos `filter-a` plugin simultaneously; this has been fixed. :gl:`#5979`
211 1.1 christos :gl:`!12663`
212 1.1 christos
213 1.1 christos - Fix update-policy grant external address passing. ``b1e955c326``
214 1.1 christos
215 1.1 christos Only TCP client addresses are supposed to be passed to an `external`
216 1.1 christos handler for the associated `update-policy` rule, but UDP client
217 1.1 christos addresses were also being passed. This could have caused the external
218 1.1 christos handler to return a result it otherwise wouldn't. This has been fixed.
219 1.1 christos :gl:`#6061` :gl:`!12555`
220 1.1 christos
221 1.1 christos - Missing required NSEC3 for delegation not detected. ``e84ed2e9d7``
222 1.1 christos
223 1.1 christos A missing required NSEC3 record for an insecure delegation in a non
224 1.1 christos OPTOUT range was not being detected. This has been fixed. :gl:`#6063`
225 1.1 christos :gl:`!12611`
226 1.1 christos
227 1.1 christos - Tighten EUI48 and EUI48 text parsing. ``ff50f2cdf1``
228 1.1 christos
229 1.1 christos Malformed EUI48 and EUI64 records could be accepted. This has been
230 1.1 christos fixed. :gl:`#6082` :gl:`!12521`
231 1.1 christos
232 1.1 christos - GeoIP ACL state can be stale or wrong after reload. ``63baf425b3``
233 1.1 christos
234 1.1 christos `named` caches GeoIP information after looking it up, but the cached
235 1.1 christos information was not invalidated when the GeoIP database was reloaded,
236 1.1 christos so it could continue to be used. We now invalidate existing cached
237 1.1 christos GeoIP information as part of the reloading process. :gl:`#6083`
238 1.1 christos :gl:`!12662`
239 1.1 christos
240 1.1 christos - Honor DNSSEC policy key tag ranges. ``b82e5834b7``
241 1.1 christos
242 1.1 christos When a DNSSEC policy configured a non-default tag-range, dnssec-keygen
243 1.1 christos and dnssec-ksr could accept generated keys outside that range. Both
244 1.1 christos tools now honor the configured minimum and maximum key tags.
245 1.1 christos :gl:`#6091` :gl:`!12549`
246 1.1 christos
247 1.1 christos - Fix double free in mdig when EDNS options are specified.
248 1.1 christos ``af5bd0b0ff``
249 1.1 christos
250 1.1 christos When the default_query is cloned the EDNS options need to be cloned
251 1.1 christos rather than the pointer copied. The old behaviour results in a double
252 1.1 christos free of the options. This has been fixed. :gl:`#6095` :gl:`!12661`
253 1.1 christos
254 1.1 christos - Fix a crash when an IXFR falls back to AXFR with updates still
255 1.1 christos pending. ``e34062bc7e``
256 1.1 christos
257 1.1 christos When a secondary zone received an incremental transfer (IXFR) and the
258 1.1 christos primary then caused named to fall back to a full transfer (AXFR) while
259 1.1 christos some of the already-received incremental changes were still waiting to
260 1.1 christos be applied, named could later crash when that transfer finished. The
261 1.1 christos pending changes are now discarded correctly before the AXFR retry.
262 1.1 christos :gl:`#6114` :gl:`!12624`
263 1.1 christos
264 1.1 christos - Fix DS requests to parental agents over TLS. ``55830d30f6``
265 1.1 christos
266 1.1 christos TLS configuration for parental agents was being ignored when sending
267 1.1 christos DS requests. This has been fixed. :gl:`#6135` :gl:`!12613`
268 1.1 christos
269 1.1 christos - Fix a crash when resolving names below a cached DNAME. ``b94e940f52``
270 1.1 christos
271 1.1 christos A recursive resolver could crash when it answered a query for a name
272 1.1 christos beneath a cached DNAME while that same DNAME record was concurrently
273 1.1 christos refreshed or evicted from the cache. :gl:`#6182` :gl:`!12593`
274 1.1 christos
275 1.1 christos - Rndc-confgen `-q` (quiet) option is documented but doesn't work.
276 1.1 christos ``7e4a7ca1a7``
277 1.1 christos
278 1.1 christos The command line parsing in rndc-confgen was broken so `rndc-confgen
279 1.1 christos -q` did not work. This has been fixed. :gl:`#6187` :gl:`!12575`
280 1.1 christos
281 1.1 christos - Enforce query ACLs for redirect zones and searched DLZs.
282 1.1 christos ``bc69876b2e``
283 1.1 christos
284 1.1 christos Queries answered from redirect zones or searched DLZ databases did not
285 1.1 christos consistently honor `allow-query` and `allow-query-on`, potentially
286 1.1 christos exposing restricted DNS data to excluded clients or through excluded
287 1.1 christos listening addresses. These ACLs are now enforced before redirect or
288 1.1 christos DLZ data is returned. :gl:`#6251`, #6252 :gl:`!12646`
289 1.1 christos
290 1.1 christos - Check "asnum" validity in GeoIP ACLs. ``28c2bfdc7b``
291 1.1 christos
292 1.1 christos We now check the validity of autonomous system (AS) numbers when
293 1.1 christos parsing GeoIP ACLs that use `asnum` elements at configuration time.
294 1.1 christos
295 1.1 christos `asnum` values start with an optional case-insensitive "AS" prefix,
296 1.1 christos followed only by decimal digits, with no spaces or other extraneous
297 1.1 christos characters. The value represented cannot exceed 2^32. :gl:`#6255`
298 1.1 christos :gl:`!12511`
299 1.1 christos
300 1.1 christos - Prevent crashes while reporting DNSSEC signing statistics.
301 1.1 christos ``c190514f0a``
302 1.1 christos
303 1.1 christos Servers with zone-statistics full could terminate while reporting
304 1.1 christos DNSSEC signing statistics for a zone tracking adding more than four
305 1.1 christos signing keys. :gl:`#6256` :gl:`!12674`
306 1.1 christos
307 1.1 christos - Fix various nits in the netmgr code. ``c28cdad51b``
308 1.1 christos
309 1.1 christos The MR consists of couple of small fixes and uncaught errors in the
310 1.1 christos Network Manager. :gl:`#6257` :gl:`!12576`
311 1.1 christos
312 1.1 christos - Fix a crash on remote-servers lists that reference themselves.
313 1.1 christos ``aaae614f9d``
314 1.1 christos
315 1.1 christos Since 9.21.16 and 9.20.17, a remote-servers, primaries, masters, or
316 1.1 christos parental-agents list that referenced itself, directly or through
317 1.1 christos another list, made named crash on startup or reconfiguration. Such
318 1.1 christos references are again skipped and the remaining entries in the list are
319 1.1 christos used, as in earlier versions. :gl:`#6287` :gl:`!12604`
320 1.1 christos
321 1.1 christos - A record from outside a response policy zone could stop named.
322 1.1 christos ``d135513b37``
323 1.1 christos
324 1.1 christos A response policy zone transferred from a primary can contain a record
325 1.1 christos whose name lies outside the zone. Such a record could stop named, both
326 1.1 christos when it arrived and again at every startup afterwards, because a
327 1.1 christos secondary keeps it in its own copy of the zone. Records like this are
328 1.1 christos now rejected and logged; previously one could also silently create a
329 1.1 christos policy entry for an unrelated name. :gl:`#6304` :gl:`!12543`
330 1.1 christos
331 1.1 christos - "rndc flushtree ." failed to flush the cache. ``96e8b585ed``
332 1.1 christos
333 1.1 christos `rndc flushtree` flushes cache data below a specified name. If the
334 1.1 christos name specified is the DNS root, it should fully empty the cache, the
335 1.1 christos same as `rndc flush`. However, there was a bug causing the command,
336 1.1 christos in that case, to have no effect on the cache at all; this has been
337 1.1 christos fixed. :gl:`#6308` :gl:`!12582`
338 1.1 christos
339 1.1 christos - Invalid key-store configuration could abort the DNSSEC tools.
340 1.1 christos ``1d796ab072``
341 1.1 christos
342 1.1 christos Invalid configured key-stores named "key-directory" in configuration
343 1.1 christos files could abort the DNSSEC tools. This has been fixed. :gl:`#6313`
344 1.1 christos :gl:`!12653`
345 1.1 christos
346 1.1 christos - NSEC signature set could bypass the secure-delegation check.
347 1.1 christos ``c966177f6c``
348 1.1 christos
349 1.1 christos When proving that a delegation is insecure, the validator bounded an
350 1.1 christos NSEC record's authority by the signer of whichever RRSIG happened to
351 1.1 christos come first in the record's signature set, rather than the signature
352 1.1 christos that actually verified. A grandparent NSEC padded with an extra,
353 1.1 christos unverifiable signature could therefore pass the check that keeps such
354 1.1 christos proofs from reaching below a signed child zone. The validator now
355 1.1 christos requires every signature on the NSEC to name the same signer and
356 1.1 christos refuses proofs whose signature set is malformed or larger than
357 1.1 christos max-validations-per-fetch allows. :gl:`#6321`
358 1.1 christos
359 1.1 christos - Fix a possible nsupdate issue when using GSS-TSIG. ``4ddcab2d3c``
360 1.1 christos
361 1.1 christos The :iscman:`nsupdate` process could terminate unexpectedly when using
362 1.1 christos the GSS-TSIG mode executed with the :option:`nsupdate -g` option. This
363 1.1 christos has been fixed. :gl:`#6325` :gl:`!12588`
364 1.1 christos
365 1.1 christos - Fix isccc_alist_define error paths. ``af1349552a``
366 1.1 christos
367 1.1 christos If there is an out of memory error in isccc_alist_define a memory leak
368 1.1 christos (the sexpr holding the key name) or a double free (value) could occur.
369 1.1 christos This has been fixed. :gl:`#6329` :gl:`!12636`
370 1.1 christos
371 1.1 christos - Check for empty 'endpoints' list. ``23f58af443``
372 1.1 christos
373 1.1 christos Configuring an `http` block with `endpoints {};` previously caused a
374 1.1 christos crash in `named`. This is now rejected earlier by the configuration
375 1.1 christos check. :gl:`#6330` :gl:`!12552`
376 1.1 christos
377 1.1 christos - Named could crash with a single-element geoip sortlist. ``0e996a4d3b``
378 1.1 christos
379 1.1 christos If `named` was configured with a single-element sortlist containing a
380 1.1 christos `geoip` ACL element, any matching query triggered an assertion
381 1.1 christos failure. This has been fixed. :gl:`#6342` :gl:`!12583`
382 1.1 christos
383 1.1 christos - Prevent out-of-bailiwick CNAMEs from evicting cached records.
384 1.1 christos ``cdedd4acd5``
385 1.1 christos
386 1.1 christos A recursive resolver could remove valid cached records when a DNS
387 1.1 christos response contained an out-of-bailiwick CNAME with the same owner name.
388 1.1 christos Out-of-bailiwick data is now discarded before it can modify the cache.
389 1.1 christos :gl:`#6345` :gl:`!12651`
390 1.1 christos
391 1.1 christos - Restore periodic cleanup of stale resolver address data.
392 1.1 christos ``356f4013f8``
393 1.1 christos
394 1.1 christos Stale resolver address data could remain cached until memory pressure
395 1.1 christos or an explicit flush. Correct the cleanup interval so it is removed
396 1.1 christos periodically. :gl:`#6346` :gl:`!12589`
397 1.1 christos
398 1.1 christos - Fix named-checkconf/named crash with malformed key name.
399 1.1 christos ``9f218f6aaf``
400 1.1 christos
401 1.1 christos When a primary/remote-server key name was malformed, named-checkconf
402 1.1 christos and named were both crashing (after warning about the invalid key
403 1.1 christos name). This is now fixed. :gl:`#6362` :gl:`!12639`
404 1.1 christos
405 1.1 christos - Fix -Wformat-truncation warning in totext_in_wks() ``f97c2bea40``
406 1.1 christos
407 1.1 christos BIND 9 failed to build with GCC 16 at -O3: rendering a WKS record as
408 1.1 christos text triggered a -Wformat-truncation error, which is fatal in
409 1.1 christos developer builds. The port number is now printed with a 16-bit format
410 1.1 christos specifier, so the compiler can see it always fits the output buffer.
411 1.1 christos :gl:`!12542`
412 1.1 christos
413 1.1 christos - Fix off-by-one errors caused by magic hardcoded values. ``726c6cb795``
414 1.1 christos
415 1.1 christos Fix off-by-one comparinson errors: "named -p http=" dropped the first
416 1.1 christos digit of the given port (for example, "http=8080" selected port 80)
417 1.1 christos and now uses the port as given, and "named-rrchecker -C" compared only
418 1.1 christos part of the "CLASS" prefix when filtering generic class names, which
419 1.1 christos was harmless in practice but is now corrected. :gl:`!12616`
420 1.1 christos
421 1.1 christos - Hmac_verify() now accepts truncated HMACs only when requested.
422 1.1 christos ``c81b111496``
423 1.1 christos
424 1.1 christos The hmac_verify() function incorrectly compares only up to
425 1.1 christos 'sig->length' bytes, but the signature and its length should not be
426 1.1 christos trusted, e.g. in case if it comes from a user query.
427 1.1 christos
428 1.1 christos Don't accept signatures which length isn't equal to the expected
429 1.1 christos calculated HMAC length unless it is explicitly requested by the
430 1.1 christos caller, e.g. for truncated TSIG [1] support.
431 1.1 christos
432 1.1 christos [1] https://datatracker.ietf.org/doc/html/rfc8945#name-tsig-truncation
433 1.1 christos -policy :gl:`!12629`
434 1.1 christos
435 1.1 christos - Prevent resolver crashes while processing DNS over TCP. ``81b3b6d89f``
436 1.1 christos
437 1.1 christos Recursive resolvers could terminate with an assertion failure while
438 1.1 christos processing DNS responses over TCP under sustained traffic. The failure
439 1.1 christos was observed on resolvers configured globally with forward only; the
440 1.1 christos same transport path is also used by iterative resolution. This has
441 1.1 christos been fixed. :gl:`!12537`
442 1.1 christos
443 1.1 christos
444