bind9/lib/ns
Ondřej Surý 3a44a13232 Refuse SIG and NXT records in dynamic updates
SIG (24) and NXT (30) are obsolete DNSSEC record types, superseded by
RRSIG and NSEC in RFC 3755.  Allowing them through dynamic update
exposes two distinct bugs that the surrounding GL#5818 work already
fixes as defense-in-depth:

  - dns__db_findrdataset() used to REQUIRE that (covers == 0 ||
    type == RRSIG), which aborts named when a SIG update reaches the
    prescan foreach_rr() call.  Fixed to accept dns_rdatatype_issig().
  - diff.c rdata_covers() used to test only RRSIG, dropping the
    covered-type field for SIG rdatas; the zone DB then filed every
    SIG rdataset under typepair (SIG, 0) instead of
    (SIG, covered_type) and follow-up adds collided at that bucket.
    Fixed to use dns_rdatatype_issig().

Both underlying bugs are still reachable via inbound zone transfer
(diff.c rdata_covers() runs from both dns_diff_apply on the IXFR path
and dns_diff_load on the AXFR path), so the type-helper fixes above
remain necessary.  For the dynamic-update path, the simplest and
safest posture is to refuse SIG and NXT outright at the front door in
ns/update.c, alongside the existing NSEC/NSEC3/non-apex-RRSIG
refusals.  KEY remains permitted because it is still used to carry
public keys for SIG(0) transaction authentication.

The existing tcp-self SIG regression test is repointed to assert
REFUSED on the SIG add, a symmetric NXT test is added, and the
SIG-via-dyn-update covers-bucket test is removed because it is no
longer reachable through this entry point; AXFR-based coverage of
diff.c rdata_covers() follows in a separate commit.
2026-04-17 16:09:39 +02:00
..
include Use delegation DB for bestzonecut lookups 2026-03-30 20:41:13 +02:00
.gitignore Add support for User Statically Defined Tracing (USDT) probes 2023-08-21 18:39:53 +02:00
client.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
hooks.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
interfacemgr.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
listenlist.c Use ControlStatementsExceptControlMacros for SpaceBeforeParens 2025-08-19 07:58:33 +02:00
meson.build Use unique names for probes.d files 2025-09-24 13:18:13 +02:00
notify.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
probes-ns.d Use unique names for probes.d files 2025-09-24 13:18:13 +02:00
query.c Rename view->hints to view->rootdb and rearm priming 2026-04-16 13:39:18 +02:00
server.c Add low contention stats counter 2026-03-26 10:19:25 +01:00
stats.c Add low contention stats counter 2026-03-26 10:19:25 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
update.c Refuse SIG and NXT records in dynamic updates 2026-04-17 16:09:39 +02:00
xfrout.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00