Check insecure response with missing RRSIG in authority
This scenario should succeed but wasn't due rejection of the
message at the message parsing stage.
(cherry picked from commit 4271d93f00)
This commit is contained in:
@@ -38,6 +38,7 @@ def logquery(type, qname):
|
||||
# NS gets a unsigned response.
|
||||
# DNSKEY get a unsigned NODATA response.
|
||||
# A gets a signed response.
|
||||
# TXT gets a signed NODATA response without RRSIG.
|
||||
# All other types get a unsigned NODATA response.
|
||||
############################################################################
|
||||
def create_response(msg):
|
||||
@@ -72,6 +73,11 @@ def create_response(msg):
|
||||
r.answer.append(dns.rrset.from_text(qname, 1, IN, NS, "."))
|
||||
elif rrtype == SOA:
|
||||
r.answer.append(dns.rrset.from_text(qname, 1, IN, SOA, ". . 0 0 0 0 0"))
|
||||
elif rrtype == TXT:
|
||||
r.authority.append(dns.rrset.from_text(qname, 1, IN, SOA, ". . 0 0 0 0 0"))
|
||||
r.authority.append(
|
||||
dns.rrset.from_text(qname, 1, IN, NSEC, qname + " A NS SOA RRSIG NSEC")
|
||||
)
|
||||
else:
|
||||
r.authority.append(dns.rrset.from_text(qname, 1, IN, SOA, ". . 0 0 0 0 0"))
|
||||
r.flags |= dns.flags.AA
|
||||
|
||||
@@ -43,3 +43,5 @@ ds-rrsigs-stripped. NS ns2.ds-rrsigs-stripped.
|
||||
ns2.ds-rrsigs-stripped. A 10.53.0.2
|
||||
inconsistent. NS ns2.inconsistent.
|
||||
ns2.inconsistent. A 10.53.0.2
|
||||
nsec-rrsigs-stripped. NS ns10.nsec-rrsigs-stripped.
|
||||
ns10.nsec-rrsigs-stripped. A 10.53.0.10
|
||||
|
||||
@@ -4553,5 +4553,21 @@ n=$((n + 1))
|
||||
if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
|
||||
status=$((status + ret))
|
||||
|
||||
echo_i "checking that a insecure negative response where there is a NSEC without a RRSIG succeeds ($n)"
|
||||
ret=0
|
||||
# check server preconditions
|
||||
dig_with_opts +notcp @10.53.0.10 nsec-rrsigs-stripped. TXT +dnssec >dig.out.ns10.test$n
|
||||
grep "status: NOERROR" dig.out.ns10.test$n >/dev/null || ret=1
|
||||
grep "QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1" dig.out.ns10.test$n >/dev/null || ret=1
|
||||
grep "IN.RRSIG.NSEC" dig.out.ns10.test$n >/dev/null && ret=1
|
||||
# check resolver succeeds
|
||||
dig_with_opts @10.53.0.4 nsec-rrsigs-stripped. TXT +dnssec >dig.out.ns4.test$n
|
||||
grep "status: NOERROR" dig.out.ns4.test$n >/dev/null || ret=1
|
||||
grep "QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1" dig.out.ns4.test$n >/dev/null || ret=1
|
||||
grep "IN.RRSIG.NSEC" dig.out.ns4.test$n >/dev/null && ret=1
|
||||
n=$((n + 1))
|
||||
if [ "$ret" -ne 0 ]; then echo_i "failed"; fi
|
||||
status=$((status + ret))
|
||||
|
||||
echo_i "exit status: $status"
|
||||
[ $status -eq 0 ] || exit 1
|
||||
|
||||
Reference in New Issue
Block a user