DNS解析软件曝缓存投毒漏洞,可重定向用户至恶意网站

互联网最广泛使用的DNS解析软件BIND和Unbound发现严重缓存投毒漏洞,攻击者可利用逻辑错误和伪随机数生成弱点篡改DNS缓存记录,将用户引导至恶意网站。这些漏洞令人联想到2008年Kaminsky发现的著名DNS缓存投毒攻击。

互联网最广泛使用的域名解析软件BIND的开发人员警告存在两个漏洞,允许攻击者污染整个结果缓存,将用户发送到与真实目标无法区分的恶意目的地。

这些被追踪为CVE-2025-40778和CVE-2025-40780的漏洞分别源于逻辑错误和生成伪随机数的弱点。它们的严重性评级均为8.6。此外,域名系统解析器软件Unbound的开发人员也警告了由同一研究人员报告的类似漏洞。Unbound漏洞的严重性评分为5.6。

重温Kaminsky的缓存投毒攻击

这些漏洞可被利用,导致位于数千个组织内的DNS解析器用损坏的结果替换有效的域名查询结果。损坏的结果会将域名运营商控制的IP地址替换为攻击者控制的恶意地址。所有三个漏洞的补丁已于周三发布。

2008年,研究员Dan Kaminsky揭示了互联网范围内更严重的安全威胁之一。即所谓的DNS缓存投毒,它使得攻击者能够将大量用户发送到冒充网站,而不是属于Google、美国银行或其他任何人的真实网站。通过行业范围的协调,全球数千家DNS提供商与浏览器和其他客户端应用程序的制造商合作实施了一个修复程序,避免了这种末日场景。

该漏洞是由于DNS使用UDP数据包造成的。由于它们只在一个方向上发送,DNS解析器在与“权威服务器”通信时无法使用密码或其他形式的凭据,这些服务器被正式指定为给定顶级域提供IP查询。此外,UDP流量通常很容易伪造,这意味着发送看似来自其他来源的UDP数据包很容易。

为确保解析器仅接受来自权威服务器的结果并阻止可能由未经授权服务器发送的任何中毒结果,解析器为每个请求附加一个16位数字。除非来自服务器的结果包含相同的ID,否则将被拒绝。

Kaminsky意识到只有65,536个可能的事务ID。攻击者可以通过向DNS解析器 flooding 特定域名的查询结果来利用此限制。每个结果将使用域名的一个微小变体,例如1.arstechnica.com、2.arstechnica.com、3.arstechnica.com,依此类推。每个结果还将包含不同的事务ID。最终,攻击者将复制一个未完成请求的正确编号,恶意IP将被提供给所有依赖发出该请求的解析器的用户。这种攻击被称为DNS缓存投毒,因为它污染了解析器的查询存储。

DNS生态系统最终通过指数级增加接受响应所需的熵量来解决了这个问题。在此之前,查询和响应仅通过端口53传输,而新系统随机选择数千个潜在端口中的一个。DNS解析器要接受响应,它必须通过相同的端口号传输。结合事务编号,熵以数十亿计,使得攻击者在数学上无法找到正确的组合。

至少有一个BIND漏洞CVE-2025-40780有效地削弱了这些防御。

“在特定情况下,由于所使用的伪随机数生成器存在弱点,攻击者有可能预测BIND将使用的源端口和查询ID,”BIND开发人员在周三的披露中写道。“如果欺骗成功,BIND可能被诱骗缓存攻击者的响应。”

CVE-2025-40778也增加了复活缓存投毒攻击的可能性。

“在某些情况下,BIND在接受答案中的记录时过于宽松,允许攻击者将伪造数据注入缓存,”开发人员解释道。“伪造记录可以在查询期间注入缓存,这可能会影响未来查询的解析。”

即使在这种情况下,由此产生的后果也将比Kaminsky设想的情况有限得多。其中一个原因是权威服务器本身并不易受攻击。此外,正如红帽在此处和此处指出的,各种其他缓存投毒对策仍然有效。它们包括DNSSEC,这是一种要求DNS记录进行数字签名的保护措施。额外的措施包括速率限制和服务器防火墙,这些被视为最佳实践。

“由于利用非易事,需要网络级欺骗和精确计时,并且仅影响缓存完整性而不会导致服务器泄露,该漏洞被认为是‘重要’而非‘严重’,”红帽在其关于CVE-2025-40780的披露中写道。

尽管如此,这些漏洞仍有可能在某些组织中造成损害。所有三个漏洞的补丁应尽快安装。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计