DNS 漏洞:您应该关注的原因
纽约时报撰写关于域名系统 (DNS) 的文章并非每天都有,但这次的 DNS 漏洞绝非寻常。
自从 Dan Kaminsky 首次宣布他在 DNS 协议中发现的重大缺陷以来,已经过去了五个多星期。尽管大部分漏洞细节已经公开了几个星期,但直到上周在拉斯维加斯举行的 Black Hat 和 Defcon 会议上,Kaminsky 才解释了问题的深度。当我听他描述这个漏洞如何被利用时,我的心沉到了谷底,感到有点恶心。我的朋友半开玩笑地对我耳语:“我正在考虑转到会计部门。”
是的,这个漏洞就是这么糟糕。每个人都应该关注这个漏洞。幸运的是,目前大多数大型网站都已经打上了补丁。但当前的补丁只是为我们争取了一些时间,并没有真正解决根本问题。
如果您是刚加入讨论,Dan 发现的这个漏洞可以被攻击者用来投毒 DNS 记录。换句话说,他可以重定向您的电子邮件、即时消息、网站访问或任何其他依赖 DNS 的流量。当然,这意味着所有流量。是的,这听起来很可怕,但似乎大多数人并没有充分意识到这种漏洞可以被利用的程度。Dan 的演示非常清楚地说明了这一点。
这对您意味着什么
让我们从 McAfee 副总裁 George Kurtz 的一句引言开始
如果你控制了 DNS 服务器,你就控制了互联网。
这个漏洞实际上将 DNS 服务器的控制权授予了任何足够聪明去执行攻击的人。当您控制 DNS 时,您也控制了电子邮件。当您控制电子邮件时,您也就控制了一切。
电子邮件已崩溃
假设我使用这个 DNS 漏洞来控制了您的电子邮件帐户。最明显的影响是我现在可以阅读您的邮件。而且,我可以阅读您的邮件并继续将其转发给您,这样您永远不会意识到有问题。我可以向您的邮件添加附件,或者用病毒或恶意软件感染来自您信任的人的现有附件。当您最好的朋友向您发送一个关于 YouTube 上那个搞笑视频的链接时,嗯,我可以重写该链接,让它指向任何我想去的地方。
当然,我们都知道没有人会使用互联网邮件系统来作恶,对吧?试想一下,除了像您多年来一直看到的那种烦人的垃圾邮件之外,您现在还必须担心来自您朋友的合法消息会成为麻烦的载体。
那么,我还可以如何利用电子邮件来为我谋利呢?Kaminsky 指出,几乎每个网站都依赖您的电子邮件地址来验证您的身份。使用 whois 数据库,我可以找到 microsoft.com 的管理联系人,并声明该电子邮件地址。然后我只需浏览到 microsoft.com 的注册商网站,点击“忘记密码”链接,并重置该帐户的密码。由于我正在接收该帐户的电子邮件,我也会收到他们发送给我的链接,上面写着“请点击此处验证您的新密码”。那时我就有效地拥有了 microsoft.com,并且可以做任何我想做的事情,包括更改联系电子邮件地址,或将其转移到不同的注册商。
下次您在网站上看到“忘记密码”链接时,请考虑一下。
SSL 已崩溃
Dan Kaminsky 说,很多人都认为 SSL 是一种安全措施。他告诉他们应该更加小心。毕竟,如何注册 SSL 证书呢?任何人都可以购买证书,但他们必须证明对域名的某种权威。证书颁发机构 (CA) 通过使用 DNS 来检查这种权威,通常通过以下三种方式之一
- CA 通过 whois 查找域名
- CA 向他们记录在案的地址发送电子邮件
- CA 检查网站服务器上是否有一个特殊命名的文件
正如 Dan 在他的演讲中指出的那样,所有这三种方法都依赖于我们已经投毒的 DNS。仅仅因为您访问的网站使用了 SSL,并不意味着它就是您认为的网站。:)
Web 已崩溃
好了,关于电子邮件就说这么多。您还应该关注什么呢?(好像这还不够似的)那么,您认为您访问的网站中有多少嵌入了以下代码?
<script type="text/javascript" src="https://#/pagead/show_ads.js"></script> <script type="text/javascript" src="http://partner.googleadservices.com/gampad/google_service.js"></script> <script src="https://#/urchin.js" type="text/javascript"></script> <script type="text/javascript"> _uacct = "UA-XXXXXXX-1"; urchinTracker(); </script>
如果我向您的 DNS 中注入针对 pagead2.googlesyndication.com、partner.googleadservices.com 或 www.google-analytics.com 的投毒记录,那么我可以从您访问的任何使用 Google Analytics 或 Google Adsense 的网站执行 JavaScript 代码。对于 ad.doubleclick.net、developer.yahoo.com (YUI) 或任何其他提供常用包含脚本 (src="?") 的网站来说,情况也是如此。
桌面应用程序已崩溃
Kaminsky 还指出,我们现在已经进入互联网扩展到桌面的时代。许多应用程序在没有互联网连接的情况下是无用的,例如 AIM/ICQ/Jabber 等、iTunes、Skype 和大多数流行的游戏。通过投毒 login.oscar.aol.com 的 DNS 条目,我可以拦截任何使用该 DNS 服务器的人的 AIM 消息。对于任何其他连接到互联网的桌面应用程序来说,情况也是如此。
也许最令人担忧的是应用自动更新的机制。是的,这包括针对流行的 Linux 软件包管理系统(如 apt-get 和 yum)的攻击。但这不仅仅限于此,还包括诸如 iTunes、Mac OS X、Open Office、Winzip、Winamp 等自动更新的系统。想象一下,如果攻击者可以投毒 Comcast 的 DNS 服务器中的 swquery.apple.com 和 swscan.apple.com,那将会发生什么。Mac OS X 以及 iTunes 会定期在后台检查软件更新,并在有升级可用时弹出通知。攻击者可以推送任何软件更新,而无辜的用户永远不会知道其中的区别。
其他一切也都崩溃了
当然,这些只是攻击者可能想要投毒 DNS 的一些原因。Kaminsky 在他的演示文稿中涵盖了更多内容,包括 CDN 填充、写入 SSL Cookie 以及发现数据库、备份服务器和身份验证服务的内部地址。他明确指出,确实有可能投毒顶级域名,包括 com、net 和 org。没错,攻击者可以拦截所有对 .com 的 DNS 请求。这意味着他不仅可以回复您的问题,还可以找出您正在询问的问题。那些“私有”DNS 记录不再是私有的(实际上它们从来都不是)。
供应商在 7 月 8 日发布的初始补丁现在已经在大多数地方部署,但再次强调,这只是一个临时的解决方案。它只是让攻击者更难投毒 DNS - 但并没有使其不可能。事实上,一位名叫 Evgeniy Polyakov 的俄罗斯研究人员已经证明,使用两台标准桌面 PC 和千兆以太网连接就可以投毒最新的已打补丁的 BIND DNS 服务器。虽然不是 10 秒,但他花了 10 个小时,并且需要大量的流量。
我们仍然处于困境之中,但这是我们目前能做到的最好的。