]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
5 days ago[9.11] fix: ci: Drop ccache support from CI bind-9.11
Michal Nowak [Thu, 28 May 2026 13:47:24 +0000 (15:47 +0200)] 
[9.11] fix: ci: Drop ccache support from CI

The population of the compile cache is so slow, that a BIND 9 build can
take 20 minutes.

Assisted-by: Claude:claude-opus-4-7
Backport of MR !12127

Merge branch 'backport-mnowak/drop-ccache-support-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!12131

5 days agoDrop ccache support from CI 12131/head
Michal Nowak [Thu, 28 May 2026 10:24:14 +0000 (12:24 +0200)] 
Drop ccache support from CI

The population of the compile cache is so slow, that a BIND 9 build can
take 20 minutes.

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit cbc8664567e374dc305c88f8ffd55c8597e14155)

13 days agoMerge branch 'security-bind-9.11' into bind-9.11
Michał Kępień [Wed, 20 May 2026 13:58:36 +0000 (15:58 +0200)] 
Merge branch 'security-bind-9.11' into bind-9.11

2 weeks ago[v9_11] Set RUNNER_SCRIPT_TIMEOUTs
Michal Nowak [Tue, 12 May 2026 19:25:24 +0000 (21:25 +0200)] 
[v9_11] Set RUNNER_SCRIPT_TIMEOUTs

Backport of MR !11750

Merge branch 'backport-mnowak/set-script-timeouts-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!12009

2 weeks agoGet some useful data out of respdiff even in case of a failure
Michal Nowak [Mon, 11 May 2026 17:20:23 +0000 (19:20 +0200)] 
Get some useful data out of respdiff even in case of a failure

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit 7928127d8b143b30001083cd106cf3519cd9626d)
(cherry picked from commit 3b8e943cf57ac8a5e812c155e7b5c1f0d1b18265)

2 weeks agoPass -r option to respdiff.sh
Michal Nowak [Mon, 11 May 2026 17:19:53 +0000 (19:19 +0200)] 
Pass -r option to respdiff.sh

Tell respdiff.sh where to find the respdiff Python tools (msgdiff.py,
diffsum.py, ...) so the in-tree copy from bind9-qa is used.

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit 4f410ee1e6b7f5a8cceb3331aa5be3dc74680aee)
(cherry picked from commit 0f63c1571807eb8762d3893d3a24299dd0185aab)

2 weeks agoSet RUNNER_SCRIPT_TIMEOUTs
Michal Nowak [Wed, 25 Mar 2026 12:31:49 +0000 (13:31 +0100)] 
Set RUNNER_SCRIPT_TIMEOUTs

Sometimes jobs can get stuck and be terminated by GitLab, leaving us
without artefacts that could contain useful information about why the
job got stuck.

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit e3d2f5ad948f977df67a349601bd4743f6777539)
(cherry picked from commit 69ca6ee3664f5fe25e03c0e30c14867a9e8bfc52)

3 weeks ago[9.11] chg: ci: Mark merged security fixes as "Not released yet"
Michał Kępień [Thu, 7 May 2026 16:15:05 +0000 (18:15 +0200)] 
[9.11] chg: ci: Mark merged security fixes as "Not released yet"

Adjust the triggering rules for the "merged-metadata" CI job so that
merge requests merged into security-* branches are automatically
assigned to the "Not released yet" milestone, just like merge requests
targeting public branches.  This enables merge requests containing
security fixes to be correctly processed by release automation scripts.

Backport of MR !11984

Merge branch 'backport-pspacek/extend-not-released-yet-milestone-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!11990

3 weeks agoMark merged security fixes as "Not released yet"
Petr Špaček [Tue, 5 May 2026 13:04:36 +0000 (15:04 +0200)] 
Mark merged security fixes as "Not released yet"

Adjust the triggering rules for the "merged-metadata" CI job so that
merge requests merged into security-* branches are automatically
assigned to the "Not released yet" milestone, just like merge requests
targeting public branches.  This enables merge requests containing
security fixes to be correctly processed by release automation scripts.

(cherry picked from commit afdf7bed602b5518b23409c1a140a797c4e6de34)

3 weeks agofix: dev: Fix resolver SERVFAILs valid queries and crashes on shutdown
Ondřej Surý [Thu, 7 May 2026 12:35:44 +0000 (14:35 +0200)] 
fix: dev: Fix resolver SERVFAILs valid queries and crashes on shutdown

After a recent change, recursive queries that need internal retries —
long DNSSEC chains, EDNS or cookie renegotiation, TCP fallback —
started failing with SERVFAIL on lookups that previously succeeded,
and named could also crash on shutdown after such failures.  The
max-recursion-queries default is restored to 100 (its prior value),
and the cleanup bug that caused the shutdown crash is fixed.

Closes https://gitlab.isc.org/isc-projects/bind9/-/issues/5951

Merge branch '5951-resolver-resend-rmessage-leak' into 'security-bind-9.11'

See merge request isc-private/bind9!1027

3 weeks ago[v9_11] fix: dev: Pass empty string instead of NULL to ns_client_dumpmessage()
Ondřej Surý [Wed, 6 May 2026 12:13:49 +0000 (14:13 +0200)] 
[v9_11] fix: dev: Pass empty string instead of NULL to ns_client_dumpmessage()

Pass "" instead of NULL to ns_client_dumpmessage() to get the log message printed.

Backport of MR !1022

Merge branch 'backport-ondrej/fix-ns_client_dumpmessage-calls-9.11' into 'security-bind-9.11'

See merge request isc-private/bind9!1026

3 weeks agoRestore max-recursion-queries default to 100
Michal Nowak [Thu, 7 May 2026 09:57:03 +0000 (09:57 +0000)] 
Restore max-recursion-queries default to 100

The 32-query default backported from 9.18+ assumed a max-query-count=200
backstop that 9.11 doesn't have, so every EDNS/cookie/TCP resend ate
into the per-fetch budget; respdiff vs 9.11.24 showed ~5%
NOERROR→SERVFAIL on normal recursion. Restoring the pre-tightening 100
keeps the runaway-loop guard with headroom to spare.

3 weeks ago[v9_11] [CVE-2026-5946] sec: usr: Disable recursion, UPDATE, and NOTIFY for non-IN...
Ondřej Surý [Wed, 6 May 2026 07:33:41 +0000 (09:33 +0200)] 
[v9_11] [CVE-2026-5946] sec: usr: Disable recursion, UPDATE, and NOTIFY for non-IN views

Recursion, dynamic updates (UPDATE), and zone change notifications
(NOTIFY) are now disabled for views with a class other than IN
(such as CHAOS or HESIOD); authoritative service for non-IN zones
(e.g. version.bind in class CHAOS) continues to work as before.
Servers configured with recursion yes in a non-IN view will log a
warning at startup, and named-checkconf flags the same condition.
UPDATE and NOTIFY messages that specify the meta-classes ANY or NONE
in the question section are now rejected with FORMERR.

This addresses a set of closely related security issues collectively
identified as CVE-2026-5946. ISC would like to thank Mcsky23 for
bringing these issues to our attention.

Backport of https://gitlab.isc.org/isc-private/bind9/-/merge_requests/936

Merge branch 'each-security-disable-chaos-recursion-security-bind-9.11' into 'security-bind-9.11'

