对于没有 DNSSEC 的站点来说,Kaminsky 错误仍然是一个问题吗?

信息安全 dns dnssec
2021-08-28 11:31:39

我已经阅读了有关Kaminsky 错误的信息,但我不完全理解攻击者使用此漏洞有多容易。

DNS 软件现在是否已更新,因此攻击者利用此漏洞不是那么容易?还是安全站点需要使用 DNSSEC 才能确保安全?

例如,想想网上银行。是否需要将 DNSSEC 与 SSL/TLS 结合使用才能确保安全?还是有其他方法可以保护 kaminsky 错误?

2010 年 8 月,SecurityWeek 将 Kaminsky 漏洞列为“最糟糕的五项DNS 安全事件”中最严重的 DNS 安全事件

1.“卡明斯基虫”让整个互联网处于危险之中

2008 年 7 月,所谓的“卡明斯基漏洞”通常被认为可能是互联网面临的最大安全威胁,引起了极大的不安甚至更大的炒作。研究人员 Dan Kaminsky 发现利用 DNS 中的弱点很容易,并构建了软件来做到这一点。这一弱点将使恶意黑客能够通过毒害 Internet 服务提供商缓存的 DNS 信息来透明地模仿任何网页或电子邮件帐户。

...

今天,DNSSEC 是 DNS 协议的新标准安全扩展,提供了防止 Kaminsky 的发现可能启用的那种缓存中毒攻击的最佳方法。

3个回答

Kaminsky 并不是第一个发现 DNS 缓存潜在漏洞的人。事实上,许多此类漏洞已被发现,这就是 DNSSEC 很重要的原因。DNSSEC 是针对这种攻击模式的深度防御策略。但是负责任的软件厂商会修补漏洞,当你在 BIND 中发现 DNS 缓存中毒攻击时,它会立即修复。

是否需要将 DNSSEC 与 SSL/TLS 结合使用才能确保安全?

理论上,没有。SSL/TLS(以及一般的密码学)全部意义在于保证您与正确的人交谈(无论如何,即使 DNS 已损坏)。

此外,SSL/TLS 在您的连接很容易被拦截的情况下最有用;在这种情况下,根本不需要有人去弄乱 DNS。(仅当您没有缓存正确的 DNS 答案时,弄乱 DNS 才有用;弄乱 TCP 连接无论如何都有效。)

仍然有可能提出(设计)一个理论案例,例如 DNSSEC 将是必要的保护:

  1. 对手无法完全控制您的 Internet 连接,只能注入虚假数据包(源 IP 地址不属于对手的 IP 数据包);
  2. 但是他知道您的 DNS 解析器的弱点,并且可以使您相信不正确的 DNS 语句(bank.com 解析为 bad.IPaddress);
  3. bad.IPaddress 属于他,他在那里运行 SSL/TLS 之上的 Web 服务器(称为 HTTPS 服务器);
  4. 要么:a)他知道您的 SSL/TLS 客户端的弱点,因此它可以使您的浏览器相信位于 bad.IPaddress 的 SSL/TLS 服务器确实是“bank.com”,或者 b)他已获得 SSL/TLS 证书从公认的证书颁发机构获取“bank.com”,通过欺骗(他出现在他们的办公桌前声称代表“bank.com”,通过黑客攻击(他知道证书检查过程中的弱点),通过胁迫(包括法律更正) ),或者你能想到的其他方式。

在这种情况下,DNSSEC 仍会保护您;如果没有 DNSSEC,您将在没有警告的情况下连接到错误的人。

任何人都不太可能仅仅为了获取您的银行详细信息而做出这些努力,因为他可以通过技术上蹩脚的手段轻松获得如此多的帐号(显然最蹩脚的钓鱼欺诈仍然有效 - 或者他们会停止这样做) - 除非您的银行密码比普通的银行密码更有价值(也许你有很多钱,并且能够将任何金额转移给任何人,只需使用您的普通银行帐户密码,而不需要额外的步骤 - 在任何情况下都是一个糟糕的主意)。

