Commit Graph

31914 Commits

Author SHA1 Message Date
Mark Andrews
14aa0c5df6 Add a test for update-policy 'zonesub'
The new test checks that 'update-policy zonesub' is properly enforced.
2020-08-05 15:55:06 +02:00
Mark Andrews
5bf457e89a Add a test for update-policy 'subdomain'
The new test checks that 'update-policy subdomain' is properly enforced.
2020-08-05 15:55:06 +02:00
Mark Andrews
7630a64141 Update-policy 'subdomain' was incorrectly treated as 'zonesub'
resulting in names outside the specified subdomain having the wrong
restrictions for the given key.
2020-08-05 15:55:06 +02:00
Michał Kępień
77196beff8 Merge branch '2037-confidential-issue-v9_16' into 'security-v9_16'
[CVE-2020-8623]: Fix crash in pk11_numbits() with crafted packet when native-pkcs11 is used (v9.16)

See merge request isc-private/bind9!199
2020-08-05 13:54:16 +00:00
Ondřej Surý
e3bd627e84 Add CHANGES and release note for GL #2037 2020-08-05 15:51:40 +02:00
Ondřej Surý
ac3862a5da Fix crash in pk11_numbits() when native-pkcs11 is used
When pk11_numbits() is passed a user provided input that contains all
zeroes (via crafted DNS message), it would crash with assertion
failure.  Fix that by properly handling such input.
2020-08-05 15:51:40 +02:00
Michał Kępień
d5b42ddd38 Merge branch '2028-unexpectedend-and-tsig-v9_16' into 'security-v9_16'
[CVE-2020-8622] Properly handle malformed truncated responses to TSIG queries (v9.16)

See merge request isc-private/bind9!195
2020-08-05 13:50:30 +00:00
Mark Andrews
be43228b61 Add CHANGES and release notes for GL #2028 2020-08-05 15:47:25 +02:00
Mark Andrews
0eec632d6a Always keep a copy of the message
this allows it to be available even when dns_message_parse()
returns a error.
2020-08-05 15:47:25 +02:00
Michał Kępień
3b942affc0 Merge branch '1997-confidential-issue-v9_16' into 'security-v9_16'
[CVE-2020-8621] Ensure QNAME minimization is permanently disabled when forwarding (v9.16)

See merge request isc-private/bind9!194
2020-08-05 13:46:23 +00:00
Evan Hunt
3a69802086 Add CHANGES and release note for GL #1997 2020-08-05 15:44:18 +02:00
Evan Hunt
81514ff925 permanently disable QNAME minimization in a fetch when forwarding
QNAME minimization is normally disabled when forwarding. if, in the
course of processing a fetch, we switch back to normal recursion at
some point, we can't safely start minimizing because we may have
been left in an inconsistent state.
2020-08-05 15:44:18 +02:00
Michał Kępień
e160b1509f Merge branch '1996-confidential-issue-v9_16' into 'security-v9_16'
[CVE-2020-8620]: TCP Receive Buffer Length Assertion Check Denial of Service Vulnerability (v9.16)

See merge request isc-private/bind9!193
2020-08-05 13:32:03 +00:00
Ondřej Surý
9d69ee740f Add CHANGES and release note for GL #1996 2020-08-05 12:57:58 +02:00
Evan Hunt
9a372f2bce Use different allocators for UDP and TCP
Each worker has a receive buffer with space for 20 DNS messages of up
to 2^16 bytes each, and the allocator function passed to uv_read_start()
or uv_udp_recv_start() will reserve a portion of it for use by sockets.
UDP can use recvmmsg() and so it needs that entire space, but TCP reads
one message at a time.

This commit introduces separate allocator functions for TCP and UDP
setting different buffer size limits, so that libuv will provide the
correct buffer sizes to each of them.
2020-08-05 12:57:58 +02:00
Michał Kępień
c01e643715 Merge branch 'michal/remove-arm64-jobs-from-gitlab-ci-v9_16' into 'v9_16'
[v9_16] Remove arm64 jobs from GitLab CI