See merge request isc-private/bind9!1021

3 weeks agoPass empty string instead of NULL to ns_client_dumpmessage()
Ondřej Surý [Wed, 6 May 2026 08:12:35 +0000 (10:12 +0200)] 
Pass empty string instead of NULL to ns_client_dumpmessage()

The two new call sites added by the CLASS-validation work passed NULL
as the reason, but ns_client_dumpmessage() bails out early on a NULL
reason — so the message dump never happened. The intent was to dump
the message and let the follow-up ns_client_log() carry the reason
text, so pass "" to suppress the prefix without short-circuiting the
dump.

(cherry picked from commit 8af39c360407a92ef31bf233b9df760d1bb9fb5f)

3 weeks agoFix rmessage leak in qc-on-resend resend path
Michal Nowak [Thu, 7 May 2026 09:57:03 +0000 (09:57 +0000)] 
Fix rmessage leak in qc-on-resend resend path

The resend error path returned without releasing the rmessage reference
attached earlier in resquery_response(), so the dns_message_t outlived
shutdown and tripped isc_mem_checkdestroyed().

3 weeks ago[9.11] [CVE-2026-3039] sec: usr: Fix GSS-API resource leak
Ondřej Surý [Fri, 1 May 2026 06:41:52 +0000 (08:41 +0200)] 
[9.11] [CVE-2026-3039] sec: usr: Fix GSS-API resource leak

Fixed a memory leak where each GSS-API TKEY negotiation leaked a security context inside the GSS library. An unauthenticated attacker could exhaust server memory by sending repeated TKEY queries to a server with tkey-gssapi-keytab configured. The leaked memory was allocated by the GSS library, bypassing BIND's memory accounting.

Multi-round GSS-API negotiation (GSS_S_CONTINUE_NEEDED) is now rejected, as BIND never supported it correctly and Kerberos/SPNEGO completes in a single round.

Also implemented missing RFC 3645 requirement: the client now verifies that mutual authentication and integrity flags are granted by the GSS-API mechanism (Section 3.1.1).

Closes: https://gitlab.isc.org/isc-projects/bind9/-/issues/5752
Backport of !965

Merge branch 'backport-5752-fix-memory-leak-in-TKEY-negotiation-9.11' into 'security-bind-9.11'

See merge request isc-private/bind9!977

3 weeks agoSkip "deny-answer-address" for non-IN addresses
Evan Hunt [Tue, 17 Mar 2026 20:24:43 +0000 (13:24 -0700)] 
Skip "deny-answer-address" for non-IN addresses

Ensure that we don't attempt an ACL match for answer addresses
when handling a class-CHAOS zone. This is an additional line of
defense for YWH-PGM40640-74.

(cherry picked from commit 4cd3d8e6d866143ddc62df821a1007bf3ee7f083)
(cherry picked from commit fa60101e910346e64fa2a684b903fbcb84d8243b)

3 weeks ago[v9_11] [CVE-2026-3592] sec: usr: Limit resolver server list size
Colin Vidal [Thu, 30 Apr 2026 18:49:47 +0000 (20:49 +0200)] 
[v9_11] [CVE-2026-3592] sec: usr: Limit resolver server list size

When resolving a domain with many nameservers that share overlapping IP addresses (e.g., 10 NS records all pointing at the same set of addresses), BIND could previously waste time querying duplicate addresses and build up excessively large server lists. Deduplicate addresses in the resolver's server list so that each unique IP is only queried once per resolution attempt, regardless of how many NS records point to it and cap the number of addresses stored per nameserver name to 6 (combined A and AAAA), preventing memory and CPU overhead from domains with unusually large NS/glue sets.

Closes isc-projects/bind9#5641

Backport of !909

Merge branch 'backport-5641-selfpointedglue-9.11' into 'security-bind-9.11'

See merge request isc-private/bind9!957

3 weeks agoFix output token and GSS context leaks in TKEY/GSS-API error paths
Ondřej Surý [Fri, 10 Apr 2026 10:51:31 +0000 (12:51 +0200)] 
Fix output token and GSS context leaks in TKEY/GSS-API error paths

In dst_gssapi_acceptctx(), rename outtoken to outtokenp (matching BIND
convention for output pointer parameters) and free the allocated output
token buffer on error in the cleanup path.

In process_gsstkey(), route the empty-principal error path through
cleanup via CLEANUP() instead of returning early, so that the output
token, GSS context, and TSIG key are all freed consistently by the
existing cleanup block.

(cherry picked from commit f2240d2d06a1a68b622bd6b00a52c6fe4274426d)

3 weeks agoReject meta-classes in UPDATE and NOTIFY messages
Mark Andrews [Tue, 3 Mar 2026 23:00:56 +0000 (10:00 +1100)] 
Reject meta-classes in UPDATE and NOTIFY messages

NOTIFY and UPDATE messages must specify a data class in the
QUESTION/ZONE section.  NONE and ANY are meta-classes and not
appropriate here.  Return FORMERR if either is used.

Rejecting messages with a query class of NONE addresses YWH-PGM40640-72,
YWH-PGM40640-82, and YWH-PGM40640-83.  Rejecting messages with a query
class of ANY addresses YWH-PGM40640-87, YWH-PGM40640-88, and
YWH-PGM40640-117.

Fixes: isc-projects/bind9#5778
Fixes: isc-projects/bind9#5782
Fixes: isc-projects/bind9#5783
Fixes: isc-projects/bind9#5797
Fixes: isc-projects/bind9#5798
Fixes: isc-projects/bind9#5853
(cherry picked from commit 7de5160517ae69196d1c323b8627b267cdd10761)
(cherry picked from commit 3c44de9e6252ec1c7742ef02ecc0d6cbf1cde5e9)

3 weeks ago[v9_11] [CVE-2026-5950] sec: usr: Avoid unbounded recursion loop
Colin Vidal [Thu, 30 Apr 2026 15:48:54 +0000 (17:48 +0200)] 
[v9_11] [CVE-2026-5950] sec: usr: Avoid unbounded recursion loop

A bug during bad server handling could cause the resolver to enter an infinite loop, continuously sending queries to an upstream server with no exit condition, until the resolver query timeout was hit. This has been fixed.

ISC would like to thank Billy Baraja (BielraX) for bringing this issue to our attention.

Closes isc-projects/bind9#5804

Backport of !985

Merge branch 'backport-5804-resend-loop-9.11' into 'security-bind-9.11'

See merge request isc-private/bind9!994

3 weeks agoRemove duplicate addresses from the resolver SLIST
Colin Vidal [Wed, 4 Feb 2026 09:18:42 +0000 (10:18 +0100)] 
Remove duplicate addresses from the resolver SLIST

The SLIST (essentially `fctx->finds`, forwarders and dual-stack
alternatives aside) can have duplicate server addresses when multiple
in-domain nameservers share the same IP addresses:

  sub.example.          NS      ns1.sub.example.
  sub.example.          NS      ns2.sub.example.
  ns1.sub.example.      A       1.2.3.4
  ns1.sub.example.      A       5.6.7.8
  ns2.sub.example.      A       1.2.3.4
  ns2.sub.example.      A       5.6.7.8

