Commit Graph

39041 Commits

Author SHA1 Message Date
Matthijs Mekking
7ab4a35820 Update key lifetime and metadata after reconfig
If dnssec-policy is reconfigured and the key lifetime has changed,
update existing keys with the new lifetime and adjust the retire
and removed timing metadata accordingly.

If the key has no lifetime yet, just initialize the lifetime. It
may be that the retire/removed timing metadata has already been set.

Skip keys which goal is not set to omnipresent. These keys are already
in the progress of retiring, or still unused.

(cherry picked from commit 1cec0b0448)
2024-07-30 13:37:50 +02:00
Matthijs Mekking
55f79b34b6 Test updating dnssec-policy key lifetime
Check if the key lifetime is updated in the key files. Make sure the
inactive and removed timing metadata are adjusted accordingly.

(cherry picked from commit 2237895bb4)
2024-07-30 10:22:53 +00:00
Matthijs Mekking
6c0380db8a Move dnssec-policy to kasp-fips.conf.in
All dnssec-policy configurations are here, so why not this one?

(cherry picked from commit 93326e3e18)
2024-07-30 10:22:53 +00:00
Matthijs Mekking
381d6246d6 [9.18] fix: usr: Fix dig +timeout argument when using +https
The +timeout argument was not used on DoH connections. This has been fixed. 

Closes #4806

Merge branch '4806-dig-https-local-timeout-ignored-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9161
2024-07-30 09:41:50 +00:00
Matthijs Mekking
1f2faa8470 Fix dig connection timeout argument when using DOH
bin/dig/dighost.c calls isc_nm_httpconnect. The timeout setting
(local_timeout) is passed as the 11th argument, but the function in
lib/isc/netmgr/http.c has the timeout argument as the 11th argument.
The 10th and 11th argument were reversed. This commit fixes that.

Thanks to Nicolas Dehaine for reporting and providing the fix.
2024-07-30 08:52:05 +00:00
Nicki Křížek
0d1962b494 [9.18] chg: test: Mark the keyfromlabel&enginepkcs11 tests as xfail
The tests currently fail on debian:bookworm due to a bug in OpenSSL 3.0.13.

Related #4814

Merge branch '4814-allow-keyfromlabel-failure' into 'bind-9.18'

See merge request isc-projects/bind9!9179
2024-07-29 19:15:09 +00:00
Nicki Křížek
ff983ed647 Mark the keyfromlabel&enginepkcs11 tests as xfail
The tests currently fail on debian:bookworm due to a bug in OpenSSL
3.0.13.
2024-07-29 16:55:01 +02:00
Nicki Křížek
d40f9c1f74 [9.18] chg: test: Retry job in case of AWS Spot Instance interruption event
Closes #4777

Backport of MR !9107

Merge branch '4777-retry-job-aws-spot-instance-interruption-event-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9185
2024-07-29 14:52:43 +00:00
Emanuel Petr
ec1a6e1339 Retry job in case of AWS Spot Instance interruption
(cherry picked from commit bbcce1bfc1)
2024-07-29 13:26:54 +00:00
Nicki Křížek
21a0b6aef7 [9.18] new: dev: generate changelog from git log
Use a single source of truth, the git log, to generate the list of CHANGES. Use the .rst format and include it in the ARM for a quick reference with proper gitlab links to issues and merge requests.

Closes #75

Backport of MR !9152

Merge branch 'nicki/add-gitchangelog-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9181
2024-07-29 13:25:27 +00:00
Nicki Křížek
1efeb8ecae Update docs and processes to use the new changelog
(cherry picked from commit bcc99213a5)
2024-07-29 14:50:39 +02:00
Nicki Křížek
b2116ce43f Update dangerfile for new changelog workflow
(cherry picked from commit 91be111dc7)
2024-07-29 14:49:59 +02:00
Nicki Křížek
162be86a7c Skip pylint checks for contrib directory
The files in contrib/ directory shouldn't be subject to our pylint
check. They can come from external sources and we don't subject these to
the same standards as the rest of the BIND9 code / scripts.

(cherry picked from commit 7cbb052649)
2024-07-29 14:49:59 +02:00
Nicki Křížek
1661126532 Remove changes job and related scripts
These are no longer needed, since changelog is generated using
gitchangelog.

(cherry picked from commit 3f1a843695)
2024-07-29 14:49:56 +02:00
Nicki Křížek
a88a5e2ad5 Add BIND9 configuration for gitchangelog
The configuration has been crafted to cater for BIND9 needs:
- Define actions that have an equivalent section in existing Release
  Notes
- Assume the commits that have the necessary changelog makrup are merge
  commits from GitLab and transform them into messages and proper links
- Put the resulting changelog into the proper place in
  doc/arm/changelog.rst
- Have a separate configuration for changelog and release notes. Both of
  these should be generated from the `git log`, with release notes being
  subject to more scrutiny and further editing

