BIND 10 #75: auth server: incorrect handling with wildcard matching
BIND 10 Development
do-not-reply at isc.org
Fri Jul 2 02:31:06 UTC 2010
#75: auth server: incorrect handling with wildcard matching
----------------------+-----------------------------------------------------
Reporter: jinmei | Owner: each
Type: defect | Status: reviewing
Priority: major | Milestone: 05. 3rd Incremental Release: Serious Secondary
Component: b10-auth | Resolution:
Keywords: | Sensitive: 0
----------------------+-----------------------------------------------------
Comment(by each):
I may be confused about which case we're talking about here, but let me go
over my understanding of negative wildcard answers, and you tell me where
you disagree. (It's very possible I have something wrong.)
We have:
*.wild.example A 192.0.2.2
*.wilder.example CNAME www.example
*.wildest.example CNAME spork.example
www.example A 192.0.2.1
...and spork.example doesn't exist.
Query for: foo.wild.example/A
Returns: foo.wild.example/A
*.wild.example/NSEC
Because: NSEC record proves original qname doesn't exist
Query for: foo.wild.example/AAAA
Returns: NOERROR/NODATA
example/SOA
*.wild.example/NSEC
Because: NSEC record proves *.wild.example has no AAAA
SOA claims authority for negative answer
Query for: foo.wilder.example/A
Returns: foo.wilder.example/CNAME
www.example/A
*.wild.example/NSEC
Because: NSEC record proves foo.wilder.example does not exist
Query for: foo.wilder.example/AAAA
Returns: foo.wilder.example/CNAME
*.wilder.example/NSEC
<covering NSEC for www.example>
example/SOA
Because: First NSEC proves foo.wilder.example doesn't exist
Second NSEC proves www.example has no AAAA
SOA claims authority for negative answer
Query for: foo.wildest.example/A
Returns: foo.wildest.example/CNAME
*.wildest.example/NSEC
<covering NSEC for spork.example>
example/NSEC
example/SOA
Because: First NSEC proves foo.wildest.example doesn't exist
Second NSEC proves spork.example doesn't exist
Third NSEC proves *.example doesn't exist
SOA claims authority for negative answer.
Query for foo.wildest.example/AAAA is the same as foo.wildest.example/A.
My understanding was that your query matched the fourth case, above --
wildcard pointing to CNAME, but no type match. If you only got one NSEC
record, then if I'm correct in my understanding of the protocol, then BIND
9 was misbehaving. I'm told by Mark that BIND 9 did have this exact bug
at some point (though 9.7 definitely doesn't).
On re-reading, I think your query was really the second case -- wildcard
match, type mismatch, no CNAME. In that case there should be a single
NSEC, as you noted.
I think with this fix, BIND 10 handles all of the above cases correctly.
--
Ticket URL: <http://bind10.isc.org/ticket/75#comment:14>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list