2025-01-16 10:39:11 +01:00
|
|
|
.. Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
|
|
..
|
|
|
|
.. SPDX-License-Identifier: MPL-2.0
|
|
|
|
..
|
|
|
|
.. This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
.. License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
.. file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
..
|
|
|
|
.. See the COPYRIGHT file distributed with this work for additional
|
|
|
|
.. information regarding copyright ownership.
|
|
|
|
|
|
|
|
Notes for BIND 9.21.4
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
Security Fixes
|
|
|
|
~~~~~~~~~~~~~~
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- DNS-over-HTTPS flooding fixes. :cve:`2024-12705`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
Fix DNS-over-HTTPS implementation issues that arise under heavy
|
2025-01-16 10:39:11 +01:00
|
|
|
query load. Optimize resource usage for :iscman:`named` instances that
|
2025-01-16 10:41:20 +01:00
|
|
|
accept queries over DNS-over-HTTPS.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
Previously, :iscman:`named` processed all incoming HTTP/2 data at
|
2025-01-16 10:39:11 +01:00
|
|
|
once, which could overwhelm the server, especially when dealing with
|
2025-01-16 10:41:20 +01:00
|
|
|
clients that sent requests but did not wait for responses. That has been
|
2025-01-16 10:39:11 +01:00
|
|
|
fixed. Now, :iscman:`named` handles HTTP/2 data in smaller chunks and
|
|
|
|
throttles reading until the remote side reads the response data. It
|
|
|
|
also throttles clients that send too many requests at once.
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
In addition, :iscman:`named` now evaluates excessive streams opened by
|
|
|
|
clients that include no DNS data, which is considered "flooding." It
|
|
|
|
logs these clients and drops connections from them. :gl:`#4795`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
In some cases, :iscman:`named` could leave DNS-over-HTTPS
|
|
|
|
connections in the `CLOSE_WAIT` state indefinitely. That has also been
|
|
|
|
fixed. :gl:`#5083`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
ISC would like to thank Jean-François Billaud for his assistance with
|
|
|
|
investigating this issue.
|
|
|
|
|
|
|
|
- Limit additional section processing for large RDATA sets.
|
|
|
|
:cve:`2024-11187`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
|
|
|
When answering queries, don't add data to the additional section if
|
|
|
|
the answer has more than 13 names in the RDATA. This limits the number
|
|
|
|
of lookups into the database(s) during a single client query, reducing
|
2025-01-16 10:41:20 +01:00
|
|
|
the query-processing load. :gl:`#5034`
|
|
|
|
|
|
|
|
ISC would like to thank Toshifumi Sakaguchi for bringing this
|
|
|
|
vulnerability to our attention.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
|
|
|
New Features
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
- Add Extended DNS Error Code 22 - No Reachable Authority.
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
When the resolver is trying to query an authoritative server and
|
|
|
|
eventually times out, a SERVFAIL answer is given to the client. Add
|
2025-01-16 10:39:11 +01:00
|
|
|
the Extended DNS Error Code 22 - No Reachable Authority to the
|
|
|
|
response. :gl:`#2268`
|
|
|
|
|
|
|
|
- Add "Zone has [AAAA/A] records but is not served by IPv[6/4]"
|
|
|
|
warnings.
|
|
|
|
|
|
|
|
Check that zones with AAAA records are served by IPv6 servers and that
|
|
|
|
zones with A records are served by IPv4 servers. Sometimes, IPv6
|
|
|
|
services are accidentally misconfigured and zones with IPv6 (AAAA)
|
|
|
|
address records are not served by DNS servers with IPv6 addresses,
|
|
|
|
which means they need to use translation devices to look up those IPv6
|
|
|
|
addresses. The reverse is also sometimes true: zones with A records
|
|
|
|
are not resolvable over IPv4 when they should be. To prevent this,
|
|
|
|
BIND now looks for these misconfigured zones and issues a warning if
|
|
|
|
they are found. :gl:`#4370`
|
|
|
|
|
|
|
|
- Add a new option to configure the maximum number of outgoing queries
|
|
|
|
per client request.
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
The configuration option :any:`max-query-count` sets how many outgoing
|
|
|
|
queries per client request are allowed. The existing
|
|
|
|
:any:`max-recursion-queries` value is the number of permissible queries for a
|
2025-01-16 10:39:11 +01:00
|
|
|
single name and is reset on every CNAME redirection. This new option
|
|
|
|
is a global limit on the client request. The default is 200.
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
The default for :any:`max-recursion-queries` is changed from 32 to
|
|
|
|
50. This allows :any:`named` to send a few more queries
|
|
|
|
while looking up a single name. :gl:`#4980` :gl:`#4921`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-17 22:53:57 +01:00
|
|
|
- Use the Server Name Indication (SNI) extension for all outgoing TLS
|
|
|
|
connections.
|
|
|
|
|
|
|
|
This improves compatibility with other DNS server software.
|
|
|
|
:gl:`#5099`
|
|
|
|
|
2025-01-16 10:39:11 +01:00
|
|
|
Removed Features
|
|
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Remove the ``dnssec-must-be-secure`` feature. :gl:`#4482`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Remove ``sortlist`` option.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
The ``sortlist`` option, which was deprecated in BIND 9.20, has now been
|
2025-01-16 10:39:11 +01:00
|
|
|
removed. :gl:`#4665`
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Remove support for fixed RRset ordering.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
Remove the ``fixed`` value from the :any:`rrset-order` option and the
|
|
|
|
``--enable-fixed-rrset`` option from the ``./configure`` script.
|
|
|
|
:gl:`#4666`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Remove ``trusted-keys`` and ``managed-keys`` options.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
|
|
|
These options have been deprecated in 9.19 in favor of the
|
2025-01-16 10:41:20 +01:00
|
|
|
:any:`trust-anchors` option and are now being removed. :gl:`#5080`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
|
|
|
Feature Changes
|
|
|
|
~~~~~~~~~~~~~~~
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- The configuration clauses ``parental-agents`` and ``primaries`` are renamed to
|
|
|
|
:any:`remote-servers`.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
The top blocks ``primaries`` and ``parental-agents`` are no longer
|
|
|
|
preferred and should be renamed to :any:`remote-servers`. The zone
|
|
|
|
statements :any:`parental-agents` and :any:`primaries` are still used, and may
|
|
|
|
refer to any :any:`remote-servers` top block. :gl:`#4544`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
|
|
|
Bug Fixes
|
|
|
|
~~~~~~~~~
|
|
|
|
|
2025-01-17 22:53:57 +01:00
|
|
|
- Querying an NSEC3-signed zone for an empty record could trigger an
|
|
|
|
assertion.
|
|
|
|
|
|
|
|
A bug in the qpzone database could trigger a crash when querying for a
|
|
|
|
deleted name, or a newly added empty non-terminal name, in an
|
|
|
|
NSEC3-signed zone. This has been fixed. :gl:`#5108`
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Fix :iscman:`nsupdate` hang when processing a large update.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
To mitigate DNS flood attacks over a single TCP connection, throttle
|
|
|
|
the connection when the other side does not read the data. Throttling
|
|
|
|
should only occur on server-side sockets, but erroneously also
|
|
|
|
happened for :iscman:`nsupdate`, which acts as a client. When
|
|
|
|
:iscman:`nsupdate` started throttling the connection, it never
|
|
|
|
attempted to read again. This has been fixed. :gl:`#4910`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
|
|
|
- Fix possible assertion failure when reloading server while processing
|
2025-01-16 10:41:20 +01:00
|
|
|
update policy rules. :gl:`#5006`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Preserve cache across reconfig when using :any:`attach-cache`.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
When the :any:`attach-cache` option is used in the ``options`` block with an
|
2025-01-16 10:39:11 +01:00
|
|
|
arbitrary name, it causes all views to use the same cache. Previously,
|
|
|
|
this configuration caused the cache to be deleted and a new cache
|
2025-01-16 10:41:20 +01:00
|
|
|
to be created every time the server was reconfigured. This has been fixed.
|
2025-01-16 10:39:11 +01:00
|
|
|
:gl:`#5061`
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Resolve the spurious drops in performance due to glue cache.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
For performance reasons, the returned glue records are cached on the
|
2025-01-16 10:39:11 +01:00
|
|
|
first use. The current implementation could randomly cause a
|
|
|
|
performance drop and increased memory use. This has been fixed.
|
|
|
|
:gl:`#5064`
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Fix :iscman:`dnssec-signzone` signing non-DNSKEY RRsets with revoked keys.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
:any:`dnssec-signzone` was using revoked keys for signing RRsets other than
|
2025-01-16 10:39:11 +01:00
|
|
|
DNSKEY. This has been corrected. :gl:`#5070`
|
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Disable deterministic ECDSA for FIPS builds.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
`FIPS 186-5 <https://csrc.nist.gov/pubs/fips/186-5/final>`_ allows use
|
|
|
|
of deterministic ECDSA (Section 6.3), which is compatible with
|
|
|
|
:rfc:`6979`, but OpenSSL seems to follow `FIPS 186-4
|
|
|
|
<https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf>`_
|
|
|
|
(Section 6.3), which only allows random ``k`` values. This causes ``k``
|
|
|
|
value generation to fail for OpenSSL >= 3.2, making BIND unable to
|
|
|
|
generate ECDSA signatures when in FIPS mode.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
This signing is now fixed by not using deterministic ECDSA when FIPS mode is active. :gl:`#5072`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Fix improper handling of unknown directives in ``resolv.conf``.
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
The line after an unknown directive in ``resolv.conf`` could accidentally be
|
|
|
|
skipped, potentially affecting :iscman:`dig`, :iscman:`host`,
|
|
|
|
:iscman:`nslookup`, :iscman:`nsupdate`, or :iscman:`delv`. This has been
|
|
|
|
fixed. :gl:`#5084`
|
2025-01-16 10:39:11 +01:00
|
|
|
|
2025-01-16 10:41:20 +01:00
|
|
|
- Fix response policy zones and catalog zones with an ``$INCLUDE`` statement
|
2025-01-16 10:39:11 +01:00
|
|
|
defined.
|
|
|
|
|
|
|
|
Response policy zones (RPZ) and catalog zones were not working
|
2025-01-16 10:41:20 +01:00
|
|
|
correctly if they had an ``$INCLUDE`` statement defined. This has been
|
2025-01-16 10:39:11 +01:00
|
|
|
fixed. :gl:`#5111`
|
|
|
|
|
|
|
|
|