Home | History | Annotate | Download | only in ans3
History log of /src/external/mpl/bind/dist/bin/tests/system/fwdfirst/ans3/ans.py
RevisionDateAuthorComments
 1.1  29-Aug-2026  christos branches: 1.1.1;
Initial revision
 1.1.1.1  29-Aug-2026  christos Import bind-9-20-27 (Previous was bind-9-20-24)

iNotes for BIND 9.20.27#
New Features#
Disclose active Negative Trust Anchors with Extended DNS Error 33.
A Negative Trust Anchor (RFC 7646) turns off DNSSEC validation for a
domain, so a name that would normally fail validation resolves instead. named
now marks such answers with Extended DNS Error code 33, "Negative Trust
Anchor", so operators can see at a glance when a response came back only
because an NTA was in effect. [GL #6268]
Feature Changes#
Speed up RPZ policy zone updates.
RPZ updates used to be applied one small step at a time, adding overhead on
large policy zones. Updates are now applied as a single batch, improving
update performance for large RPZ zones, at the cost of no longer overlapping
with concurrent updates. [GL #5787] [GL #6270]
Bug Fixes#
Ensure NSEC authority does not cross zonecut boundary.
When using a cached NSEC record to prove that a delegation is insecure, named
now checks that the signer name in the corresponding RRSIG is not above a
known secure delegation point. This prevents a signed namespace from being
downgraded to insecure using an NSEC record from the grandparent zone.
[GL #5967]
Treat an unusable NSEC3 chain as a verification failure.
When transferring in a mirror zone, DNSSEC verification could incorrectly
succeed when the zone had an invalid NSEC3PARAM record, leading to subsequent
validation failures. This has been fixed. [GL #6136]
Treat non-canonical RPZ prefixes as any other failure.
RPZ prefixes that were not encoded in canonical form did not work. They are now
handled in the same way as any other encoding error. [GL #6043]
Negative caching stopped working with stale-answer-client-timeout set to 0.
Negative answers were re-fetched on every query instead of once they actually
expired, effectively disabling negative caching. This has been fixed.
[GL #6245]
An unterminated OpenSSL private-key Label: field could be read past its parser
buffer.
The Label: field in a .private key file is now checked for length and
NUL-termination. Malformed files are rejected. [GL #6193]
Restore SMF support on Solaris and illumos. [GL #6096]
Fix compilation on GNU/Hurd. [GL #6285]
dig +yaml was producing invalid YAML when a lookup failed.
When no server could be reached, dig printed its plain-text startup banner
ahead of the YAML output, making the result unparsable. dig no longer does
this and correctly reflects options such as +nocmd, +short and +yaml,
regardless of where they appear on the command line. [GL #1230]
Properly prevent TSIG generation command line injection attacks.
When key names are generated with rndc-confgen, tsig-keygen and ddns-confgen,
special characters must be escaped to ensure that the configuration is parsed
correctly. [GL #6071]
Fix a potential heap bounds overflow write in dnssec-signzone.
It was possible for dnssec-signzone to overflow array bounds while signing.
This has been fixed. [GL #6076]
Fix crashes on invalid DNSTAP input in dnstap-read.
Malformed DNSTAP files could trigger a NULL pointer dereference or an
out-of-bounds memory read in dnstap-read. This has been fixed. [GL #6077]
[GL #6124]

Notes for BIND 9.20.26#
Security Fixes#
Correct verification of NSEC3 signer name. (CVE-2026-10723)
Previously, named accepted child-zone NSEC3 records where the first label
equaled the hash of the parent zone as valid parent-zone closest encloser
proofs. This has been fixed.
ISC would like to thank Qifan Zhang of Palo Alto Networks for bringing this
vulnerability to our attention. [GL #5874]
Malformed DNSKEY records could trigger an assertion. (CVE-2026-10822)
Previously, dns_name_fromwire() did not honor the record boundary when
reading names from the wire, allowing malformed records to be accepted when
they should not have been. In particular, malformed DNSKEY records could
trigger an assertion failure when being printed. This has been fixed.
[GL #6004]
Fix handling of RPZ CNAME expansion that returns too-long name.
(CVE-2026-11331)
Previously, if the expansion of a wildcard CNAME RPZ policy resulted in a
name that exceeded the length limit, a self-referential CNAME and the original
address record were returned, allowing the policy to be bypassed. In branches
up to 9.20 this also left query processing in an inconsistent state, which
could trigger an assertion failure. named now returns a YXDOMAIN response,
without the address.
ISC would like to thank Laith Mash'al (0xmshal) for bringing this
vulnerability to our attention. [GL #5856]
Prevent excessive validation work from crafted negative responses.
(CVE-2026-11605)
Previously, a validating resolver could be made to perform a large amount of
DNSSEC validation work in response to a single answer, consuming excessive
CPU. A malicious authoritative server could trigger this by returning a
signed negative answer (NXDOMAIN or NODATA) padded with many
denial-of-existence proof records, which the resolver continued to verify
beyond its per-query validation limit. It now enforces that limit on negative
answers and returns SERVFAIL once the limit is reached. [GL #4463]
Prevent cache exhaustion under sustained attack. (CVE-2026-11622)
Cache memory could become exhausted with expired entries whose memory was not
released, due to a sustained attack on the same DNS name that prevented the
cleanup. This has been fixed. [GL #4760]
Stop accepting invalid signed wildcard records. (CVE-2026-11721)
Signed wildcard responses in which the Labels field in the RRSIG record was
less than the number of labels in the Signer Name field were being incorrectly
accepted. This in turn broke synth-from-dnssec, which depends on such records
being correctly validated. This has been fixed.
ISC would like to thank Qifan Zhang of Palo Alto Networks for bringing this
vulnerability to our attention. [GL #5871]
Do not assert for some specific CNAME and DNAME queries. (CVE-2026-12617)
A bug in the resolver's handling of certain cached DNAME and CNAME responses
could cause named to trigger an assertion failure and exit. An attacker
controlling a domain name and the authoritative DNS server it was hosted on
could exploit this behavior to cause a denial-of-service. This has been
fixed.
ISC would like to thank Qifan Zhang of Palo Alto Networks for bringing this
vulnerability to our attention. [GL #5946]
Prevent crash from malformed NSEC/NSEC3 response. (CVE-2026-13204)
An assertion could be triggered by an improperly signed NOQNAME proof. This
has been fixed.
ISC would like to thank Qifan Zhang of Palo Alto Networks for bringing this
vulnerability to our attention. [GL #5985]
Fix DNSSEC validation bypass via out-of-zone NSEC Next Field. (CVE-2026-13321)
Previously, a malicious zone with out-of-zone NSEC next-owner names could
cause a DNSSEC-validating resolver to cache such a record and, if
synth-from-dnssec was enabled, to generate negative answers for any zone that
was covered by the range. This has been fixed.
ISC would like to thank Qifan Zhang of Palo Alto Networks for bringing this
vulnerability to our attention. [GL #5873]
Reclaim memory promptly when DNSSEC validations are canceled.
When a resolver is flooded with queries that require DNSSEC validation - for
example during a random-subdomain attack - many of those validations are
canceled before they complete. Previously, a canceled validation still kept
its place in the internal work queue and held the associated response in
memory until that queued work eventually ran, so memory could climb sharply
under sustained load. The internal work queue is now dropped as soon as the
validation is canceled, releasing the memory it was holding. [GL #4760]
Removed Features#
Remove the secondary validator in query.c.
Previously, when the additional section of a response was being populated, if
cached data was found with pending trust, it would be opportunistically
validated. The code implementing this validation was not quite formally
correct. Rather than fixing it, the code has been removed: RRsets with
pending trust are now omitted from responses. [GL #5966] [GL #5968] [GL #5972]
Bug Fixes#
Fix a bug in DNS UPDATE processing with inline-signing enabled.
In rare cases the named process could terminate unexpectedly when processing
authorized DNS UPDATE messages in quick succession that were updating a zone
with inline-signing enabled. This has been fixed. [GL #5816]
Properly detect private records before copying.
Previously, an assertion was triggered when trying to copy a private record
to a buffer for modification. named now extends the private type detection and
copies the contents after rejecting invalid private records. [GL #5857]
Tighten referral DS acceptance.
Previously, named accepted DS records for sibling zones when it shouldn't
have. This has been fixed. [GL #5870]
Don't synthesize negative responses with pending NSEC.
If an NSEC record has not yet been validated and is cached with trust
pending, named no longer uses it to synthesize negative responses. [GL #5872]
[GL #5887] [GL #5977]
Check that an NSEC signer is at or above the name to be validated.
A check has been added to ensure that an NSEC record being used as a proof of
nonexistence for a given name is not signed by a name lower in the DNS
hierarchy than the one in question. [GL #5876]
Don't evict DNSSEC-validated cache data on a CD=1 NXDOMAIN.
When a client sent a query with the checking-disabled (CD) bit set and the
answer was NXDOMAIN, the resolver cached that unvalidated negative response
and discarded any DNSSEC-validated records it already held for the same name,
even though the validated data was more trustworthy. A single such response -
including a forged one - could flush validated records from the cache and
force the resolver to fetch them again. The resolver now checks the trust
level of the existing data first and leaves the cache unchanged when it is
already validated. [GL #5877]
Fix a deny-answer-aliases configuration bypass issue.
It was possible to use a maliciously crafted authoritative zone to make a
named resolver synthesize a DNAME "alias" that should have been rejected by
the configured deny-answer-aliases option. This has been fixed. [GL #5930]
Reject external referrals from forwarders.
Under a forward first; policy in a forwarding zone, named could accept NS
records above the forward zone apex from negative responses. This has been
fixed. [GL #5937]
Fix a zone transfer over TLS (XoT) issue when using the opportunistic TLS
mode.
The named process, running as a secondary DNS server and configured to
transfer a zone from a primary server using an encrypted XoT transport in
opportunistic TLS mode (i.e. without peer certificate/hostname validation),
could terminate unexpectedly when the TLS ALPN negotiation with the primary
server was unsuccessful. This has been fixed. [GL #5957]
Unvalidated opt-out NSEC3 could be accepted in insecurity proof.
When determining whether an insecure delegation was legitimate, NSEC3 opt-out
records which had not yet passed validation could be used. This has been
fixed. [GL #5970]
Check wildcard signer and NOQNAME signer match.
A positive wildcard answer, and the NSEC3 proof that the requested name
doesn't exist in the zone, must both be from the same zone. Otherwise, an
NSEC3 from an ancestor zone could be used to interfere with validation.
named now retrieves the signer name from a wildcard response's signature. An
NSEC3 record cannot be used as a NOQNAME proof for the wildcard unless it
exactly matches the name one level above the NSEC3. [GL #5971]
Fix CNAME resolution failure caused by a cached SERVFAIL response.
Under certain circumstances, a cached SERVFAIL response could incorrectly
prevent successful resolution of a CNAME target. This could cause resolution
failures to persist until the cached SERVFAIL entry expired, even when the
CNAME target itself was otherwise resolvable. This has been fixed. [GL #5983]
Reject unsupported RSA DNSKEY shapes during DNSSEC validation.
An authoritative server publishing an RSA DNSKEY with an unusually large
modulus or an exotic public exponent could make each DNSSEC signature check
on a validating recursive resolver noticeably more expensive than for a
normally sized key. Such DNSKEYs are now treated as invalid. [GL #6008]
Fix a bug in GeoIP2 string matching.
When using GeoIP2 ACLs (see acl), named could incorrectly match a name using a
sub-string instead of the full name match. This has been fixed. [GL #6019]
Fix DNS-over-HTTPS (DoH) quota configuration issue.
The http-listener-clients and http-streams-per-connection configuration
options could be truncated to smaller values (or to 0, which means unlimited)
when very large configuration values in excess of 65535 were used. It is very
unlikely that such large values were used in production, and the default
values for the affected options are 300 and 100, respectively. This has been
fixed. [GL #6021]
Truncated reply to a TSIG query no longer stalls the resolver.
When an upstream server returned a truncated reply to a query that named had
signed with TSIG, the resolver could keep waiting for a follow-up UDP packet
that never arrived, stalling the query until it hit the resolver-query-timeout
and the client received no answer. named now treats any reply it cannot
authenticate as an immediate failure and returns SERVFAIL right away as a
defense in depth. [GL #6028]
Ignore updates removing DNSKEY RRset with class ANY.
When a dynamic update is received that removes the DNSKEY (or CDNSKEY, or CDS)
RRset, named now removes all records except the ones that are in use for
signing the zone. [GL #6045]
Ignore 0-byte reads in the TCP read callback.
Callbacks for libuv stream reads do not signal zero-length reads as a failure
signal but rather as EAGAIN/EWOULDBLOCK. This could trigger an assertion when
a zero-length read was pushed onto a PROXYv2 endpoint that had not yet
processed the headers, as it expected a non-NULL region of positive length.
[GL #6140]
Only print per-zone glue stats when zone-statistics is set to full.
The code printing query statistics was ignoring the zone-statistics option.
This has been fixed. [GL #6164]
CDS/CDNSKEY records were not removed when re-configuring the server.
When on an rndc reconfig the DNSSEC policy changes such that it changes the
expected CDNSKEY and/or CDS records in the zone, the RRset should be updated
accordingly. This did not happen when removing digests from the configuration,
or setting cdnskey no;. This has been fixed. [GL #6166]
Fix a crash when querying an empty non-terminal in a wildcard zone in RBTDB.
A query for an empty non-terminal in a wildcard zone served from the RBT zone
database could abort named with an assertion failure. It now returns the
correct NODATA answer. [GL #6170]
Stop reusing outgoing TCP connections the peer has already closed.
Previously, named could hand a new query to an idle forwarder/upstream TCP or
TLS connection that the peer had already closed, causing the query to fail
(and CLOSE-WAIT sockets to pile up). Idle reused connections are now watched,
so a close is noticed and the connection is dropped instead of reused. A new
tcp-reuse-timeout option controls how long an idle outgoing connection is
kept open for reuse (default 5 seconds). [GL #6171]
Fix DNSSEC validation failures for names under an apex DNAME.
DNSSEC validation could fail with SERVFAIL for names covered by a DNAME at
the apex of a signed zone, unless the zone's keys were already validated in
the cache. This regression was introduced by the recent fix for resolver
stalls on CNAME responses to DS queries, and has now been addressed.
[GL #6176]

Notes for BIND 9.20.25#
Note
The BIND 9.20.25 release was withdrawn after the discovery of a regression
in a security fix in it during pre-release testing.

RSS XML Feed