潜伏网络中的定时炸弹:边界网关协议

ZDNet软件频道 时间:2009-12-06 作者:ZDNet网络频道 | ZDNet网络频道 我要评论()
本文关键词:互联网 边界网关协议 边界网关 路由器
作为互联网的核心路由协议,边界网关协议采用了信任机制,所以攻击者被容许对互联网流量进行拦截。这个问题已经存在了很长的时间了,并且一直没有被修复。在本文中我将解释相关的原因,并指出新问题出现的原因。

ZDNet网络频道原创翻译 转载请注明作者以及出处

作为互联网的核心路由协议,边界网关协议采用了信任机制,所以攻击者被容许对互联网流量进行拦截。这个问题已经存在了很长的时间了,并且一直没有被修复。在本文中我将解释相关的原因,并指出新问题出现的原因。
--------------------------------------------------------------------------------------------

在今年的DefCon国际黑客大会上,安全研究员安东·卡佩拉山(5Nines数据的数据中心和网络主管)和亚历克斯·皮里苏瓦(Pilosoft的首席执行官)对经过修改的新版本边界网关协议(BGP)进行了说明。关于丹·卡明斯基的错误,我在文章“域名系统:互联网非常幸运地逃过了一劫”中做过详细的说明,这导致了通过边界网关协议进行的窃听行为越来越受到人们的关注。

边界网关协议的工作原理

边界网关协议运行在互联网服务提供商的路由器上,属于属于一种“幕后”协议。我们都知道互联网是一个庞大的互联网络,边界网关协议的路由就是建立联系的桥梁,它可以让路由器知道如何以及向哪里传输互联网流量。相邻的路由器边界网关协议被称做邻居。边界网关协议的邻居之间采用的是活跃连接,以便进行信息交换。一旦边界网关协议的路由表发生了变换,路由器会将变动信息自动发送给所有的邻居。在边界网关协议中,由于互联网是一个非常弹性的网状网,所以邻居的概念是很大的一个部分。

由于互联网是一个网状网络的结果,所以每条路线总是会有多种选择。因此,对于路由器来说,它们是怎么挑选邻居的呢?第一,边界网关协议的每个条目都包含了几个参数,用来对不同性质的路线进行分析。下一步,一个算法将利用这些参数里选择出最佳路线。其中的一些参数是weight、local preference、origin和AS_path(请记住这一个)。这些并不是全部,边界网关协议会检查更多的参数,但这个是最重要的,并且也是最根本的设计缺陷所在,导致窃听行为成为可能。

为了找到最佳路线,边界网关协议会对每个网络的间隔进行考虑。举例来说,一个路由器正在寻找网络地址10.10.10.25。从边界网关协议的路由表中,它可以找到进入1o.xxx.xxx.xxx网络的路线。不过,它还发现了另一条可以进入10.10.xxx.xxx网络的路线。因为进入10.10.xxx.xxx网络是一条比较好的路线,路由器将选择它,将数据包发送到10.10.xxx.xxx网络的路由器上。每个路由器都将重复上面的步骤,直至互联网流量到达预定的目的地。

不用说,边界网关协议也可以变得非常复杂。在这个时间,最好的说明方法是通过例子来演示。以如果我想去net.zdnet.com.cn为例子来看:

1. 我在网络浏览器的地址栏中输入net.zdnet.com.cn,然后单击确定。

2. 在域名系统魔力的帮助下,我的网络浏览器知道了net.zdnet.com.cn的网络地址,并且发送了一个网页查询到我的互联网服务提供商的网关路由器上。

3. 网关路由器然后检查它的边界网关协议路由表中的信息,选择最佳路线。

4. 通过边界网关协议进行的选择,网关路由器按照最佳路线发送数据包到邻居的路由器。在每个路由器中都要进行这样的选择,直到数据包到达net.zdnet.com.cn。

边界网关协议的设计缺陷

现在我们对边界网关协议的工作模式有了清晰的了解,下面我就说明一下为什么边界网关协议的设计缺陷会导致攻击者的重定向和窃听成为可能。基本上,由于边界网关协议中的路由条目的邻居的数量是非常多。因此,路由器只是假设边界网关协议的路由条目是正确的,并通过这条路径传输数据包。

但攻击者会肆无忌惮地利用这种信任,以便进行边界网关协议的重定向攻击。窃听者所有要做的仅仅是比边界网关协议官方提供的邻居细化的网络地址(例如使用10.10.25.xxx之类更接近真实的网络IP地址)。在伪装的边界网关协议数据包传播后,攻击者的网络不用很长的时间就可以得到传输的数据流了。

YouTube的中断事件

