游荡在域名上的“幽灵”
如果一个恶意域名在被删除后仍然能够解析,则无法实现停止相关攻击活动的目的。事实上由于缓存的作用,一个域名在授权记录被删除后的一段时间仍可能被一些递归解析服务器解析,这种现象仅仅只是DNS缓存的一种副作用,随着缓存中的授权记录过期(最长不超过一个星期),被删除的域名最终将从整个域名系统中清除。
但我们发现如果攻击者进行一些特定的操控,就有可能将缓存中的授权记录长期保持,使得一个被删除的域名持续保持可解析的状态,成为所谓的“鬼”域名。
图2 域名授权记录优先级及更新策略问题
鬼域名问题的根源在于DNS对于授权方式以及缓存更新策略没有明确定义。如图2所示,递归解析器在解析过程中会同时从一个域名的上级服务器(父节点)和其本身权威服务器(子节点)获得这个域名的授权记录。根据DNS的协议规范,递归解析器应该优先接受子节点的记录(包括授权记录)。同时,为了提高缓存效率,DNS允许递归解析器对已经缓存的记录进行更新。这两个特性导致攻击者能够通过变更域名自身权威服务器上的授权记录来不停刷新递归解析服务器中的缓存记录,使得被父节点删除的恶意域名持续保持解析。我们在实验中证实大多数的递归解析服务器实现均存在这一问题。
业界的相关响应
由于DNS的重要性,鬼域名问题在NDSS会议上公布以后引起业界的积极响应。公共安全漏洞库增加一个新的条目CVE-2012-1033;部署最广泛的域名服务器软件BIND的开发厂商ISC发布了相关的安全公告并进行验证;微软公司安全组已经受理我们的安全报告;美国最大的ISP之一comcast也通过邮件告知他们的初步测试结果。
不过,ISC后来决定暂时不对现有的软件进行修改。因为鬼域名现象的出现不是由于软件实现上的漏洞,而是DNS标准设计的问题。而且,关于如何修改标准,甚至是否修改标准,目前DNS业界还没有达成共识。尽管单从授权机制看来,来自上一级域名服务器的授权记录似乎应该有更高的优先级,但是权威服务器有权修改自己域名空间里的记录也符合DNS的策略。
无论如何,鬼域名的问题依然存在,尽管目前并没有发现利用这种机制进行攻击的案例。如果不解决,始终是个安全隐患。我们期待IETF或者其他DNS相关的组织会进一步讨论这一问题的解决方案。
解决鬼域名的策略
从技术的角度,解决鬼域名问题从逻辑上并不复杂。从运行的角度只需要网络管理员定期对递归解析服务器的缓存进行刷新,从协议本身完备的角度也有多种解决方法,如只接受父节点的授权记录或者接受子节点的授权记录但不允许刷新等。考虑到DNS系统的重要性,具体采取哪种方法,是否需要对原有协议规范进行修订还需要对可能的影响进行进一步评估,这也是为什么目前DNS业界并没有马上认同某种解决方案的部分原因。
DNS作为最重要的互联网基础服务之一,它的成功运行一定程度上得益于遍布世界各地的缓存。然而,像所有分布式系统一样,这么大规模的缓存更新是个相当复杂的问题。鬼域名的出现主要因为在缓存更新时,优先选择来自权威域名服务器而不是它的父节点的信息,并允许持续自我更新,导致被删除的域名无法可靠地回收。
尽管鬼域名作为一种安全隐患,已经是学术界、工业界的广泛共识,但是对如何解决仍然存在一些争议。DNSSEC的进一步广泛布署也许是包括鬼域名在内的许多DNS安全问题的比较完整的解决方案。我们也希望借此推进中国DNSSEC的布署,防患于未然。DNS的任何小问题都是互联网的大问题,因为DNS对互联网、对整个社会都太重要了。
(作者单位为清华大学信息网络工程研究中心)
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。