2008年8月29日星期五

BGP协议漏洞

2008年8月8——10日,全球最大的黑客大会Defcon在美国拉斯维加斯举行。在大会的最后一天8月10日,两位安全专家演示了一种新技术,可以大范围地窃取Internet上的流量,这样大规模的Internet流量侦听以前只有情报机构才能做到。

该技术利用 Internet 路由协议 BGP(Border Gateway Protocol),让入侵者监视世界上任何地方的 Internet 数据流,甚至可以对数据包进行篡改。演示者成功地将目的地址为Defcon大会网络的流量重定向到纽约他们控制的一个系统上,然后又将其路由回大会网络。任何拥有 BGP 路由器的人(ISP 以及在运营商租赁了机房的公司)都可以截获数据,但本攻击只能截获流向目标地址的数据,而不是源地址,并且不能在网络间自由穿行。

这种技术由Pilosov发明,他并没有利用BGP协议的Bug或瑕疵,只是利用了BGP协议的正常模式。问题的存在因为BGP架构基于信任。举一个例子,一个在加利福尼亚的Sprint的客户给远在西班牙的Telefonica的用户发了一封Email。这两个运营商及沿途各运营商的网络通过BGP协议沟通,找出Email送达最快效率最高的路径。但是BGP协议工作是基于“一个路由器讲出它的最佳路径时说的是实话”的假设。这种易欺骗性使得偷听者容易欺骗路由器来截获数据。

让我们看看他是如何工作的:当一个用户在浏览器输入一个URL并最终点击“发送”来发送电子邮件,DNS服务器为目的地生成一个IP地址。在Email发送进行路由选择时,用户所在运营商的路由器询问BGP表最佳路由,该表基于运营商或其他自治系统(Autonomous System)发布的“advertisement”创建。该“advertisement”包括ip地址范围、IP前缀、向哪里转发流量等等。路由表从IP前缀中查找目的IP地址。如果两个自治系统都可以传送到目的地址,前缀更具体的自治系统将会赢得流量。举个例子,一个自治系统广告它可以传送到90,000组IP地址,而另外一个自治系统广告它可以传送到上面90,000组IP地址中的24,000组,如果目的IP地址同时落到两个自治系统的“广告”中,BGP将把数据发到更窄、更具体的自治系统。为了截获数据,偷听者只需以比其他网络更小的规模来广告它希望监听的IP地址段。这种广告可以在几分钟内向全世界传播,然后就可以实施监听。

Pilosov对该技术的革新在于将截获的数据转发回真实目的地址,避免数据中断的发生。通常,被截获数据再返回真实目的地址不应该发生,但是Pilosov和Kapela使用一种称为自治系统路径预先计划(AS path prepending)的方法,使一些被选中的BGP路由器拒绝他们欺骗性的广告,从而通过这些自治系统将数据转发到正确的接收者。

利用BGP协议进行网络窃听并不是新技术,BGP协议理论上一直存在弱点。L0pht黑客组织前成员 Peiter研究这个问题已经十几二十年,并向情报局,以及国家安全局讲述过这个问题。1998 年Peiter在国会作证的时候曾表示,他可以使用类似 BGP 攻击技术,在30分钟之内将 Internet 干掉,他还私下向政府机构透露如何使用 BGP进行窃听。BBT公司首席信息安全科学家Stephen Kent若干年前也已经私下向国防部和国土安全局演示过类似的BGP数据截获。

BGP协议劫持经常发生,但大多都是无意之间造成,并会导致拒绝服务攻击,或者中断,一个事例就是今年2月份巴基斯坦电信劫持YouTube的流量。PTCL是巴基斯坦最大的电信运营商,掌控着该国绝大多数网络基础设施。该公司的原意是在巴基斯坦国内屏蔽YouTube网站,这种操作一般被称为“黑洞法”(black holing)。在PTCL的网络上发出的指令本来只该在巴基斯坦国内的互联网生效,但却莫名其妙地开始在全球互联网上复制,并导致其他互联网服务提供商访问YouTube网站也开始出现问题。YouTube网站瘫痪是由PTCL对路由器的错误操作无意间导致的,根本原因在于巴基斯坦电信公司错误地告诉路由器它是发送Youtube流量的最佳路径,本来应该指向YouTube网络地址的链接被变更到了巴基斯坦,随后就断线了,在将近两个小时的时间里,Youtube的访客掉入巴基斯坦电信的黑洞。

对于VPN或者经过加密的流量,可以对截获的流量进行分析,从而产生对情报部门或者执法部门有价值的信息,比如说通信双方身份等等。

这些安全事件都显示了Internet 核心协议在安全方面的存在不足。Internet 核心协议多数开发于70年代,基于当时刚刚诞生的网络,人们假设网络上的节点都是可信的。如今这些假设正被一一击破,7月份,Dan Kaminsky 公布了 DNS 系统一个严重漏洞,而现在BGP协议的漏洞甚至更严重。

很多机构和公司已经在着手研究解决方案。有些机构专门收集BGP路由信息来监测BGP更新,这些更新会改变路由。但是很难区分是合法改变还是恶意劫持。流量突然从一条路径改变到另一条上传输是有理由的,比如分属不同自治系统的公司合并、自然灾害使一个网络失效,而其他自治域接管了它的流量。

如果运营商进行强制性过滤,仅允许通过认证的对端、特定的IP地址前缀从他们的路由器牵引流量,流量劫持可以被阻止。但是过滤是劳动密集型的,而且如果一家运营商拒绝参与,真个计划将无法实施。过滤同时需要运营商将地址空间透漏给客户,对竞争不利。
过滤不是唯一的解决方法。Kent和其他人发明了一种方法来认证IP Block的所属权,进而认证自治系统发送给路由器的“advertisement”,这样路由器不会简单的将数据发送到任何请求者。在该计划下,5个地区的Internet地址注册机构将给运营商签发证书来证实他们的地址空间和自治系统号码。自治系统也将签发授权就他们的地址空间来初始化路由器。如果自治系统为一个IP前缀广告了新的路由,将容易验证它是否有权利这样做。但是这种方案只能认证路由器的第一跳,来避免无意的劫持,像巴基斯坦电信一样,但是不能阻止偷听者劫持第二跳或第三跳。

正因为如此,Kent和BBN的工作人员研发了 SBGP,要求BGP路由器以私钥签名它要传播的前缀广告。运营商将给路由器发证书,授权其为它的流量提供路由。一个路由器的每个对端将签名一个路由器广告,将数据转发到下一授权跳。这将意味着没有人可以介入这个链,除非他们通过该路径前面的路由器认证。这样做的缺点是当前路由器缺乏生成和验证签名所必要的存储和处理能力。路由器制造商也会抵制升级,因为他们的客户——运营商们并没有提出这样的要求。

标签:


评论: 发表评论

订阅 博文评论 [Atom]





<< 主页

This page is powered by Blogger. Isn't yours?

订阅 博文 [Atom]