似乎更不可能有人会为拦截受某种加密(任何加密)保护的信用卡号码而烦恼,因为他们可以通过入侵存储它们的系统一次获得大量(最后我听说,他们仍然可以获得大量价格合理的数字)。

但 SSL/TLS 用于保护比支付数据更重要的东西:软件下载许多下载的软件,尤其是自动更新,仅通过通过“安全”链接下载(软件包未签名或未自动检查签名或由不知道自己可以检查包加密签名,甚至应该有一个签名)。

除非您在严格隔离的环境下运行,否则下载的软件不仅可以读取您的银行详细信息,还可以读取您的所有个人文件,以及您通过“安全”SSL/TLS 链接发送的任何数据。

有效防御 Kaminsky 攻击。存在过度简化的风险,Kaminsky 攻击可用于攻击不使用源端口随机化的 DNS 客户端。对 Kaminsky 攻击的直接防御是打开源端口随机化。如今,大多数现代 DNS 软件确实执行源端口随机化。

(如果您有一段时间没有这样做,我强烈建议您更新客户端和服务器上的 DNS 软件,以获得这种防御的好处。)

当前状态。幸运的是,大多数 Internet 已经将其 DNS 软件升级到了包含针对 Kaminsky 攻击的防御的更新版本。这些防御使卡明斯基的攻击变得相当困难。(它们并非 100% 不可能,但它们需要大量资源:数十亿个数据包。)因此,今天的大多数站点都可能受到相当好的保护,免受 Kaminsky 攻击。例如,您的 ISP 和您的银行受到保护的可能性非常大。

如果有任何落后者没有将他们的 DNS 软件更新到包含针对 Kaminsky 攻击的防御(例如源端口随机化)的最新版本,那么他们很可能非常容易受到攻击。Kaminsky 攻击很容易安装并且非常有效,如果服务器不包含针对它的防御。

DNSSEC 呢? DNSSEC 是一项单独的交易。它旨在提供安全性,即使在您的 DNS 服务器受到威胁或中间人攻击您的网络流量的情况下也是如此。因此,理论上,DNSSEC 将提供一种可接受的替代防御方式来抵御 Kaminsky 攻击。

然而,在实践中,依靠 DNSSEC 来保护您免受 Kaminsky 攻击将是一个糟糕的想法。有两个问题:

  • 首先,DNSSEC 目前并未广泛部署。今天,很少有域使用 DNSSEC 签名。这使得部署具有严格验证的 DNSSEC 成为不可能。相反,在当前的 DNSSEC 实施中,如果接收到对未签名域的响应,则在不执行任何加密检查的情况下接受响应。这意味着易受 Kaminsky 攻击的客户端仍然可能受到攻击,即使它使用 DNSSEC。

  • 其次,源端口随机化部署起来非常容易,而 DNSSEC 部署起来更具挑战性(运营和后勤)。继续使用易受攻击的旧版本 DNS 软件,您必须发疯。部署源端口随机化很容易(在大多数情况下,只需升级到最新版本的 DNS 软件),如果不利用源端口随机化防御,那就太疯狂了。

DNSSEC 仍然是一个非常好的主意,Kaminsky 攻击凸显了广泛部署 DNSSEC 的重要性。所以,不要误解我的意思。我鼓励你在你的机器上启用 DNSSEC。只是不要将其视为源端口随机化的替代品。

综上所述。每个人都应该使用源端口随机化。这很简单,也是目前针对 Kaminsky 攻击最有效的防御措施。幸运的是,我的印象是源端口随机化已经被非常广泛地使用,因此大多数互联网应该可以很好地防御 Kaminsky 攻击。

从长远来看,DNSSEC 很重要,因为它提供了强大的保护,可以防止针对 DNS 的一大类可能的攻击——即使是我们没有想到或不知道的攻击,但将来可能会发现。这是我们拥有的最好的预防措施,可以主动防止未来发生卡明斯基袭击等事件。因此,网络运营商和其他人最好尽其所能以所有审慎的速度部署 DNSSEC。