If both 1.2.3.4 and 5.6.7.8 fail to return a valid answer, the resolver
would query each address twice.

The problem is fixed by replacing the two-phase server selection (sort
each find list by SRTT, sort finds by head SRTT) with a single linear
scan in nextaddress() that finds the lowest-SRTT unmarked, non-duplicate
address across all find lists.

The old approach had a correctness bug: after sorting, the resolver
picked the next address from the "current" find list rather than
globally.  For example, with find lists [1, 15, 26] and [3, 4, 5], the
second pick would be SRTT 15 instead of the correct SRTT 3.

The new approach is both simpler and correct: each call to nextaddress()
walks all addresses, skips marked and duplicate entries, and returns the
one with the lowest SRTT.  While this walk is repeated for each server
attempt, it operates on a small bounded list and is negligible compared
to the network I/O of querying the server.

(cherry picked from commit ced6b66fafa1badfd044d569a6d3cfbdb600f5a7)

3 weeks agoFix GSS-API context leak in TKEY negotiation
Ondřej Surý [Tue, 17 Mar 2026 23:10:35 +0000 (00:10 +0100)] 
Fix GSS-API context leak in TKEY negotiation

Reject multi-round GSS-API negotiation (GSS_S_CONTINUE_NEEDED) in
dst_gssapi_acceptctx().  Each call to gss_accept_sec_context()
allocates a context inside the GSS library; without this fix, the
context handle was passed back to process_gsstkey() which did not
store it persistently, leaking it on every incomplete negotiation.

An unauthenticated attacker could exhaust server memory by sending
repeated TKEY queries with GSSAPI tokens, each leaking one GSS
context.  The leaked memory is allocated by the GSS library via
malloc(), bypassing BIND's memory accounting.

In practice, Kerberos/SPNEGO (the only mechanism used with BIND)
completes in a single round, so rejecting continuation does not
affect real-world deployments.  See RFC 3645 Section 4.1.3.

(cherry picked from commit 3883058bf284de2889e4e3676767e58ad91a0ae3)

3 weeks agoValidate DNS message CLASS early in request processing
Ondřej Surý [Wed, 4 Mar 2026 09:46:58 +0000 (10:46 +0100)] 
Validate DNS message CLASS early in request processing

Reject requests with unsupported or misused CLASS values before
further processing.  Only IN, CH, HS, RESERVED0 (for DNS Cookies),
ANY (for TKEY negotiation), and NONE (for DNS UPDATE) are accepted;
all other classes return NOTIMP.  Misuse of NONE or ANY outside
their allowed contexts returns FORMERR.

This adds further protection against bugs of the same general class
as YWH-PGM40640-70 and YWH-PGM40640-73.

(cherry picked from commit d41865a458b9ecd76be4097ac1bea1005cad72db)
(cherry picked from commit 1c8016c91c3674929f87cbe7ad09f3670e05ad4e)

3 weeks ago[9.11] sec: usr: Fix outgoing zone transfers' quota issue
Arаm Sаrgsyаn [Thu, 30 Apr 2026 14:04:55 +0000 (14:04 +0000)] 
[9.11] sec: usr: Fix outgoing zone transfers' quota issue

Unauthorized clients could consume outgoing zone transfers quota
and block authorized zone transfer clients. This has been fixed.

Backport of MR !971

Fixes isc-projects/bind9#3589

Merge branch 'backport-3859-security-xfrout-quota-fix-9.11' into 'security-bind-9.11'

See merge request isc-private/bind9!999

3 weeks agoIncrement query counters on resend
Colin Vidal [Wed, 15 Apr 2026 20:40:56 +0000 (22:40 +0200)] 
Increment query counters on resend

Internal resend paths in the resolver can be triggered in flows that
are expected to execute at most once. For example, when a query fails
and a specific flag is not set, the flag is enabled and the query is
retried. On a subsequent failure, the flag prevents another retry and
the resolver proceeds to the next server (or aborts).

However, if a flag check is accidentally omitted, this can result in
an unbounded loop repeatedly querying the same server. To guard
against this, resend operations now also increment the query
counters, ensuring such loops are eventually capped by the configured
limits.

This is a 9.11 re-implementation of the original commits:

00345dde8feadf6601c864f000d99e42986159d9
b863694b32f8f764ae7475939888aebe99425b90

3 weeks agoLimit the number of addresses returned per ADB find
Colin Vidal [Thu, 5 Feb 2026 08:46:01 +0000 (09:46 +0100)] 
Limit the number of addresses returned per ADB find

Add a hard limit on the number of addresses that ADB returns from a
single NS lookup (dns_adbfind_t).  This mitigates a flood attack
where an attacker controls a zone with many addresses for a
nameserver, each returning an invalid response.  The global
max-query count (default 50) also limits this, but significant harm
can be done before that limit is reached.

The default limit is now 6 (v4 and/or v6) addresses for an ADB find (so,
ADB looking up for A/AAAA addresses of a name server name).

(cherry picked from commit 9b61b194c58c02d4fbbbe439eceeec8fd2a2a54c)

3 weeks agoDisable UPDATE and NOTIFY for non-IN classes
Evan Hunt [Wed, 4 Mar 2026 21:24:52 +0000 (13:24 -0800)] 
Disable UPDATE and NOTIFY for non-IN classes

Return NOTIMP for UPDATE and NOTIFY requests received for views with a
class other than IN.  Only QUERY is now supported for non-IN views such
as CHAOS.

When running dns dns_rdata_tostruct() with types that are only defined
for class IN, ensure that the class is correct before proceeding.

Add an assertion that any zone being updated is of class IN. (Note
that previously, a DLZ zone could have its class value set incorrectly
to NONE; this has been fixed.)

This addresses YWH-PGM40640-70 and YWH-PGM40640-73 (as well as any
similar problems that might have occurred in the future) by minimizing
the code paths that can be reached by rdata classes other than IN, so it
is safe for the implementation to assume that rdatatypes that are only
defined for class IN, such as SVCB or WKS, have been parsed and
validated, and not accepted as unknown/opaque data.

Fixes: isc-projects/bind9#5777
Fixes: isc-projects/bind9#5779
(cherry picked from commit 9ae24c32bec16c0f64225ef04f34670018bf0765)
(cherry picked from commit a2ca2408b3ff031c426c5dc785f550c9d30bf4aa)

3 weeks agoApply XFR-out quota after ACL is checked
Aram Sargsyan [Tue, 31 Mar 2026 13:00:00 +0000 (13:00 +0000)] 
Apply XFR-out quota after ACL is checked

Unauthorized clients can consume XFR-out quota and block authorized
XFR clients. Apply the quota after ACL is checked.

(cherry picked from commit e8268b76a8a1cde039131234b04b197ee7b46220)

3 weeks agoDisable recursion for non-IN classes
Evan Hunt [Tue, 3 Mar 2026 22:00:38 +0000 (14:00 -0800)] 
Disable recursion for non-IN classes

Force recursion off, and set allow-recursion/allow-recursion-on ACLs
to none, for views with a class other than IN. Log a configuration
warning if recursion is explicitly enabled for a non-IN view.

This addresses YWH-PGM40640-74 and YWH-PGM40640-75 by preventing any
attempt at recursive processing in a class-CHAOS view, ensuring that
server addresses used for recursive queries and received in recursive
responses are of the expected format.