See merge request isc-projects/bind9!3922
2020-08-05 10:09:29 +00:00
Michał Kępień
3ab00a11eb Remove arm64 jobs from GitLab CI
The only arm64 runner we have at our disposal is suffering from
intermittent connectivity issues which make it unusable for extended
periods of time.  Remove arm64 jobs from GitLab CI until we manage to
set up an arm64 runner with more reliable connectivity.

(cherry picked from commit 49f245f7c0)
2020-08-05 12:07:37 +02:00
Michał Kępień
2798a4443d Merge branch '2065-set-max-cache-size-in-the-geoip2-system-test-v9_16' into 'v9_16'
[v9_16] Set "max-cache-size" in the "geoip2" system test

See merge request isc-projects/bind9!3921
2020-08-05 09:43:19 +00:00
Michał Kępień
fec4664ab0 Set "max-cache-size" in the "geoip2" system test
The named configuration files used in the "geoip2" system test cause a
rather large number of views (6-8) to be set up in each tested named
instance.  Each view has its own cache.

Commit aa72c31422 caused the RBT hash
table to be pre-allocated to a size derived from "max-cache-size", so
that it never needs to be rehashed.  The size of that hash table is not
expected to be significant enough to cause memory use issues in typical
conditions even for large "max-cache-size" settings.

However, these two factors combined can cause memory exhaustion issues
in GitLab CI, where we run multiple "instances" of the test suite in
parallel on the same runner, each test suite executes multiple system
tests concurrently, and each system test may potentially start multiple
named instances at the same time.  In practice, this problem currently
only seems to be affecting the "geoip2" system test, which is failing
intermittently due to named instances used by that test getting killed
by oom-killer.

Prevent the "geoip2" system test from failing intermittently by setting
"max-cache-size" in named configuration files used in that test to a low
value in order to keep memory usage at bay even with a large number of
views configured.

(cherry picked from commit 4292d5bdfe)
2020-08-05 11:08:24 +02:00
Matthijs Mekking
71cd1a1d5c Merge branch 'ondrej-serve-stale-improvements-v9_16' into 'v9_16'
Serve stale improvements (9.16)

See merge request isc-projects/bind9!3913
2020-08-05 08:16:10 +00:00
Matthijs Mekking
f3103660d0 keyword 'primaries' is unknown in 9.16
In 9.17 we introduced 'primaries' as a synonym for 'masters' in the
configuration file. This synonym has not been backported so change
the serve-stale test to make use of the 'masters' keyword.
2020-08-05 09:09:16 +02:00
Matthijs Mekking
c92de6cb44 stale-cache-enable is enabled by default
Because this is a backport, the option should default to keep the
serve-stale caching enabled.
2020-08-05 09:09:16 +02:00
Ondřej Surý
f3a7ee87ef Add CHANGES and release notes for GL #1712 and GL #1829
(cherry picked from commit dd62275152)
2020-08-05 09:09:16 +02:00
Ondřej Surý
c4e6ade0e5 Add tests with stale-cache-disabled into serve-stale system test
Add a fifth named (ns5) that runs with `stale-cache-enable no;` and
check that there are no stale records in the cache.

(cherry picked from commit abc2ab9223)
2020-08-05 09:09:16 +02:00
Ondřej Surý
f9711481ad Expire the 0 TTL RRSet quickly rather using them for serve-stale
When a received RRSet has TTL 0, they would be preserved for
serve-stale (default `max-stale-cache` is 12 hours) rather than expiring
them quickly from the cache database.

This commit makes sure the RRSet didn't have TTL 0 before marking the
entry in the database as "stale".

(cherry picked from commit 6ffa2ddae0)
2020-08-05 09:09:16 +02:00
Ondřej Surý
b48e9ab201 Add stale-cache-enable option and disable serve-stable by default
The current serve-stale implementation in BIND 9 stores all received
records in the cache for a max-stale-ttl interval (default 12 hours).

