[svn] commit: r2479 - /branches/trac221b/src/bin/xfrin/xfrin.py.in
BIND 10 source code commits
bind10-changes at lists.isc.org
Sat Jul 10 18:59:36 UTC 2010
Author: jinmei
Date: Sat Jul 10 18:59:36 2010
New Revision: 2479
Log:
disabled xfrin triggerred by a notify. the original implementation naively trusts the notify sender and uses it as the transfer master, which is very dangerous from security point of view.
Modified:
branches/trac221b/src/bin/xfrin/xfrin.py.in
Modified: branches/trac221b/src/bin/xfrin/xfrin.py.in
==============================================================================
--- branches/trac221b/src/bin/xfrin/xfrin.py.in (original)
+++ branches/trac221b/src/bin/xfrin/xfrin.py.in Sat Jul 10 18:59:36 2010
@@ -418,8 +418,22 @@
# share the code.
(zone_name, rrclass,
master_addr, db_file) = self._parse_cmd_params(args)
- ret = self.xfrin_start(zone_name, rrclass, db_file,
- master_addr, True)
+
+ # XXX: master_addr is the sender of the notify message.
+ # It's very dangerous to naively trust it as the source of
+ # subsequent zone transfer; any remote node can easily exploit
+ # it to mount zone poisoning or DoS attacks. We should
+ # locally identify the appropriate set of master servers.
+ # For now, we disable the code below.
+ master_is_valid = False
+
+ if master_is_valid:
+ ret = self.xfrin_start(zone_name, rrclass, db_file,
+ master_addr, True)
+ else:
+ errmsg = 'Failed to validate the master address ('
+ errmsg += args['master'] + '), ignoring notify'
+ ret = [1, errmsg]
answer = create_answer(ret[0], ret[1])
else:
answer = create_answer(1, 'unknown command: ' + command)
More information about the bind10-changes
mailing list