mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
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:
parent
2c42324e26
commit
fef5052067
3 changed files with 24 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue