mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
CVE-2018-14629 dns: CNAME loop prevention using counter
Count number of answers generated by internal DNS query routine and stop at 20 to match Microsoft's loop prevention mechanism. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13600 Signed-off-by: Aaron Haslett <aaronhaslett@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
This commit is contained in:
committed by
Karolin Seeger
parent
c3f6085991
commit
97b426baba
@ -846,6 +846,28 @@ class TestComplexQueries(DNSTest):
|
||||
self.assertEquals(response.answers[1].name, name2)
|
||||
self.assertEquals(response.answers[1].rdata, name0)
|
||||
|
||||
def test_cname_loop(self):
|
||||
cname1 = "cnamelooptestrec." + self.get_dns_domain()
|
||||
cname2 = "cnamelooptestrec2." + self.get_dns_domain()
|
||||
cname3 = "cnamelooptestrec3." + self.get_dns_domain()
|
||||
self.make_dns_update(cname1, cname2, dnsp.DNS_TYPE_CNAME)
|
||||
self.make_dns_update(cname2, cname3, dnsp.DNS_TYPE_CNAME)
|
||||
self.make_dns_update(cname3, cname1, dnsp.DNS_TYPE_CNAME)
|
||||
|
||||
p = self.make_name_packet(dns.DNS_OPCODE_QUERY)
|
||||
questions = []
|
||||
|
||||
q = self.make_name_question(cname1,
|
||||
dns.DNS_QTYPE_A,
|
||||
dns.DNS_QCLASS_IN)
|
||||
questions.append(q)
|
||||
self.finish_name_packet(p, questions)
|
||||
|
||||
(response, response_packet) =\
|
||||
self.dns_transaction_udp(p, host=self.server_ip)
|
||||
|
||||
max_recursion_depth = 20
|
||||
self.assertEquals(len(response.answers), max_recursion_depth)
|
||||
|
||||
class TestInvalidQueries(DNSTest):
|
||||
def setUp(self):
|
||||
|
Reference in New Issue
Block a user