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