This allows DNS operators to turn the serve-stale answers in an event of
large authoritative DNS outage.  The caching of the stale answers needs
to be enabled before the outage happens or the feature would be
otherwise useless.

The negative consequence of the default setting is the inevitable
cache-bloat that happens for every and each DNS operator running named.

In this MR, a new configuration option `stale-cache-enable` is
introduced that allows the operators to selectively enable or disable
the serve-stale feature of BIND 9 based on their decision.

The newly introduced option has been disabled by default,
e.g. serve-stale is disabled in the default configuration and has to be
enabled if required.

(cherry picked from commit ce53db34d6)
2020-08-05 09:09:16 +02:00
Michał Kępień
b1792f2ec5 Merge branch '2030-bind-arm-incorrectly-documents-the-processing-of-forwarders-still-has-the-pre-9-3-0-explanation-v9_16' into 'v9_16'
[v9_16] Update description of forwarding behavior in ARM

See merge request isc-projects/bind9!3917
2020-08-04 19:50:56 +00:00
Suzanne Goldlust
2d530d259a Update description of forwarding behavior in ARM
(cherry picked from commit 30e126ad02)
2020-08-04 21:42:32 +02:00
Mark Andrews
702c840e93 Merge branch 'marka-DNS_R_BADTSIG-map-to-FORMERR-v9_16' into 'v9_16'
Marka dns r badtsig map to formerr v9 16

See merge request isc-projects/bind9!3914
2020-08-04 13:30:51 +00:00
Mark Andrews
20bc6aefff Check rcode is FORMERR
(cherry picked from commit 88ff6b846c)
2020-08-04 23:04:34 +10:00
Mark Andrews
2dc26ebdb6 Map DNS_R_BADTSIG to FORMERR
Now that the log message has been printed set the result code to
DNS_R_FORMERR.  We don't do this via dns_result_torcode() as we
don't want upstream errors to produce FORMERR if that processing
end with DNS_R_BADTSIG.

(cherry picked from commit 20488d6ad3)
2020-08-04 23:04:34 +10:00
Diego dos Santos Fronza
535d27ffc5 Merge branch '1719-observed-stats-underflow-in-multiple-stats-v9_16' into 'v9_16'
Resolve "Observed stats underflow in multiple stats"

See merge request isc-projects/bind9!3866
2020-08-03 23:20:43 +00:00
Diego Fronza
e1561f0eb2 Add CHANGES and release note for #1719 2020-08-03 19:18:04 -03:00
Diego Fronza
fca1000ee9 Fix ns_statscounter_recursclients underflow
The basic scenario for the problem was that in the process of
resolving a query, if any rrset was eligible for prefetching, then it
would trigger a call to query_prefetch(), this call would run in
parallel to the normal query processing.

The problem arises due to the fact that both query_prefetch(), and,
in the original thread, a call to ns_query_recurse(), try to attach
to the recursionquota, but recursing client stats counter is only
incremented if ns_query_recurse() attachs to it first.

Conversely, if fetch_callback() is called before prefetch_done(),
it would not only detach from recursionquota, but also decrement
the stats counter, if query_prefetch() attached to te quota first
that would result in a decrement not matched by an increment, as
expected.

To solve this issue an atomic bool was added, it is set once in
ns_query_recurse(), allowing fetch_callback() to check for it
and decrement stats accordingly.

For a more compreensive explanation check the thread comment below:
https://gitlab.isc.org/isc-projects/bind9/-/issues/1719#note_145857
2020-08-03 19:18:04 -03:00
Michał Kępień
7519821f16 Merge branch 'michal/restore-placeholder-entry-at-sequence-number-5481-v9_16' into 'v9_16'
[v9_16] Restore placeholder entry at sequence number 5481

See merge request isc-projects/bind9!3911
2020-08-03 20:15:19 +00:00
Michał Kępień
b917e9eb20 Restore placeholder entry at sequence number 5481
(cherry picked from commit 029e32c01a)
2020-08-03 22:14:11 +02:00
Ondřej Surý
5f8ecfb918 Merge branch '2038-use-freebind-when-bind-fails-v9_16' into 'v9_16'
Resolve "Bind not handling interfaces changes correctly when listen-on-v6  any  specified"

