安全研究

安全漏洞
TCP协议实现大滑动窗口RST拒绝服务漏洞

发布日期:2004-04-20
更新日期:2004-04-23

受影响系统:
Cisco IOS 12.2 ZA
Cisco IOS 12.2 SY
Cisco IOS 12.2 SXB
Cisco IOS 12.2 SXA
Cisco IOS 12.2 (17d)SXB
Cisco IOS 12.2 (17b)SXA
Cisco IOS 12.2 (17a)SXA
Cisco IOS 12.2 (14)ZA8
Cisco IOS 12.2 (14)ZA2
Cisco IOS 12.2 (14)ZA
Cisco IOS 12.2 (14)SY03
Cisco IOS 12.2 (14)SY
FreeBSD FreeBSD
Linux kernel
Microsoft Windows XP
Microsoft Windows NT 4.0
Microsoft Windows ME
Microsoft Windows 98
Microsoft Windows 95
Microsoft Windows 2003
Microsoft Windows 2000
描述:
TCP是计算机网络系统中使用的核心网络协议。

TCP协议实现中存在一个漏洞,远程攻击者可以终止网络中的会话,对网络设备和应用服务程序进行拒绝服务攻击。

TCP是传输层协议设计用于提供可靠的IP包传送,TCP使用了多个标记选项及序列号来重组网络包。在2001年,根据Tim Newsham描述:

如果接收到Window中的序列号已知,攻击者就可以注入数据到会话流或终止连接,如果ISN值已知及已经发送的字节数已知,攻击者可以发送简单的包注入数据或终止会话,如果这些值未知,但攻击者可以猜测这些值范围内的数据,他可以发送多个可能包含在此范围内的多个不同序列号,直到有一个可以被接收来实现。攻击者不需要针对每个序列号发送一个包,只要发送序列号在Window大小范围内的包即可,如果序列号处于适当的范围值里,其中之一的包就会被接收。

Paul Watson对ISN未知的情况进行了分析,指出当特别考虑计算TCP Window大小时此攻击是可行的。并且他还做了个测试工具进行演示。

根据RFC793规定,通过发送包含RST或者SYN标记的包可终止已经建立的连接,要发起这个操作,必须知道源和目的IP地址及端口及序列号。但是序列号却不需要精确匹配,它只要在通告Window大小范围内即可,因此攻击者只要把要猜测计算的序列号置于Window通告大小的适当范围内,就可以发起这个攻击。

如下面是正常TCP会话的终止:


                Host(1)                       Host(2)
                  |                             |
                  |                             |
                  |  ACK ack=1001, window=5000  |
                  |<----------------------------|
                  |                             |



              Host(1) is

         closing the session



                  |        RST seq=1001         |
                  |---------------------------->|
                  |                             |



                                            Host(2) is

                                        closing the session

但下面的操作也是允许的:

               Host(1)                       Host(2)
                  |                             |
                  |                             |
                  |  ACK ack=1001, window=5000  |
                  |<----------------------------|
                  |                             |



              Host(1) is

         closing the session



                  |        RST seq=4321         |
                  |---------------------------->|
                  |                             |



                                            Host(2) is

                                        closing the session

注意第二个例子RST包虽然序列号不是1001,但也能终止绘画,因此序列号位于通告Window之内,在这个例子中,Host(2)的接收序列号在1001到6001之内。

因此TCP Window大小越大,序列号可接收范围越大。明显的BGP协议依靠大窗口通告维护长活持久的TCP会话(long-lived persistent TCP sessions ),比较容易受此漏洞攻击。

目前各种操作系统和设备等依靠TCP堆栈实现的都存在此漏洞。

<*来源:NISCC Vulnerability Advisory
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=108248320723500&w=2
        http://www.cisco.com/warp/public/707/cisco-sa-20040420-tcp-ios.shtml,
*>

建议:
厂商补丁:

Cisco
-----
Cisco已经为此发布了一个安全公告(cisco-sa-20040420-tcp-ios,)以及相应补丁:
cisco-sa-20040420-tcp-ios,:TCP Vulnerabilities in Multiple IOS Based Cisco Products
链接:http://www.cisco.com/warp/public/707/cisco-sa-20040420-tcp-ios.shtml,

联系供应商获得相关的补丁及升级信息。

Cisco客户可以以下方法获得更新:

拥有服务合同的客户必须连接他们常规升级渠道获得由此公告指定的免费升级软件。对于大多数拥有服务合同的客户,这意味着升级必须通过CISCO全球WEB站软件中心获得:

http://www.cisco.com.

要访问此下载URL,你必须是注册用户和必须登录后才能使用。

事先或目前与第三方支持组织,如Cisco合作伙伴、授权零售商或服务商之间已有协议,由第三方组织提供Cisco产品或技术支持的用户可免费获得升级支持。

直接从Cisco购买产品但没有Cisco服务合同的用户和由第三方厂商购买产品但无法从销售方获得已修复软件的用户可从Cisco技术支持中心(TAC)获取升级软件。TAC联系方法:

     * +1 800 553 2447 (北美地区免话费)
     * +1 408 526 7209 (全球收费)
     * e-mail: tac@cisco.com
    
查看 http://www.cisco.com/warp/public/687/Directory/DirTAC.shtml 获取额外的TAC联系信息,包括特别局部的电话号码,各种语言的指南和EMAIL地址。

浏览次数:4895
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障