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