See merge request isc-projects/bind9!3907
2020-07-31 15:55:53 +00:00
Witold Kręcicki
95fb38619b Add CHANGES and release note for GL #2038
(cherry picked from commit 94eda43ab2)
2020-07-31 13:33:24 +02:00
Witold Kręcicki
a12076cc52 netmgr: retry binding with IP_FREEBIND when EADDRNOTAVAIL is returned.
When a new IPv6 interface/address appears it's first in a tentative
state - in which we cannot bind to it, yet it's already being reported
by the route socket. Because of that BIND9 is unable to listen on any
newly detected IPv6 addresses. Fix it by setting IP_FREEBIND option (or
equivalent option on other OSes) and then retrying bind() call.

(cherry picked from commit a0f7d28967)
2020-07-31 13:33:06 +02:00
Michał Kępień
23021385d5 Merge branch 'michal/only-run-system-tests-as-root-in-developer-mode-v9_16' into 'v9_16'
[v9_16] Only run system tests as root in developer mode

See merge request isc-projects/bind9!3897
2020-07-31 05:47:20 +00:00
Michał Kępień
e734651fbd Only run system tests as root in developer mode
Running system tests with root privileges is potentially dangerous.
Only allow it when explicitly requested (by building with
--enable-developer).

(cherry picked from commit 3ef106f69d)
2020-07-31 07:46:27 +02:00
Mark Andrews
3d606d902f Merge branch '1456-always-check-return-from-isc_refcount_decrement-v9_16' into 'v9_16'
Always check the return from isc_refcount_decrement.

See merge request isc-projects/bind9!3901
2020-07-31 03:32:51 +00:00
Mark Andrews
14fe6e77a7 Always check the return from isc_refcount_decrement.
Created isc_refcount_decrement_expect macro to test conditionally
the return value to ensure it is in expected range.  Converted
unchecked isc_refcount_decrement to use isc_refcount_decrement_expect.
Converted INSIST(isc_refcount_decrement()...) to isc_refcount_decrement_expect.

(cherry picked from commit bde5c7632a)
2020-07-31 12:54:47 +10:00
Mark Andrews
8454b9dbb8 Merge branch '2033-rndc-dnstap-roll-fix-was-incomplete-v9_16' into 'v9_16'
Refactor the code that counts the last log version to keep

See merge request isc-projects/bind9!3900
2020-07-31 00:25:59 +00:00
Mark Andrews
1981fb1327 Refactor the code that counts the last log version to keep
When silencing the Coverity warning in remove_old_tsversions(), the code
was refactored to reduce the indentation levels and break down the long
code into individual functions.  This improve fix for [GL #1989].

(cherry picked from commit aca18b8b5b)
2020-07-31 10:01:36 +10:00
Michal Nowak
2fa1c95357 Merge branch 'mnowak/various-system-test-fixes-v9_16' into 'v9_16'
[v9_16] Various system test fixes

See merge request isc-projects/bind9!3898
2020-07-30 14:57:48 +00:00
Michal Nowak
0f319908f0 Remove cross-test dependency on ckdnsrps.sh 2020-07-30 16:25:23 +02:00
Michal Nowak
72a6b0dc6f Fix name of the test directory of stop.pl in masterformat test 2020-07-30 16:24:18 +02:00
Michal Nowak
24f5f68d7a Ensure test fails if packet.pl does not work as expected 2020-07-30 16:20:46 +02:00
Ondřej Surý
d8f7f0e747 Merge branch '1775-resizing-growing-of-cache-hash-tables-causes-delays-in-processing-of-client-queries-v9_16' into 'v9_16'
Resolve "Resizing (growing) of cache hash tables causes delays in processing of client queries"

See merge request isc-projects/bind9!3871
2020-07-30 11:47:32 +00:00