Fixes: isc-projects/bind9#5780
Fixes: isc-projects/bind9#5781
(cherry picked from commit 70532a37a1aec761e8a12444852866ce9d9d5fcc)
(cherry picked from commit cf0d5a4e385525e21f2ae39098b1ab90c1137a2a)

3 weeks agoAdd respdiff and respdiff-third-party jobs to MR pipelines
Michal Nowak [Thu, 7 May 2026 10:39:50 +0000 (12:39 +0200)] 
Add respdiff and respdiff-third-party jobs to MR pipelines

Merge branch 'mnowak/respdiff-by-default' into 'bind-9.11'

See merge request isc-projects/bind9!11981

3 weeks agoAdd respdiff and respdiff-third-party jobs to MR pipelines
Michal Nowak [Thu, 7 May 2026 10:31:09 +0000 (12:31 +0200)] 
Add respdiff and respdiff-third-party jobs to MR pipelines

6 weeks ago[v9_11] fix: usr: Remove unnecessary dns_name_free call backport-5881-rsa-exponent-keytrap-cpu-amplification-9.11
Mark Andrews [Wed, 15 Apr 2026 22:59:24 +0000 (08:59 +1000)] 
[v9_11] fix: usr: Remove unnecessary dns_name_free call

When processing a catalog zone member's primaries definition and
there is a TXT record containing an invalid name TSIG key name,
dns_name_free was incorrectly called triggering an assertion.
This has been fixed.

Closes #5858

Backport of MR !11832

Merge branch 'backport-5858-remove-unnecessary-dns-name-free-call-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!11851

6 weeks agoChecking invalid TSIG key name in a catalog zone
Mark Andrews [Fri, 10 Apr 2026 03:05:31 +0000 (13:05 +1000)] 
Checking invalid TSIG key name in a catalog zone

(cherry picked from commit 213e59ccf56f4d66cf65f363be4563f2e853d12f)

6 weeks agoRemove unnecessary dns_name_free call
Mark Andrews [Fri, 10 Apr 2026 03:07:26 +0000 (13:07 +1000)] 
Remove unnecessary dns_name_free call

When processing a catalog zone member's primaries definition and
there is a TXT record containing an invalid name TSIG key name,
dns_name_free was incorrectly called triggering an assertion.
This has been fixed.

(cherry picked from commit 9f411c93c4d87b8097d39024da5a9da447cddaf7)

2 months ago[9.11] fix: dev: Fix buffer overflow in check_zoneconf
Matthijs Mekking [Thu, 2 Apr 2026 08:49:08 +0000 (08:49 +0000)] 
[9.11] fix: dev: Fix buffer overflow in check_zoneconf

The following line caused a buffer overflow due to `tmp` and `len` having the wrong values:
```
                (void)snprintf(tmp, len, "%u/%s", zclass,
                               (ztype == CFG_ZONE_INVIEW) ? target :
                                (viewname != NULL) ? viewname : "_default");
```

Merge branch 'matthijs-fix-buffer-overflow' into 'bind-9.11'

See merge request isc-projects/bind9!11789

2 months agoFix buffer overflow in check_zoneconf
Matthijs Mekking [Thu, 2 Apr 2026 08:21:24 +0000 (10:21 +0200)] 
Fix buffer overflow in check_zoneconf

Removing these two lines prevents the buffer overflow at startup.

2 months agoMerge branch 'bind-9.11-release' into bind-9.11
Michał Kępień [Wed, 25 Mar 2026 14:26:55 +0000 (15:26 +0100)] 
Merge branch 'bind-9.11-release' into bind-9.11

2 months ago[9.11] [CVE-2026-1519] sec: usr: Fix unbounded NSEC3 iterations when validating refer...
Michał Kępień [Wed, 25 Mar 2026 09:16:02 +0000 (10:16 +0100)] 
[9.11] [CVE-2026-1519] sec: usr: Fix unbounded NSEC3 iterations when validating referrals to unsigned delegations

DNSSEC-signed zones may contain high iteration-count NSEC3 records,
which prove that certain delegations are insecure. Previously, a
validating resolver encountering such a delegation processed these
iterations up to the number given, which could be a maximum of 65,535.
This has been addressed by introducing a processing limit, set at 150.
Now, if such an NSEC3 record is encountered, the delegation will be
treated as insecure.

ISC would like to thank Samy Medjahed/Ap4sh for bringing this
vulnerability to our attention.

Closes isc-projects/bind9#5708

Backport of MR !935

Merge branch '5708-confidential-nsec3-delegation-iteration-fix-fallback-to-insecure-9.11' into 'bind-9.11-release'

See merge request isc-private/bind9!958

2 months agoCheck RRset trust in validate_neg_rrset()
Matthijs Mekking [Tue, 3 Mar 2026 10:43:23 +0000 (11:43 +0100)] 
Check RRset trust in validate_neg_rrset()

In many places we only create a validator if the RRset has too low
trust (the RRset is pending validation, or could not be validated
before). This check was missing prior to validating negative response
data.

(cherry picked from commit 6ca67f65cd685cf8699540a852c1e3775bd48d64)

2 months agoDon't verify already trusted rdatasets
Matthijs Mekking [Tue, 3 Mar 2026 10:17:25 +0000 (11:17 +0100)] 
Don't verify already trusted rdatasets

If we already marked an rdataset as secure (or it has even stronger
trust), there is no need to cryptographically verify it again.

(cherry picked from commit 0ec08c212022d08c9717f2bc6bd3e8ebd6f034ce)

2 months agoCheck iterations in isdelegation()
Matthijs Mekking [Tue, 3 Mar 2026 09:40:36 +0000 (10:40 +0100)] 
Check iterations in isdelegation()

When looking up an NSEC3 as part of an insecurity proof, check the
number of iterations. If this is too high, treat the answer as insecure
by marking the answer with trust level "answer", indicating that they
did not validate, but could be cached as insecure.

(cherry picked from commit 988040a5e02f86f4a8cdb0704e8d501f9082a89c)

2 months ago[9.11] new: ci: Add LLVM 22
Michal Nowak [Wed, 4 Mar 2026 11:56:07 +0000 (12:56 +0100)] 
[9.11] new: ci: Add LLVM 22

Backport of MR !11627

Merge branch 'backport-mnowak/llvm-22-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!11631

2 months agoAdd LLVM 22
Michal Nowak [Tue, 24 Feb 2026 19:56:54 +0000 (20:56 +0100)] 
Add LLVM 22

(cherry picked from commit ffd7636e79023eadeacf52cf88c471c885f7be88)

3 months ago[9.11] new: ci: Add clang 21
Michal Nowak [Mon, 2 Mar 2026 15:46:21 +0000 (16:46 +0100)] 
[9.11] new: ci: Add clang 21

Backport of MR !11615.

Merge branch 'mnowak/add-clang-21-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!11617

3 months agoAdd clang 21
Michal Nowak [Mon, 2 Mar 2026 13:49:50 +0000 (14:49 +0100)] 
Add clang 21

(cherry picked from commit 473078bf3e37b6fd7bbeda51a856e422cd5670f0)

