bind9/lib/ns
Aram Sargsyan baa9698c9d Fix RRL responses-per-second bypass using wildcard names
It is possible to bypass Response Rate Limiting (RRL)
`responses-per-second` limitation using specially crafted wildcard
names, because the current implementation, when encountering a found
DNS name generated from a wildcard record, just strips the leftmost
label of the name before making a key for the bucket.

While that technique helps with limiting random requests like
<random>.example.com (because all those requests will be accounted
as belonging to a bucket constructed from "example.com" name), it does
not help with random names like subdomain.<random>.example.com.

The best solution would have been to strip not just the leftmost
label, but as many labels as necessary until reaching the suffix part
of the wildcard record from which the found name is generated, however,
we do not have that information readily available in the context of RRL
processing code.

Fix the issue by interpreting all valid wildcard domain names as
the zone's origin name concatenated to the "*" name, so they all will
be put into the same bucket.
2022-09-08 09:15:30 +02:00
..
include Update netmgr, tasks, and applications to use isc_loopmgr 2022-08-26 09:09:24 +02:00
client.c Fix RRL responses-per-second bypass using wildcard names 2022-09-08 09:15:30 +02:00
hooks.c Move netmgr/uv-compat.h to <isc/uv.h> 2022-05-03 10:02:19 +02:00
interfacemgr.c when creating an interface, set magic before linking 2022-09-06 17:12:14 -07:00
listenlist.c Store HTTP quota size inside a listenlist instead of the quota 2022-06-28 15:42:38 +03:00
log.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
Makefile.am Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
notify.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
query.c Fix RRL responses-per-second bypass using wildcard names 2022-09-08 09:15:30 +02:00
server.c Store HTTP quota size inside a listenlist instead of the quota 2022-06-28 15:42:38 +03:00
sortlist.c Add isc_rwlock around dns_aclenv .localhost and .localnets member 2022-04-04 19:27:00 +02:00
stats.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
update.c Wait with NSEC3 during a DNSSEC policy change 2022-08-22 15:55:46 +02:00
xfrout.c Remove dead code 2022-09-06 12:47:08 +00:00