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