边界网关协议的重定向攻击并不是什么新出现的事件,实际上你们中许多人也许还记得发在过去两个月的时间里,YouTube的中断事件。这起事件就是由于在巴基斯坦的一家互联网服务提供商偶然误操作的一次边界网关协议重定向造成的。如果你希望重新了解这起事件(我就这么做了),信息世界的文章“YouTube的中断凸现互联网大问题”在这里可以阅读。此外,事件的具体细节和互动式显示过程可以在RIPE NCC(负责整个欧洲地区的IP地址资源分配与管理的组织)的网站上找到。

自治系统的路由器

如果已经访问了RIPE的网站,你就可发现象AS17557之类的路由器命名符。自治系统号码(ASN)被分配到每个自治系统(AS)以便来进行识别。简单的说,每个自治系统是一个单独实体,可以对路由信息控制进行处理。该实体负责维护控制范围内所有采用边界网关协议路由器提供的服务。

两次重定向

边界网关协议的重定向发生的时间,即使不是恶意的,造成的后果也是非常明显的,。为了对这种行为的后果进行解释,还以YouTube事件为例子,一旦巴基斯坦的互联网服务提供商对边界网关协议路由所作的改动开始生效,YouTube的网站就无法进入,并且会影响到所有国家的访问。

卡佩拉山和皮里苏瓦已经找到一种方法,可以让互联网用户对重定向攻击进行确认。他们创造性地增加了第二次调整,这样就可以防止中间人类型(MitM)攻击进行的窃听。专家们知道,这是理论上是可行,但直到2008年的DefCon国际黑客大会之前,没人能够实现这样的效果。

通过增加第二次重定向,卡佩拉山和皮里苏瓦给我留下了深刻的印象,因为这不是一个很直观的过程。为了证明这一点,我对确切发生的过程进行一下概略的说明。首先,攻击者的路由器作为到达原始目的地网络的最佳途径是通过欺骗自身实现的。由于边界网关协议的工作原理,我们知道现在错误的路由信息已经传播到攻击者的路由器所有边界网关协议的邻居上。由于所有攻击者的路由器边界网关协议的邻居都认为它是最佳途径,因此,攻击者的路由器的所有传输都会通过(边界网关协议的邻居)送回邻居。现在,问题就出现了,不要着急,下面就是最酷的部分。


AS path prepending

卡佩拉山和皮里苏瓦通过利用AS path prepending绕过了这个问题。在前面,我们说过路径选择采用了AS_path的属性。在一次回旋操作中,将AS_path的属性调整为自治系统的路由器拒绝来自攻击者的路由器的欺骗性边界网关协议条目。攻击者将转发网络流量到具体的边界网关协议邻居。这样的话,在数据到达目的地之前,采用边界网关协议路由进程的互联网传输将保持正常。

这样意味着什么?

确认通过边界网关协议进行的窃听是很困难的事情。路由追踪可以用来分析,但很难确定是否存在异常行为。为了安全起见,我们必须考虑这是一个中间人类型的攻击并使用相同的优化技术,也就是现在经常说的虚拟专用网。

几种临时的解决方案正在试图消除设计中存在的缺陷。其中的一种解决方案是对边界网关协议的邻居进行验证,但它将耗费大量资源,并且只要有一家互联网服务提供商拒绝使用,整个网络就将崩溃。另一种解决方案是使用签名的证书,对边界网关协议的邻居进行验证,但这只适用于传输过程的第一步。

一种解决方案被称做安全边界网关协议(S-BGP)。下面是他们的网站上对其工作方式的介绍:

“采用安全边界网关协议的网络环境包含了三种安全机制:首先是采用了公钥基础设施(PKI)的网络地址认证机制,并且拥有自治系统(AS)号码,一个自治系统的身份,并且采用边界网关协议路由器的身份验证和授权系统类似自治系统。

其次,一个新的、可选的传递路径用的边界网关协议属性可以用来进行数字签名以便进行边界网关协议的路由信息更新。这些证书的签名包含了地址的前缀和路径等信息以便进行验证。

第三, 互联网协议安全性系列(IPSec)可以为数据和部分序列的完整性提供保障,并且保证采用边界网关协议路由器可以对来自其它部分的流量进行验证。”

安全边界网关协议听起来非常强大,但问题是现有的大多数路由器没有足够的内存或处理能力来处理额外的工作量。如果想了解安全边界网关协议的更多信息,请阅读Wired上一篇很不错的文章,“互联网最大安全漏洞的真相”。”

最后的思考

由于时代的变化,原来的网络开发者希望的信任机制变得不可靠,安全方面的漏洞凸显出来。不论是卡明斯基的错误还是边界网关协议导致的窃听都是证明。我不能肯定未来会怎么变化,但将仍然保持乐观态度。

除此之外,由于费用和开销的问题边界网关协议导致的窃听是很难修复的。我敢肯定,互联网服务供应商是不会主动加入这个潮流,除非用户不断地推动。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134