changelog-9.20.27.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.27
13 1.1 christos ------------
14 1.1 christos
15 1.1 christos New Features
16 1.1 christos ~~~~~~~~~~~~
17 1.1 christos
18 1.1 christos - Disclose active Negative Trust Anchors with Extended DNS Error 33.
19 1.1 christos ``566e7018278``
20 1.1 christos
21 1.1 christos A Negative Trust Anchor (RFC 7646) turns off DNSSEC validation for a
22 1.1 christos domain, so a name that would normally fail validation resolves
23 1.1 christos instead. named now marks such answers with Extended DNS Error code 33,
24 1.1 christos "Negative Trust Anchor", so operators can see at a glance when a
25 1.1 christos response came back only because an NTA was in effect. :gl:`#6268`
26 1.1 christos :gl:`!12426`
27 1.1 christos
28 1.1 christos - Add development guidance for AI coding agents under .agents/skills/
29 1.1 christos ``ef651c93709``
30 1.1 christos
31 1.1 christos This adds a set of skill documents that give AI coding agents the
32 1.1 christos project's established practices up front instead of having them
33 1.1 christos rediscovered (or gotten wrong) in every session: the canonical build
34 1.1 christos and test invocations, the memory-allocator contract, the disciplines
35 1.1 christos for RCU mutation, per-loop sharded structures, struct-layout work, and
36 1.1 christos flight-recorder debugging of concurrency bugs, plus the commit and
37 1.1 christos merge-request conventions. :gl:`!12401`
38 1.1 christos
39 1.1 christos - Add more unit tests for isc_time API. ``9d6855ef735``
40 1.1 christos
41 1.1 christos While working on internal 64-bit time for BIND 9, the unit test suite
42 1.1 christos for isc_time API has been extended.
43 1.1 christos
44 1.1 christos Backport the unit tests from 64-bit time branch to the main branch.
45 1.1 christos This should make the unit tests for isc_time API (mostly) complete.
46 1.1 christos
47 1.1 christos Related to #2959 :gl:`!12432`
48 1.1 christos
49 1.1 christos Feature Changes
50 1.1 christos ~~~~~~~~~~~~~~~
51 1.1 christos
52 1.1 christos - Batch qp transaction for RPZ updates. ``cb40fb91fa2``
53 1.1 christos
54 1.1 christos RPZ was built around fine-grained locking, but that forces the use of
55 1.1 christos many small qp transactions. With this MR, we switch qp transaction to
56 1.1 christos handle the full update to the rpz summary structure. While this
57 1.1 christos serializes the RPZ updates, the reduced overhead from batching qp
58 1.1 christos transactions more than compensates for it and results in improvements
59 1.1 christos for big RPZ zones. :gl:`#5787`, #6270 :gl:`!12493`
60 1.1 christos
61 1.1 christos - Pass the work callback result to the done callback. ``65cdb7c7613``
62 1.1 christos
63 1.1 christos The `isc_work` callback now returns `isc_result_t` and the value is
64 1.1 christos handed to the done callback, so the callers no longer need their own
65 1.1 christos result-passing state. :gl:`!12391`
66 1.1 christos
67 1.1 christos Bug Fixes
68 1.1 christos ~~~~~~~~~
69 1.1 christos
70 1.1 christos - Dig +yaml producing invalid YAML when a lookup fails. ``65d1776959e``
71 1.1 christos
72 1.1 christos When "dig +yaml" was run and no server could be reached, dig printed
73 1.1 christos its plain-text startup banner (the "; \<\<\>\> DiG ..." and ";; global
74 1.1 christos options" lines) ahead of the machine-readable output, so the result
75 1.1 christos was not valid YAML and could not be parsed. dig no longer emits that
76 1.1 christos banner in YAML mode. As part of the same change, the banner is now
77 1.1 christos built only after the whole command line has been read, so options
78 1.1 christos given after the query name (such as +nocmd, +short and +yaml) are
79 1.1 christos correctly reflected in it. :gl:`#1230` :gl:`!12430`
80 1.1 christos
81 1.1 christos - Ensure NSEC authority does not cross zonecut boundary. ``0baaddd096a``
82 1.1 christos
83 1.1 christos When using a cached NSEC record to prove that a delegation is
84 1.1 christos insecure, we now check that the signer name in the corresponding RRSIG
85 1.1 christos is not above a known secure delegation point. This prevents a signed
86 1.1 christos namespace from being downgraded to insecure using an NSEC record from
87 1.1 christos the grandparent zone. :gl:`#5967` :gl:`!12394`
88 1.1 christos
89 1.1 christos - Treat non canonical RPZ prefixes as any other failure. ``17f0828b460``
90 1.1 christos
91 1.1 christos RPZ prefixes that were not encoded in canonical form do not work.
92 1.1 christos Treat them as any other encoding error. :gl:`#6043` :gl:`!12482`
93 1.1 christos
94 1.1 christos - Properly prevent TSIG generation command line injection attacks.
95 1.1 christos ``f777451d261``
96 1.1 christos
97 1.1 christos When key names are generated with `rndc-confgen`, `tsig-keygen` and
98 1.1 christos `ddns-confgen`, special characters must be escaped to ensure the
99 1.1 christos configuration is parsed correctly. :gl:`#6071` :gl:`!12396`
100 1.1 christos
101 1.1 christos - Dig with IDN output could leak memory on ISC_R_NOSPACE retry.
102 1.1 christos ``c4e53b59b2e``
103 1.1 christos
104 1.1 christos The IDN to text display call back could leak the memory holding the
105 1.1 christos converted name if it did not fit into the buffer. This has been
106 1.1 christos fixed. :gl:`#6073` :gl:`!12483`
107 1.1 christos
108 1.1 christos - Dnssec-signzone had a potential heap bounds overflow write.
109 1.1 christos ``994c3bd4323``
110 1.1 christos
111 1.1 christos It was possible for `dnssec-signzone` to overflow array bounds while
112 1.1 christos signing. This has been fixed. :gl:`#6076` :gl:`!12503`
113 1.1 christos
114 1.1 christos - Restore SMF support on Solaris and illumos. ``8bde9318f63``
115 1.1 christos
116 1.1 christos SMF support on Solaris and illumos was silently dropped by a build
117 1.1 christos system rewrite in 2018; it is now detected and enabled again.
118 1.1 christos :gl:`#6096` :gl:`!12456`
119 1.1 christos
120 1.1 christos - Fix NULL pointer dereference in dnstap-read. ``9c459b1854d``
121 1.1 christos
122 1.1 christos It was possible to dereference a NULL pointer in dnstap-read causing
123 1.1 christos it to exit on a malformed DNSTAP file. This has been fixed.
124 1.1 christos :gl:`#6124` :gl:`!12494`
125 1.1 christos
126 1.1 christos - Change catz coo locking. ``78265c8f6fc``
127 1.1 christos
128 1.1 christos Catalog zones might need to inspect the change-of-ownership records of
129 1.1 christos other catalog zones, which required to release the lock in the middle
130 1.1 christos of certain operations, leading to possible race conditions.
131 1.1 christos
132 1.1 christos Since the operations on change-of-ownership records are limited, we
133 1.1 christos can instead use a design with a second lock protecting the
134 1.1 christos change-of-ownership records on read. We structure the API so that
135 1.1 christos holding two change-of-ownership locks at the same time is impossible.
136 1.1 christos :gl:`#6131` :gl:`!12410`
137 1.1 christos
138 1.1 christos - Treat an unusable NSEC3 chain as a verification failure.
139 1.1 christos ``879a383ef16``
140 1.1 christos
141 1.1 christos When transferring in a mirror zone, DNSSEC verification could
142 1.1 christos incorrectly succeed when the zone had an invalid `NSEC3PARAM` record,
143 1.1 christos leading to subsequent validation failures. This has been fixed.
144 1.1 christos :gl:`#6136` :gl:`!12431`
145 1.1 christos
146 1.1 christos - Unterminated OpenSSL private-key `Label:` field can be read past its
147 1.1 christos parser buffer. ``932581b74bd``
148 1.1 christos
149 1.1 christos Check that the string encoded in the Label: field of the .private file
150 1.1 christos of a key pair is NUL terminated and the correct length. Reject the
151 1.1 christos .private file if it is not. :gl:`#6193` :gl:`!12417`
152 1.1 christos
153 1.1 christos - Negative caching stopped working with stale-answer-client-timeout 0.
154 1.1 christos ``2687d16ed2f``
155 1.1 christos
156 1.1 christos With "stale-answer-client-timeout 0" configured, every client query
157 1.1 christos for a name cached as NXDOMAIN or NODATA was sent on to the
158 1.1 christos authoritative servers, even while the cached negative answer was still
159 1.1 christos within its TTL, so the resolver effectively lost negative caching.
160 1.1 christos Negative answers are now refreshed only once they have actually gone
161 1.1 christos stale. :gl:`#6245` :gl:`!12384`
162 1.1 christos
163 1.1 christos - MacOS byte swapping macros already defined. ``5c1d3df49c0``
164 1.1 christos
165 1.1 christos Don't redefine them if the development environment already defines
166 1.1 christos them. :gl:`#6250` :gl:`!12406`
167 1.1 christos
168 1.1 christos - Use memmove in isc_sockaddr_fromin/isc_sockaddr_fromin6.
169 1.1 christos ``3f3c82292c9``
170 1.1 christos
171 1.1 christos Use memmove instead of direct assignment from the source pointer
172 1.1 christos because the source pointer is not guaranteed to be correctly aligned.
173 1.1 christos :gl:`#6260` :gl:`!12449`
174 1.1 christos
175 1.1 christos - Fix compilation on GNU/Hurd. ``20f5580e017``
176 1.1 christos
177 1.1 christos Fix compilation issues on GNU/Hurd. :gl:`#6285` :gl:`!12496`
178 1.1 christos
179 1.1 christos - Restore arc4random() detection dropped in the v9.21.14 merge.
180 1.1 christos ``86ad6866eeb``
181 1.1 christos
182 1.1 christos Commit 4db9e5d90e2 ("Use arc4random for CSPRNG when available", part
183 1.1 christos of the CVE-2025-40780 fix) guarded the arc4random() code paths in
184 1.1 christos lib/isc/random.h and lib/isc/random.c with HAVE_ARC4RANDOM and added
185 1.1 christos the corresponding function check to meson.build. The manual conflict
186 1.1 christos resolution in merge c2a672bbaef ("Merge tag 'v9.21.14'") kept the code
187 1.1 christos changes but dropped the meson.build hunk, so HAVE_ARC4RANDOM was never
188 1.1 christos defined and platforms with arc4random() (macOS and the BSDs) silently
189 1.1 christos fell back to the internal ChaCha-based CSPRNG. Restore the check.
190 1.1 christos
191 1.1 christos Assisted-by: Claude:claude-fable-5 :gl:`!12452`
192 1.1 christos
193 1.1 christos
194