]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add regression test for CVE-2022-0635
authorMark Andrews <marka@isc.org>
Thu, 17 Feb 2022 04:03:52 +0000 (15:03 +1100)
committerMichal Nowak <mnowak@isc.org>
Tue, 5 Apr 2022 07:54:45 +0000 (09:54 +0200)
bin/tests/system/synthfromdnssec/ns1/dnamed.db.in
bin/tests/system/synthfromdnssec/tests.sh

index 299adb2e504ca9b88e4035faf6dd2b2931441af2..61dfcf8d50eef838b408cd488ac4ea4b501cfba8 100644 (file)
@@ -10,7 +10,8 @@
 ; information regarding copyright ownership.
 
 $TTL 3600
-@              SOA     ns1 hostmaster 1 3600 1200 604800 3600
+@              SOA     ns1 hostmaster 1 3600 1200 604800 5
 @              NS      ns1
 ns1            A       10.53.0.1
 a              A       10.53.0.1
+dname          DNAME   example.
index 643b6f52a22aa417e72b1e7244dae46962d6d95d..d9cf0927ec0b80ba38eab9161de52528b839fa69 100644 (file)
@@ -850,5 +850,26 @@ n=$((n+1))
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
+echo_i "regression test for CVE-2022-0635 ($n)"
+ret=0
+# add DNAME to cache
+dig_with_opts dname.dnamed. dname @10.53.0.5 > dig.out.ns5-1.test$n || ret=1
+grep "status: NOERROR" dig.out.ns5-1.test$n >/dev/null || ret=1
+# add A record to cache at name before DNAME owner
+dig_with_opts a.dnamed. a @10.53.0.5 > dig.out.ns5-2.test$n || ret=1
+grep "status: NOERROR" dig.out.ns5-2.test$n >/dev/null || ret=1
+# add NSEC record to cache at name before DNAME owner
+dig_with_opts a.dnamed. aaaa @10.53.0.5 > dig.out.ns5-3.test$n || ret=1
+grep "status: NOERROR" dig.out.ns5-3.test$n >/dev/null || ret=1
+# wait for NSEC to timeout
+sleep 6
+# use DNAME for lookup
+dig_with_opts b.dname.dnamed a @10.53.0.5 > dig.out.ns5-4.test$n || ret=1
+grep "status: NXDOMAIN" dig.out.ns5-4.test$n >/dev/null || ret=1
+n=$((n+1))
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=$((status+ret))
+
+
 echo_i "exit status: $status"
 [ $status -eq 0 ] || exit 1