(cherry picked from commit 0ec8b99ea3)
2024-07-29 14:49:13 +02:00
Nicki Křížek
976ebffca5 Add new changelog file
Create new changelog and include it in the documentation. Include the
previous CHANGES as plain text without any markup.

(cherry picked from commit e9b6031e0c)
2024-07-29 14:49:09 +02:00
Nicki Křížek
84a3d8ca83 Address gitchangelog deprecation warning
(cherry picked from commit 951280bca5)
2024-07-29 12:34:08 +00:00
Nicki Křížek
3fe001ae2a Adjust gitchangelog whitespace
Format the output to produce a nicer looking rst output, similar to the
former CHANGES file.

(cherry picked from commit 1c95eeeb3f)
2024-07-29 12:34:08 +00:00
Nicki Křížek
915c2a960a Allow gitchangelog to include commit sha
Add an option which can be used to put short commit sha at the end of
each commit subject line in the generated changelog.

(cherry picked from commit c2b23fa2de)
2024-07-29 12:34:08 +00:00
Nicki Křížek
2bd901a699 Remove authors from gitchangelog output
Given our workflow, this could easily lead to misattribution. It's also
not an actionable information and it can be found in the MR / git log
instead.

(cherry picked from commit a8258d1c53)
2024-07-29 12:34:08 +00:00
Nicki Křížek
ed4eb0c368 Reformat gitchangelog with black
(cherry picked from commit 9f90c1c65e)
2024-07-29 12:34:08 +00:00
Nicki Křížek
e99549f6c7 Import gitchanglog 3.0.4
The  project hasn't seen any new development/changes since 2018 and it
seems unlikely we'd be able to get any changes into the upstream. Since
it's isolated into a single file and its task is fairly straighforward,
pull the code into our own repository and maintain it here as needed.

This also makes it easier to make any changes that are specific to our
project.

(cherry picked from commit 63247d8a73)
2024-07-29 12:34:07 +00:00
Nicki Křížek
3f26ac2a4d Merge tag 'v9.18.28' into bind-9.18 2024-07-23 16:10:41 +02:00
Nicki Křížek
356ab4ea24 Set up version and release notes for BIND 9.18.29
Merge branch 'nicki/set-up-version-and-release-notes-for-bind-9.18.29' into 'bind-9.18'

See merge request isc-projects/bind9!9162
2024-07-23 14:04:16 +00:00
Nicki Křížek
7c36c2d6a2 Set up release notes for BIND 9.18.29 2024-07-23 16:01:57 +02:00
Nicki Křížek
5afbbdfb6c Update BIND version to 9.18.29-dev 2024-07-23 16:01:57 +02:00
Nicki Křížek
f77fadbf59 Update BIND version for release v9.18.28 2024-07-08 15:34:41 +02:00
Nicki Křížek
353bbfd03c Add a CHANGES marker 2024-07-08 15:34:33 +02:00
Michal Nowak
0077cfd7a6 Refresh base image repos before installing from them
Stale repositories cause issue on installation in the docs:pdf CI job:

    E: Failed to fetch http://deb.debian.org/debian/pool/main/s/systemd/libsystemd-shared_252.22-1%7edeb12u1_amd64.deb  404  Not Found [IP: 2a04:4e42:78::644 80]
    E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

(cherry picked from commit 211a514dbd5d122a37ddb29f6db63edc86af73b7)
2024-07-08 15:34:10 +02:00
Nicki Křížek
df02a1313b Merge branch 'nicki/prepare-documentation-for-bind-9.18.28' into 'v9.18.28-release'
Prepare documentation for BIND 9.18.28

