如果认为Internet上潜伏的危险仅仅是蠕虫病毒泛滥和黑客黑掉几个网站或入侵企业服务器,那就太短视了。尽管有些耸人听闻,但我们不得不时刻告诫自己,作为网络基础的TCP通讯协议,本身就存在危机四伏的安全漏洞。
一份来自Paul Waston安全警告
英国国家基础建设安全响应中心(National Infrastructure Security Coordination Centre, NISCC)根据一位著名安全专家Paul Waston的研究结果所发布的安全警告中揭示了TCP协议存在的安全漏洞:
遵照TCP协议,许多的网络设备和软件,针对单一来源的资料,会建立一个通讯联机(Session),并将依序传送的封包以连续数字编组。所以,如果可以猜出某一个封包的辨识号码,就可以偷梁换柱,用带有恶意程序的封包替换掉原本的封包。
通常猜中这个编号的几率是43亿分之一,需要4到124年的时间;但是Watson发现,广泛使用BGP(边界网关协议)的路由器,通常会有很长的联机时间。所以,黑客们只要有足够的带宽,就可以通过穷举法来不断地尝试,而成功几率也将提高到26万分之一。
并不复杂的方法将成为一招必杀的绝技。Watson表示,抓住这一漏洞,不用像拒绝服务攻击一样得用上几十亿个封包才能让一个网站中断。他说:“最大的问题是对路由器的影响,因为这能严重影响互联网流量。” 对路由器的持续攻击能够导致其“靠边站”,问题能够持续数小时。
就在媒体刚开始对这一重大“发现”爆炒的时候,Wastson又很快发表声明称之前被流传的安全警告实际有断章取义、言过其实的嫌疑。他说媒体对这个问题的反应,“超过潜在危险所需要的关注”,并且指出“目前对互联网络可能造成的威胁真的很小”,“可能会在一些小的网络上出现一些单独的问题,但是这些问题大多很快就能补救。”
“我并不是第一个发现这个问题的人,我只是把不同的成果统合起来而已。” Watson的这句话意味深长,让我们不得不用安全的视角重新审视网络中泛滥的恶意攻击的根源究竟是什么。
TCP的先天不足
众所周知,TCP/IP协议是我们进行一切互联网上活动的基础。但受当时网络软、硬件设备的局限,当初设计该协议时着重考虑的是网络的速度,对安全性问题几乎未加以考虑。所以,TCP/IP本身在安全设计上就先天不足。正如知名安全专家Hernan所说,“除了互联网络的主干之外,TCP的安全漏洞,可能出现在任何两个端点之间。”
2003年2月27日在西雅图召开的“黑帽子安全简报”会议上,安全专家就指出应用边界网关协议的路由器,一旦配置不当或者被黑客入侵,就可能会把自己说成是无关网络的最佳通道,从而造成网络混乱――因为使用边界网关协议的路由器绝对信任其互联网上的邻居,不需要任何数字身份识别。通过这种数字伪造身份,攻击者能够重新定向网络通信、窃取数据、制造信息“黑洞”,甚至可以伪装成另一台路由器……
目前,担负大约13万个网络网关功能的1.2万个路由器都采用边界网关协议;1997年4月,美国弗吉尼亚州一家ISP因为路由器配置错误就发生过这类问题――知名黑客组织L0pht更是早在很多年前就宣称他们能在很短的时间内利用BGP的安全问题来搞垮整个Internet。
防患未然
将隐患揭露,纵使会多少引发些恐慌,但终究是有益的。NISCC的警告发布后几天,思科就表示将针对被发现的问题进行软件更新,Juniper Network 、Hitachi 、和NEC 等其他厂商也已经着手调查这一安全问题。
随后,美国计算机应急反应小组和Watson都建议厂商在设备的通讯联机中加入随机的128位密钥――许多网络服务供货商已经采用这个方法。美国计算机应急反应小组还建议厂商对资料进行加密,进一步保护在通讯联机当中传递的数据。
至于路由协议的先天不足,短时间内恐怕还没有彻底的解决方法――技术上“先有鸡还是先有蛋”的问题阻碍了替换边界网关协议(BGP)的更加安全的技术的开发。既然已经成为标准,BGP目前只能进行改善。
小知识:路由协议
路由协议作为TCP/IP协议族中重要成员之一,其选路过程实现的好坏会影响整个Internet网络的效率。按应用范围的不同,路由协议可分为两类:在一个AS(Autonomous System,自治系统,指一个互连网络,就是把整个Internet划分为许多较小的网络单位,这些小的网络有权自主地决定在本系统中应采用何种路由选择协议)内的路由协议称为内部网关协议(Interior Gateway Protocol),AS之间的路由协议称为外部网关协议(Exterior Gateway Protocol)。
外部网关协议最初采用的是EGP。EGP是为一个简单的树形拓扑结构设计的,随着越来越多的用户和网络加入Internet,给EGP带来了很多的局限性。为了摆脱EGP的局限性,IETF边界网关协议工作组制定了标准的边界网关协议--BGP。
BGP用来在AS之间实现网络可达信息的交换,整个交换过程要求建立在可靠的传输连接基础上来实现。这样做有许多优点,BGP可以将所有的差错控制功能交给传输协议来处理,而其本身就变得简单多了。
BGP使用TCP作为其传输协议,缺省端口号为179。与EGP相比,BGP有许多不同之处,其最重要的革新就是其采用路径向量的概念和对CIDR技术的支持。路径向量中记录了路由所经路径上所有AS的列表,这样可以有效地检测并避免复杂拓扑结构中可能出现的环路问题;对CIDR的支持,减少了路由表项,从而加快了选路速度,也减少了路由器间所要交换的路由信息。
另外,BGP一旦与其他BGP路由器建立对等关系,其仅在最初的初始化过程中交换整个路由表,此后只有当自身路由表发生改变时,BGP才会产生更新报文发送给其它路由器,且该报文中仅包含那些发生改变的路由,这样不但减少了路由器的计算量,而且节省了BGP所占带宽(赛迪编者:也正是因为这种交换机制存在致命隐患!)。