3 months ago[9.11] fix: ci: Configure without Python as ply is gone from CI images
Michal Nowak [Wed, 4 Feb 2026 20:27:47 +0000 (21:27 +0100)] 
[9.11] fix: ci: Configure without Python as ply is gone from CI images

But enable Python in Alpine Linux where ply is still present (as we
can't rebuild the image).

(cherry picked from commit ce3213d7d4dc5d373b553673cff08f83b227ac2c)

Backport of MR !11518

Merge branch 'backport-mnowak/configure-without-python-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!11519

3 months agoConfigure without Python as ply is gone from CI images
Michal Nowak [Wed, 4 Feb 2026 17:23:58 +0000 (18:23 +0100)] 
Configure without Python as ply is gone from CI images

But enable Python in Alpine Linux where ply is still present (as we
can't rebuild the image).

(cherry picked from commit ce3213d7d4dc5d373b553673cff08f83b227ac2c)

6 months ago[9.11] chg: ci: Adjust respdiff threshold
Nicki Křížek [Tue, 25 Nov 2025 15:43:00 +0000 (16:43 +0100)] 
[9.11] chg: ci: Adjust respdiff threshold

Closes #5649

Backport of MR !11262

Merge branch 'backport-nicki/respdiff-threshold-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!11280

6 months agoIncrease the threshold for respdiff-third-party
Nicki Křížek [Fri, 21 Nov 2025 14:05:36 +0000 (15:05 +0100)] 
Increase the threshold for respdiff-third-party

There are multiple reasons for the increased amount of differences we've
been seeing lately and for the raise of the threshold:

1. Recent hardening against cache poisoning (CVE-2025-40778) have
   uncovered a few edge cases where the domain can't be properly
   resolved with the new protections in place, but those are issues with
   upstream configuration and DNS setup.
2. The same hardening magnified some behaviour differences between 9.21
   and older versions. Some misconfigured domains, which can be resolved
   with BIND 9.20 and older are no longer resolvable in 9.21+. This can
   be again attributed to upstream DNS misconfiguration. See #5649.
3. A change in the respdiff CI job to include timeouts in the
   comparison, or rather, increasing the timeouts to resolve the
   previously timed out queries, which are typically failures. With the
   previous job configuration, those were omitted from comparison,
   because they were timeouts. Now, there should be no timeouts, but
   there is a slight increase in the amount of differences for the
   threshold evaluation.

(cherry picked from commit bcc4369b0bf243433ca5334cdce3982a15ce4027)

7 months ago[9.11] [CVE-2025-40778] sec: usr: Address various spoofing attacks
Michał Kępień [Wed, 22 Oct 2025 16:48:06 +0000 (18:48 +0200)] 
[9.11] [CVE-2025-40778] sec: usr: Address various spoofing attacks

Previously, several issues could be exploited to poison a DNS cache with
spoofed records for zones which were not DNSSEC-signed or if the
resolver was configured to not do DNSSEC validation. These issues were
assigned CVE-2025-40778 and have now been fixed.

As an additional layer of protection, :iscman:`named` no longer accepts
DNAME records or extraneous NS records in the AUTHORITY section unless
these are received via spoofing-resistant transport (TCP, UDP with DNS
cookies, TSIG, or SIG(0)).

ISC would like to thank Yuxiao Wu, Yunyi Zhang, Baojun Liu, and Haixin
Duan from Tsinghua University for bringing this vulnerability to our
attention.

Backport of !838

Closes isc-projects/bind9#5414

Merge branch '5414-security-check-name-vs-qname-again-9.11' into 'bind-9.11-release'

See merge request isc-private/bind9!862

7 months agoRetry lookups with unsigned DNAME over TCP
Evan Hunt [Tue, 30 Sep 2025 05:42:44 +0000 (22:42 -0700)] 
Retry lookups with unsigned DNAME over TCP

To prevent spoofed unsigned DNAME responses being accepted retry
response with unsigned DNAMEs over TCP if the response is not TSIG
signed or there isn't a good DNS CLIENT COOKIE.

To prevent test failures, this required adding TCP support to the
ans3 and ans4 servers in the chain system test.

(cherry picked from commit 2e40705c06831988106335ed77db3cf924d431f6)

7 months agoFurther restrict addresses that are cached when processing referrals
Evan Hunt [Tue, 30 Sep 2025 05:24:33 +0000 (22:24 -0700)] 
Further restrict addresses that are cached when processing referrals

Use the owner name of the NS record as the bailwick apex name
when determining which additional records to cache, rather than
the name of the delegating zone (or a parent thereof).

(cherry picked from commit a41054e9e606a61f1b3c8bc0c54e2f1059347165)

7 months agoTighten restrictions on caching NS RRsets in authority section
Evan Hunt [Tue, 30 Sep 2025 05:17:39 +0000 (22:17 -0700)] 
Tighten restrictions on caching NS RRsets in authority section

To prevent certain spoofing attacks, a new check has been added
to the existing rules for whether NS data can be cached: the owner
name of the NS RRset must be an ancestor of the name being queried.

(cherry picked from commit fa153f791f9324bf84abf8d259e11c0531fe6e25)

7 months agoMake Debian 13 "trixie" the base image
Michal Nowak [Fri, 3 Oct 2025 14:00:48 +0000 (16:00 +0200)] 
Make Debian 13 "trixie" the base image

Merge branch 'mnowak/make-trixie-the-base-image-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!11034

7 months agoSet more lenient respdiff limits
Michal Nowak [Wed, 19 Mar 2025 13:02:32 +0000 (14:02 +0100)] 
Set more lenient respdiff limits

After !9950, respdiff's maximal disagreement percentage needs to be
adjusted as target disagreements between the tested version of the
"main" branch and the reference one jumped for the respdiff,
respdiff:asan, and respdiff:tsan jobs from on average 0.07% to 0.16% and
from 0.12% to 0.17% for the respdiff-third-party job.

In !9950, we concluded setting MAX_DISAGREEMENTS_PERCENTAGE to double
the average disagreement percentage works fine in the CI.

(cherry picked from commit 9acc0c8543b6173c35019982bd6677a421204bff)

7 months agoAllow further system test jobs to fail
Michal Nowak [Fri, 3 Oct 2025 11:21:36 +0000 (13:21 +0200)] 
Allow further system test jobs to fail

The "coverage" and "keymgr" system tests have been reliably failing
under ASAN and in tarball-based GitLab CI jobs ever since commit
4467114191b2d60ab4c5fd16d6650b67c449ddef moved the relevant jobs to
Debian "bookworm".  As the above tests work fine in other jobs, these
particular failures will not be investigated further.

7 months agoMake Debian 13 "trixie" the base image
Michal Nowak [Wed, 1 Oct 2025 09:00:36 +0000 (11:00 +0200)] 
Make Debian 13 "trixie" the base image

Bump CLANG to clang-20 that is in "trixie".

12 months ago[9.11] chg: ci: Replace Oracle Linux Docker images with AlmaLinux ones
Michal Nowak [Thu, 29 May 2025 16:02:26 +0000 (16:02 +0000)] 
[9.11] chg: ci: Replace Oracle Linux Docker images with AlmaLinux ones

To be consistent with the replacing of Oracle Linux QCOW2 images with
AlmaLinux AWS AMIs, also replace Docker images.

Backport of MR !10434

Merge branch 'backport-mnowak/replace-oracle-linux-with-almalinux-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10515

12 months agoReplace Oracle Linux Docker images with AlmaLinux ones
Michal Nowak [Wed, 30 Apr 2025 15:34:13 +0000 (17:34 +0200)] 
Replace Oracle Linux Docker images with AlmaLinux ones

To be consistent with the replacing of Oracle Linux QCOW2 images with
AlmaLinux AWS AMIs, also replace Docker images.

(cherry picked from commit 63947a20622946af134a1738a10170e1d3770f27)

12 months ago[9.11] rem: ci: Drop Ubuntu 20.04 Focal Fossa
Michal Nowak [Tue, 13 May 2025 17:32:43 +0000 (17:32 +0000)] 
[9.11] rem: ci: Drop Ubuntu 20.04 Focal Fossa

Focal-specific ./configure options were moved to Jammy.

Backport of MR !9899

Merge branch 'backport-mnowak/drop-ubuntu-focal-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10458

12 months agoDrop Ubuntu 20.04 Focal Fossa
Michal Nowak [Thu, 12 Dec 2024 11:25:09 +0000 (12:25 +0100)] 
Drop Ubuntu 20.04 Focal Fossa

Focal-specific ./configure option was moved to Bionic.

(cherry picked from commit 326e19a65ae511df56c8a32c49d011052186774f)

14 months ago[9.11] new: ci: Allow pushing branches and tags to customer git repos
Nicki Křížek [Wed, 2 Apr 2025 11:13:37 +0000 (11:13 +0000)] 
[9.11] new: ci: Allow pushing branches and tags to customer git repos

For pipelines in the private repository, add an optional manual job,
which allows the current branch to be pushed into the specified
customer's git repository. This can be useful to provide patch previews
for early testing.

For tags created in a private repository, add a manual job which pushes
the created tag to all entitled customers.

Backport of MR !10323

Merge branch 'backport-nicki/ci-customer-git-automation-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10359

14 months agoAllow pushing branches and tags to customer git repos
Nicki Křížek [Tue, 25 Mar 2025 15:51:24 +0000 (16:51 +0100)] 
Allow pushing branches and tags to customer git repos

For pipelines in the private repository, add an optional manual job,
which allows the current branch to be pushed into the specified
customer's git repository. This can be useful to provide patch previews
for early testing.

For tags created in a private repository, add a manual job which pushes
the created tag to all entitled customers.

(cherry picked from commit 378b412e94a40ee74ab5c9edfb3a2059612a59ff)

14 months ago[9.11] new: dev: Implement -T cookiealwaysvalid
Arаm Sаrgsyаn [Tue, 18 Mar 2025 16:20:45 +0000 (16:20 +0000)] 
[9.11] new: dev: Implement -T cookiealwaysvalid

When `-T cookiealwaysvalid` is passed to `named`, DNS cookie checks for
the incoming queries always pass, given they are structurally correct.

Backport of MR !10232

Merge branch 'backport-aram/new-named-minus-T-option-of-cookiealwaysvalid-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10267

14 months agoTest -T cookiealwaysvalid
Aram Sargsyan [Tue, 11 Mar 2025 14:29:22 +0000 (14:29 +0000)] 
Test -T cookiealwaysvalid

Add a check in the "cookie" system test to make sure that the new
'-T cookiealwaysvalid' option works.

(cherry picked from commit 4e75a20b6a63c3840559accc9df2af2d50a747f6)

14 months agoImplement -T cookiealwaysvalid
Aram Sargsyan [Tue, 11 Mar 2025 14:03:56 +0000 (14:03 +0000)] 
Implement -T cookiealwaysvalid

When -T cookiealwaysvalid is passed to named, DNS cookie checks for
the incoming queries always pass, given they are structurally correct.

(cherry picked from commit 807ef8545d2e06c77826f3b2ac3f1cb7a7413dad)

14 months ago[9.11] Drop FreeBSD and OpenBSD from CI
Michal Nowak [Tue, 11 Mar 2025 13:12:46 +0000 (13:12 +0000)] 
[9.11] Drop FreeBSD and OpenBSD from CI

Both FreeBSD and OpenBSD in the CI are tested on outdated images.
Current FreeBSD images can't even be rebuild because in the maintained
branches they were ported from QCOW2 to the AWS autoscaler (also a
future of the OpenBSD image). This is something we don't want to
backport to EoL branches.

(cherry picked from commit f08f69c54d594c36e36a07ccbd04a4a2276e2da0)

Backport of MR !10229

Merge branch 'backport-mnowak/drop-bsd-images-from-ci-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10230

14 months agoDrop FreeBSD and OpenBSD from CI
Michal Nowak [Tue, 11 Mar 2025 09:56:18 +0000 (10:56 +0100)] 
Drop FreeBSD and OpenBSD from CI

Both FreeBSD and OpenBSD in the CI are tested on outdated images.
Current FreeBSD images can't even be rebuild because in the maintained
branches they were ported from QCOW2 to the AWS autoscaler (also a
future of the OpenBSD image). This is something we don't want to
backport to EoL branches.

(cherry picked from commit f08f69c54d594c36e36a07ccbd04a4a2276e2da0)

15 months ago[9.11] Drop unit:gcc:focal:amd64
Michal Nowak [Mon, 3 Feb 2025 19:39:49 +0000 (19:39 +0000)] 
[9.11] Drop unit:gcc:focal:amd64

The "focal" image does not have kyua.

Backport of MR !10041

Merge branch 'backport-mnowak/drop-some-unit-tests-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10063

15 months agoDrop unit:gcc:focal:amd64
Michal Nowak [Mon, 3 Feb 2025 10:57:36 +0000 (11:57 +0100)] 
Drop unit:gcc:focal:amd64

The "focal" image does not have kyua.

(cherry picked from commit d3ddcd866012e2869990d3eeb8e629658c453228)

16 months ago[9.11] fix: ci: Do not trigger post-merge jobs for cross-project pushes
Petr Špaček [Fri, 31 Jan 2025 14:18:33 +0000 (14:18 +0000)] 
[9.11] fix: ci: Do not trigger post-merge jobs for cross-project pushes

Backport of MR !10029
Backport of MR !10042

Merge branch 'backport-pspacek/no-cross-project-after-merge-jobs-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10046

16 months agoFix shell escaping in post-merge before_script
Petr Špaček [Fri, 31 Jan 2025 13:20:04 +0000 (14:20 +0100)] 
Fix shell escaping in post-merge before_script

Fixup for commit 60140607740bf8e07c0f223c18798bef36ef439c
"Do not trigger post-merge jobs for cross-project pushes".

Related: isc-projects/bind9!10029
(cherry picked from commit 6276e0b23b678c271de38e92b460b5eba9da0d04)

16 months agoDo not trigger post-merge jobs for cross-project pushes
Petr Špaček [Thu, 30 Jan 2025 10:24:59 +0000 (11:24 +0100)] 
Do not trigger post-merge jobs for cross-project pushes

We need to avoid double-triggering of post-merge jobs in the following
scenario:

 1. A private MR gets merged into the private BIND 9 repository.

 2. This merge operation triggers a "push" pipeline in the private
    repository, which correctly runs post-merge jobs, e.g. to set MR
    metadata in the private project.

 3. When a release is published, a script is run to change the
    automatically assigned milestone value ("Not released yet") to
    something else.

 4. Shortly afterwards, the result of the merge from step 1 is merged
    back into a maintenance branch in the public repository.

 5. The push operation triggers another "push" pipeline, this time in
    the public project.

At this point there are two problems:

  - If the script is dumb (like it currently is), it will extract the
    merge request ID from the merge commit description and change the
    milestone for a merge request in the wrong project namespace.

  - Even if the script was fixed to extract and use the correct GitLab
    project reference, it would reset the milestone for the merge
    request in the private repository back to "Not released yet" - while
    the milestone set in step 3 should be retained.

An alternative would be to change the order of operations so that
post-release milestoning happens at a later stage, while also fixing the
script to correctly follow cross-project references, but that approach
seems more fragile than simply failing on all cross-project pushes.  The
rule to enforce is: each project should only take care of its own
post-merge tasks.

(cherry picked from commit 60140607740bf8e07c0f223c18798bef36ef439c)

16 months ago[9.11] chg: ci: Use default cloning depth for the Danger CI job
Michał Kępień [Fri, 31 Jan 2025 09:40:33 +0000 (09:40 +0000)] 
[9.11] chg: ci: Use default cloning depth for the Danger CI job

With shallow fetching working reliably in pygit2 1.17.0+, there is no
longer any need for GitLab CI runners to clone the BIND 9 repository
with a fixed depth of 1000 during every "danger" CI job as Hazard is now
able to fetch remote refs with an arbitrary depth, controlled by the
HAZARD_FETCH_DEPTH environment variable.  The latter can be defined via
GitLab project's CI settings and adjusted as needed over time, without
the need to update .gitlab-ci.yml every time its value needs to be
changed.

Backport of MR !9946

Merge branch 'backport-michal/use-default-cloning-depth-for-the-danger-ci-job-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!10040

16 months agoUse default cloning depth for the Danger CI job
Michał Kępień [Fri, 31 Jan 2025 09:25:56 +0000 (10:25 +0100)] 
Use default cloning depth for the Danger CI job

With shallow fetching working reliably in pygit2 1.17.0+, there is no
longer any need for GitLab CI runners to clone the BIND 9 repository
with a fixed depth of 1000 during every "danger" CI job as Hazard is now
able to fetch remote refs with an arbitrary depth, controlled by the
HAZARD_FETCH_DEPTH environment variable.  The latter can be defined via
GitLab project's CI settings and adjusted as needed over time, without
the need to update .gitlab-ci.yml every time its value needs to be
changed.

(cherry picked from commit e39e7afc16fe1575afb907be76e55942925e1a3d)

16 months ago[9.11] [CVE-2024-11187] sec: usr: Limit the additional processing for large RDATA...
Nicki Křížek [Mon, 20 Jan 2025 16:17:36 +0000 (16:17 +0000)] 
[9.11] [CVE-2024-11187] sec: usr: Limit the additional processing for large RDATA sets

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 query processing load.

Backport of MR !750

See isc-projects/bind9#5034

Merge branch '5034-security-limit-additional-9.11' into 'bind-9.11-release'

See merge request isc-private/bind9!761

16 months agoLimit the additional processing for large RDATA sets
Ondřej Surý [Thu, 19 Dec 2024 15:40:52 +0000 (16:40 +0100)] 
Limit the additional processing for large RDATA sets

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 query processing load.

Also, don't append any additional data to type=ANY queries. The
answer to ANY is already big enough.

(cherry picked from commit a1982cf1bb95c818aa7b58988b5611dec80f2408)

16 months agoIsolate using the -T noaa flag only for part of the resolver test
Ondřej Surý [Wed, 8 Jan 2025 15:46:48 +0000 (16:46 +0100)] 
Isolate using the -T noaa flag only for part of the resolver test

Instead of running the whole resolver/ns4 server with -T noaa flag,
use it only for the part where it is actually needed.  The -T noaa
could interfere with other parts of the test because the answers don't
have the authoritative-answer bit set, and we could have false
positives (or false negatives) in the test because the authoritative
server doesn't follow the DNS protocol for all the tests in the resolver
system test.

(cherry picked from commit e51d4d3b88af00d6667f2055087ebfc47fb3107c)

20 months agoUpdate Clang to version 19
Michal Nowak [Fri, 13 Sep 2024 09:11:21 +0000 (09:11 +0000)] 
Update Clang to version 19

Version 17 is [not present](https://gitlab.isc.org/isc-projects/bind9/-/jobs/4737483) in the "bullseye" image anymore.

Merge branch 'mnowak/bump-clang' into 'bind-9.11'

See merge request isc-projects/bind9!9499

20 months agoUpdate Clang to version 19
Michal Nowak [Fri, 13 Sep 2024 07:28:45 +0000 (09:28 +0200)] 
Update Clang to version 19

Version 17 is not present in the "bullseye" image anymore.

21 months ago[9.11] new: ci: Automate parts of MR workflow
Petr Špaček [Fri, 23 Aug 2024 08:56:38 +0000 (08:56 +0000)] 
[9.11] new: ci: Automate parts of MR workflow

Backport of MR !9244

Merge branch 'backport-pspacek/post-merge-ci-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!9404

21 months agoRemove milestone check from dangerfile
Petr Špaček [Fri, 23 Aug 2024 07:34:20 +0000 (09:34 +0200)] 
Remove milestone check from dangerfile

Milestone is automatically set by 'merged-metadata' CI job to 'Not
released yet' so it does not matter what the original value was.

(cherry picked from commit 73b950dc29ba1a381fa8d1c47d12f3d2ee79cbe9)
(cherry picked from commit bed0aea14f67a3ae69cd13fabb3d5152fe762fab)

21 months agoAutomatically adjust MR metadata after merge
Petr Špaček [Mon, 5 Aug 2024 08:21:46 +0000 (10:21 +0200)] 
Automatically adjust MR metadata after merge

1. Set milestone to 'Not released yet' after merge
   We will set milestone to actual version number when we actually tag a
   particular version. This will get rid of mass MR reassignment when we
   do last minute changes to a release plan etc.

2. Adjust No CHANGES and Release Notes MR labels to match gitchangelog
   workflow.

(cherry picked from commit 3165261ecd7468c5f30eec0f50b4b43e556b7194)
(cherry picked from commit d1c64d588b5d2b293d6b4a366372c61043caba30)
(cherry picked from commit 1258078e8a111c9b61634bf3362b312c1a0ede3c)

21 months ago[9.11] new: usr: Tighten 'max-recursion-queries' and add 'max-query-restarts' option
Ondřej Surý [Thu, 22 Aug 2024 09:32:16 +0000 (09:32 +0000)] 
[9.11] new: usr: Tighten 'max-recursion-queries' and add 'max-query-restarts' option

There were cases in resolver.c when the `max-recursion-queries` quota was ineffective. It was possible to craft zones that would cause a resolver to waste resources by sending excessive queries while attempting to resolve a name. This has been addressed by correcting errors in the implementation of `max-recursion-queries`, and by reducing the default value from 100 to 32.

In addition, a new `max-query-restarts` option has been added which limits the number of times a recursive server will follow CNAME or DNAME records before terminating resolution. This was previously a hard-coded limit of 16, and now defaults to 11.

Closes #4741

Backport of MR !9281

Merge branch 'backport-4741-reclimit-restarts-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!9285

21 months agoimplement 'max-query-restarts'
Evan Hunt [Wed, 26 Jun 2024 06:49:00 +0000 (23:49 -0700)] 
implement 'max-query-restarts'

implement, document, and test the 'max-query-restarts' option
which specifies the query restart limit - the number of times
we can follow CNAMEs before terminating resolution.

(cherry picked from commit 104f3b82fb7c7cd03edc36507b167cfc6e11d17c)
(cherry picked from commit 2e04f0380c5af65661ee906ffc0730e6ea8040aa)

21 months agoreduce the max-recursion-queries default to 32
Evan Hunt [Tue, 25 Jun 2024 21:39:58 +0000 (14:39 -0700)] 
reduce the max-recursion-queries default to 32

the number of iterative queries that can be sent to resolve a
name now defaults to 32 rather than 100.

(cherry picked from commit 7e3b425dc283df66df9c46002307ab676e10e4fd)
(cherry picked from commit a11367ade3f4ebd314c31a1ef45965e3859b5095)

21 months agomake "max_restarts" a configurable value
Evan Hunt [Tue, 25 Jun 2024 21:30:20 +0000 (14:30 -0700)] 
make "max_restarts" a configurable value

MAX_RESTARTS is no longer hard-coded; ns_server_setmaxrestarts()
and dns_client_setmaxrestarts() can now be used to modify the
max-restarts value at runtime. in both cases, the default is 11.

(cherry picked from commit c5588babaf89f3e3ad2edccaada716e55c135dd3)
(cherry picked from commit bfbc6a6c840461a530077f2d5b02f9a53500f8ce)

21 months agoreduce MAX_RESTARTS to 11
Evan Hunt [Tue, 25 Jun 2024 19:28:23 +0000 (12:28 -0700)] 
reduce MAX_RESTARTS to 11

the number of steps that can be followed in a CNAME chain
before terminating the lookup has been reduced from 16 to 11.
(this is a hard-coded value, but will be made configurable later.)

(cherry picked from commit 05d78671bb6a5ba63d78d77339e17cbc73f18188)
(cherry picked from commit dd88a4cdfc8042e2cd2fdae93b803ba8490b88dc)

21 months agoadd debug logging when creating or attaching to a query counter
Evan Hunt [Tue, 25 Jun 2024 18:02:49 +0000 (11:02 -0700)] 
add debug logging when creating or attaching to a query counter

fctx_create() now logs at debug level 9 when the fctx attaches
to an existing counter or creates a new one.

(cherry picked from commit 825f3d68c5b041b53f13a8c5b4dc431ca9b5887f)
(cherry picked from commit 14bce7e27582f97d2e5be43a8e88df84e241c5cb)

21 months agoapply max-recursion-queries quota to validator queries
Evan Hunt [Wed, 22 May 2024 22:17:47 +0000 (15:17 -0700)] 
apply max-recursion-queries quota to validator queries

previously, validator queries for DNSKEY and DS records were
not counted toward the quota for max-recursion-queries; they
are now.

(cherry picked from commit af7db8951364a89c468eda1535efb3f53adc2c1f)
(cherry picked from commit 18e39d989f5a716045cd6d99b3bdb7a2633a2db8)

21 months agoattach query counter to NS fetches
Evan Hunt [Wed, 22 May 2024 20:02:16 +0000 (13:02 -0700)] 
attach query counter to NS fetches

there were cases in resolver.c when queries for NS records were
started without passing a pointer to the parent fetch's query counter;
as a result, the max-recursion-queries quota for those queries started
counting from zero, instead of sharing the limit for the parent fetch,
making the quota ineffective in some cases.

(cherry picked from commit d3b7e92783754e9a4ce93046fadcb96c5439a0d7)
(cherry picked from commit 5ab4cae4ed5c2f7b8509a0dfcbadbc727abecf36)

21 months ago[9.11] rem: ci: Drop Oracle Linux 7
Michal Nowak [Mon, 19 Aug 2024 16:13:48 +0000 (16:13 +0000)] 
[9.11] rem: ci: Drop Oracle Linux 7

See #3729

Backport of MR !9352

Merge branch 'backport-3729-drop-oracle-linux-7-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!9354

21 months agoDrop Oracle Linux 7
Michal Nowak [Mon, 19 Aug 2024 14:32:36 +0000 (16:32 +0200)] 
Drop Oracle Linux 7

(cherry picked from commit 4af28f9ffcc9375e0b71293ede17c7be79068cd5)

21 months ago[9.11] chg: test: Drop TSAN jobs, drop bullseye jobs
Ondřej Surý [Fri, 16 Aug 2024 08:20:27 +0000 (08:20 +0000)] 
[9.11] chg: test: Drop TSAN jobs, drop bullseye jobs

The new TSAN images, the TSAN-enabled images install libraries to
opt/tsan, this doesn't work, just drop the TSAN jobs.

Additionally, drop Debian bullseye that's EOL now.

Backport of MR !9324

Merge branch 'backport-ondrej/use-staging-tsan-images-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!9328

21 months agoDon't bother with TSAN jobs for end-of-life release
Ondřej Surý [Fri, 16 Aug 2024 06:33:19 +0000 (08:33 +0200)] 
Don't bother with TSAN jobs for end-of-life release

21 months agoAdd -DOPENSSL_SUPPRESS_DEPRECATED to allow compilation with OpenSSL 3.x
Ondřej Surý [Fri, 16 Aug 2024 06:25:37 +0000 (08:25 +0200)] 
Add -DOPENSSL_SUPPRESS_DEPRECATED to allow compilation with OpenSSL 3.x

21 months agoRemove Debian bullseye jobs
Ondřej Surý [Thu, 15 Aug 2024 18:21:46 +0000 (20:21 +0200)] 
Remove Debian bullseye jobs

The Debian bullseye has reached end-of-life, remove it from the CI.

(cherry picked from commit d02d6af2b9ac6e74c433c01d63e37c87e14b254e)

21 months agoFor TSAN builds, use libraries from /opt/tsan
Ondřej Surý [Thu, 15 Aug 2024 17:54:58 +0000 (19:54 +0200)] 
For TSAN builds, use libraries from /opt/tsan

The new TSAN images, the TSAN-enabled images install libraries to
/opt/tsan, synchronize the configure options and CFLAGS between gcc:tsan
and clang:tsan images and set the PKG_CONFIG_PATH to /opt/tsan/lib.

(cherry picked from commit 2a46396f295146b3868d89c8d8136fd3574579e5)

21 months ago[9.11] chg: Remove danger checks for release notes and CHANGES
Nicki Křížek [Mon, 5 Aug 2024 15:56:02 +0000 (15:56 +0000)] 
[9.11] chg: Remove danger checks for release notes and CHANGES

Since 9.21.0-dev, the release notes and changelog process has been
changed. Backport to the EoL branch are no longer expected to have
either CHANGES or release notes, as we aren't going to release any more
versions anyway.

Related #75

Merge branch '75-gitchangelog-9.11' into 'bind-9.11'

See merge request isc-projects/bind9!9183