See merge request isc-private/bind9!707
2024-07-08 13:11:44 +00:00
Nicki Křížek
a4461699e2 Extend max-types-per-name documentation 2024-07-08 13:56:39 +02:00
Nicki Křížek
750d72c978 Move [GL #4473] to security fixes 2024-07-08 13:56:39 +02:00
Nicki Křížek
d9dbb0d104 Tweak and reword release notes 2024-07-08 13:56:39 +02:00
Nicki Křížek
922f98a330 Add release note for [GL #4708] 2024-07-08 13:56:39 +02:00
Nicki Křížek
099e0fb0a3 Add release note for [GL #4736] 2024-07-08 13:56:39 +02:00
Nicki Křížek
fdad7bb84b Add release note for [GL #3472] 2024-07-08 13:56:39 +02:00
Nicki Křížek
6c12c81266 Prepare release notes for BIND 9.18.28 2024-07-08 13:56:38 +02:00
Nicki Křížek
4fd679054f Use a dedicated CHANGES entry for SIG(0) removal
As opposed to the main branch (where the SIG(0) was changed), it has
been removed from the maintenance branches. Use a different changes
number to indicate there was a different solution of the issue.
2024-07-08 13:56:37 +02:00
Nicki Křížek
ec3e15da3a Merge branch 'tcp-reset-connection-on-failed-send-9.18' into 'v9.18.28-release'
[9.18][CVE-2024-0760 (part 3)] Reset the TCP connection on a failed send

See merge request isc-private/bind9!722
2024-07-03 15:51:09 +00:00
Artem Boldariev
c33b3d26f6 TCP/TLS DNS: unthrottle only when all input data processing
This commit ensures that we restart reading only when all DNS data in
the input buffer is processed so the we will not get into the
situation when the buffer is overrun.
2024-07-03 15:08:01 +02:00
Ondřej Surý
e31190e704 Reset the TCP connection on a failed send
When sending fails, the ns__client_request() would not reset the
connection and continue as nothing is happening.  This comes from the
model that we don't care about failed UDP sends because datagrams are
unreliable anyway, but it greatly affects TCP connections with
keep-alive.

The worst case scenario is as follows:

1. the 3-way TCP handshake gets completed
2. the libuv calls the "uv_connection_cb" callback
3. the TCP connection gets queue because of the tcp-clients quota
4. the TCP client sends as many DNS messages as the buffers allow
5. the TCP connection gets dropped by the client due to the timeout
6. the TCP connection gets accepted by the server
7. the data already sent by the client gets read
8. all sending fails immediately because the TCP connection is dead
9. we consume all the data in the buffer in a very tight loop

As it doesn't make sense to trying to process more data on the TCP
connection when the sending is failing, drop the connection immediately
on the first sending error.

(cherry picked from commit bf9fd2a6ff)
2024-07-03 09:10:30 +02:00
Ondřej Surý
4b7c61381f Throttle the reading when writes are asynchronous
Be more aggressive when throttling the reading - when we can't send the
outgoing TCP synchronously with uv_try_write(), we start throttling the
reading immediately instead of waiting for the send buffers to fill up.

This should not affect behaved clients that read the data from the TCP
on the other end.

(cherry picked from commit bc3e713317)
2024-07-03 09:10:20 +02:00
Nicki Křížek
050a88898a Merge branch '3405-security-limit-the-number-of-resource-records-in-rrset-nxdomain-9.18' into 'v9.18.28-release'
[9.18][CVE-2024-1737 (part 2)] Be smarter about refusing to add many RR types to the database

See merge request isc-private/bind9!713
2024-07-02 11:05:57 +00:00
Ondřej Surý
8979166d35 Add more tests for adding many RR types to the database
More reclimit tests that test various scenarios adding combinations of
priority and non-priority RR types into the database.
2024-07-01 15:04:43 +02:00
Ondřej Surý
7f99d7e565 Be smarter about refusing to add many RR types to the database
Instead of outright refusing to add new RR types to the cache, be a bit
smarter:

1. If the new header type is in our priority list, we always add either
   positive or negative entry at the beginning of the list.

2. If the new header type is negative entry, and we are over the limit,
   we mark it as ancient immediately, so it gets evicted from the cache
   as soon as possible.

3. Otherwise add the new header after the priority headers (or at the
   head of the list).

4. If we are over the limit, evict the last entry on the normal header
   list.

(cherry picked from commit 57cd34441a)
2024-07-01 15:04:43 +02:00
Ondřej Surý
90c7c8078b Make the resolver qtype ANY test order agnostic
Instead of relying on a specific order of the RR types in the databases
pick the first RR type as returned from the cache.

(cherry picked from commit 58f660cf2b)
2024-07-01 13:15:04 +02:00
Ondřej Surý
c2650f5331 Expand the list of the priority types
Add HTTPS, SVCB, SRV, PTR, NAPTR, DNSKEY and TXT records to the list of
the priority types that are put at the beginning of the slabheader list
for faster access and to avoid eviction when there are more types than
the max-types-per-name limit.

(cherry picked from commit b27c6bcce8)
2024-07-01 13:14:57 +02:00
Nicki Křížek
90be23f030 Merge branch 'tcp-do-not-unthrottle-on_isc_nm_read-v9.18' into 'v9.18.28-release'
[9.18][CVE-2024-0760 (part 2)] Do not un-throttle TCP connections on isc_nm_read(), add throttling to TLS DNS

See merge request isc-private/bind9!709
2024-06-25 08:48:37 +00:00
Artem Boldariev
d4b1f7f239 Use smaller pools of requests and handles for sockets
This commit ensures that socket objects use smaller sizes for its
internal requests and handles pools. That prevents a memory allocator
from thrashing.
2024-06-18 17:54:17 +03:00
Artem Boldariev
16c1d1eb2e Avoid indefinite send re-scheduling in TLS DNS
When a peer is not reading the data we are sending it was for the TLS
DNS code to end up in a situation when it would indefinitely
reschedule send requests, effectively turning the 'uv_loop' into a
busy loop that would consume CPU cycles in endless efforts to send
outgoing data.

The main reason for that was only one send buffer dedicated for sends:
the code would re-queue sends until it is empty - that would never
happen when the remote side is not reading data.

That seems like an omission from the older day of the Network Manager
as it is quiet simple to make the code use multiple buffers for
sends. That ultimately breaks the cycle of futile send request
rescheduling.

As a side effect, this commit also gets rid of one memory copying on a
hot path.
2024-06-18 11:58:59 +03:00