]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Test adding ede with rpz cname override policy
authorMatthijs Mekking <matthijs@isc.org>
Fri, 25 Jul 2025 13:18:23 +0000 (15:18 +0200)
committerMatthijs Mekking <matthijs@isc.org>
Tue, 5 Aug 2025 06:35:51 +0000 (08:35 +0200)
When the zone is configured with a CNAME override policy, the EDE code
is not added as expected. Add a test case based on the issue in GitLab
(#5342).

When the zone contains a wildcard CNAME, the EDE code is not added as
expected. Also add a test case for this.

bin/tests/system/rpz/ns3/evil-cname.db.in [new file with mode: 0644]
bin/tests/system/rpz/ns3/named.conf.in
bin/tests/system/rpz/ns3/wild-cname.db.in [new file with mode: 0644]
bin/tests/system/rpz/ns4/tld4.db
bin/tests/system/rpz/setup.sh
bin/tests/system/rpz/tests.sh
bin/tests/system/rpz/tests_sh_rpz.py

diff --git a/bin/tests/system/rpz/ns3/evil-cname.db.in b/bin/tests/system/rpz/ns3/evil-cname.db.in
new file mode 100644 (file)
index 0000000..b3c6426
--- /dev/null
@@ -0,0 +1,21 @@
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+;
+; SPDX-License-Identifier: MPL-2.0
+;
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0.  If a copy of the MPL was not distributed with this
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
+;
+; See the COPYRIGHT file distributed with this work for additional
+; information regarding copyright ownership.
+
+; RPZ test
+;   This basic file is copied to several zone files before being used.
+;   Its contents are also changed with nsupdate
+
+
+$TTL 300
+@                                      SOA     evil-cname.  hostmaster.ns.evil-cname. ( 1 3600 1200 604800 60 )
+                                       NS      ns.tld3.
+
+evil.tld2                              CNAME   a12.tld2.
index cfb66cfea822e4d49897f8e28bf375c068db9f3a..66f65fc1307a33a434146f982adb36a072aef7fc 100644 (file)
@@ -51,6 +51,8 @@ options {
            zone "bl.tld2";
            zone "manual-update-rpz"    ede forged;
            zone "mixed-case-rpz";
+           zone "evil-cname"  policy cname a12.tld2. ede blocked;
+           zone "wild-cname"  ede blocked;
        }
        add-soa yes
        min-ns-dots 0
@@ -150,6 +152,16 @@ zone "static-stub-nomatch." {
        server-addresses { 10.53.0.10; };
 };
 
+zone "evil-cname" {
+       type primary;
+       file "evil-cname.db";
+};
+
+zone "wild-cname" {
+       type primary;
+       file "wild-cname.db";
+};
+
 # A faulty dlz configuration to check if named with response policy zones
 # survives a certain class of failed configuration attempts (see GL #3880).
 # "dlz" is used because the dlz processing code is located in an ideal place in
diff --git a/bin/tests/system/rpz/ns3/wild-cname.db.in b/bin/tests/system/rpz/ns3/wild-cname.db.in
new file mode 100644 (file)
index 0000000..6d746ac
--- /dev/null
@@ -0,0 +1,21 @@
+; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+;
+; SPDX-License-Identifier: MPL-2.0
+;
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0.  If a copy of the MPL was not distributed with this
+; file, you can obtain one at https://mozilla.org/MPL/2.0/.
+;
+; See the COPYRIGHT file distributed with this work for additional
+; information regarding copyright ownership.
+
+; RPZ test
+;   This basic file is copied to several zone files before being used.
+;   Its contents are also changed with nsupdate
+
+
+$TTL 300
+@                                      SOA     wild-cname.  hostmaster.ns.wild-cname. ( 1 3600 1200 604800 60 )
+                                       NS      ns.tld3.
+
+*.evil.tld2                            CNAME   *.wc.tld4.
index fca419c6ddc847c706114ac83ffe99c9bdcfefe0..e65dd94a332fd6f3d26ff34110916143a6d32f11 100644 (file)
@@ -64,3 +64,5 @@ a3-8.tld2     A       58.58.58.58
 a3-9.sub9.tld2 A       59.59.59.59
 
 a3-10.tld2     A       60.60.60.60
+
+*.wc           A       61.61.61.61
index 1345e2e13f1e3ba3b516e4f96e31494a4f6f332b..6286cdd2453c27e7f29b54de780be548848298fe 100644 (file)
@@ -44,6 +44,9 @@ done
 cp ns3/manual-update-rpz.db.in ns3/manual-update-rpz.db
 cp ns8/manual-update-rpz.db.in ns8/manual-update-rpz.db
 
+cp ns3/evil-cname.db.in ns3/evil-cname.db
+cp ns3/wild-cname.db.in ns3/wild-cname.db
+
 cp ns3/mixed-case-rpz-1.db.in ns3/mixed-case-rpz.db
 
 # a zone that expires quickly and then can't be refreshed
index 21f91c6e27975d1ba42c80e39e1e398eb68a2821..36c10ca95e5f8961df4839d27c84dcfc34daab8c 100644 (file)
@@ -687,6 +687,16 @@ echo_i "checking the configured extended DNS error code (EDE) (${t})"
 $DIG -p ${PORT} @$ns3 walled.tld2 >dig.out.$t || setret "failed"
 grep -F "EDE: 4 (Forged Answer)" dig.out.$t >/dev/null || setret "failed"
 
+t=$((t + 1))
+echo_i "checking the configured extended DNS error code, CNAME override (EDE) (${t})"
+$DIG -p ${PORT} @$ns3 evil.tld2 >dig.out.$t || setret "failed"
+grep -F "EDE: 15 (Blocked)" dig.out.$t >/dev/null || setret "failed"
+
+t=$((t + 1))
+echo_i "checking the configured extended DNS error code, wildcard CNAME override (EDE) (${t})"
+$DIG -p ${PORT} @$ns3 foo.evil.tld2 >dig.out.$t || setret "failed"
+grep -F "EDE: 15 (Blocked)" dig.out.$t >/dev/null || setret "failed"
+
 # reload a RPZ zone that is now deliberately broken.
 t=$((t + 1))
 echo_i "checking rpz failed update will keep previous rpz rules (${t})"
index 85f15e8a767c2d4d260d93be46d55c972ea416eb..26eef24d18e82c4b3a1181ddaa190c122bf40ae6 100644 (file)
@@ -36,11 +36,13 @@ pytestmark = pytest.mark.extra_artifacts(
         "ns3/bl-wildcname.db",
         "ns3/bl.db",
         "ns3/bl.tld2.db",
+        "ns3/evil-cname.db",
         "ns3/fast-expire.db",
         "ns3/manual-update-rpz.db",
         "ns3/mixed-case-rpz.db",
         "ns3/named.conf.tmp",
         "ns3/named.stats",
+        "ns3/wild-cname.db",
         "ns5/bl.db",
         "ns5/empty.db",
         "ns5/empty.db.jnl",