国家 / 地区
docurl=/cn/Service/Tools_Resource/Security_Report/200711/319315_30005_0.htm

TCP协议安全漏洞报告

【发布时间:2007-11-26】

H3C网络安全事件应急响应小组

一、问题说明

问题概述

2004.04.20,英国的NISCC发布236929安全公告:按照RFC 793实现的TCP协议存在安全漏洞,正常的TCP连接可以被非法的第三方复位。在已知TCP连接的四元组(源地址、目的地址、源端口号、目的端口号)的情况下,攻击者可以伪造带有RST/SYN标志的TCP报文或普通数据报文,当其sequence number落在TCP连接的滑动窗口(window size)范围内,可能导致以下攻击后果:

1.伪造RST 报文终止正常的TCP会话。

2.伪造SYN 报文终止正常的TCP会话。

3.攻击者可插入虚假数据到正常的TCP 会话。

攻击可实施性

假设当前TCP连接的sequence numberA,攻击者选择一个随机sequence numberB,以步长为"window size"发送报文,因为sequence number范围为0~2^32,同时考虑到AB所处位置的概率,攻击者平均发送"2^32/(windowsize*2)"个报文就有一个落在当前TCP连接的滑动窗口范围内,从而导致该TCP连接复位。以windowsize8192为例,达成攻击平均需要发送262144个报文,假设报文长度为256字节,那么攻击者使用2MADSL线路可以在512秒复位这个TCP连接。考虑到现在很多操作系统的window size多达32K甚至64K,而且攻击者的线路带宽也远不止2M,攻击者可以更快达成攻击。

TCP应用的危害分析

达成攻击的前提条件是:已知(源地址、目的地址、源端口号、目的端口号);sequence number落在window size之内。对于一些基于TCP的应用,如telnetftp等,因为IP地址范围太大,猜测较难,而且这些应用的连接时间一般不长,所以威胁不算太大。但是对于BGP协议来说,要获取这四元组相对容易:首先,很多AS站点的地址信息能够在一些"BGP looking glasses"服务或者一些DNS资源信息上查到,这导致可以较为容易获取源地址和目的地址信息;其次目的端口是well-known179;最后虽然源端口是变化的,但是研究发现,几乎所有厂商的TCP实现,在选择源端口号时是有规律的。加上BGPTCP连接长时间存在,攻击者可以比较从容的发动攻击并得手。BGP被认为受本次发现的漏洞影响最大。

 

二、影响的产品

现已确认H3C公司基于VRP操作系统的S系列交换机、R系列和AR系列路由器产品受到此问题影响。BGP协议受到潜在攻击的可能最大,且支持BGP MD5认证的软件不能防止BGP连接被攻击复位。

 

三、解决措施

H3C在其即将发布的软件中参考draft-ietf-tcpm-tcpsecure-00.txtTCP sequence number检测机制进行了修改,同时修复了BGPMD5认证实现错误的问题。

软件修改说明:

1.TCP问题的修改

H3C根据IETF给出的草案对其VRP软件TCP处理流程进行修改:

http://www.ietf.org/internet-drafts/draft-ietf-tcpm-tcpsecure-00.txt

RST的修改:

1.         报文段的RST被置位,顺序号不在接收窗口范围内,丢弃该报文

2.         报文段的RST被置位,并且该报文的顺序号正是期望的顺序号,reset the connection

3.         报文段的RST被置位,该报文的顺序号不是期望的顺序号,但是在窗口范围内(RCV.NXT < SEG.SEQ <= RCV.NXT+RCV.WND),send an ACK

其中第三点修改建议经过分析,在正常情况不会对TCP造成影响。两个设备(假设AB)建立TCP连接,如果其中一端A发起正好符合上面的条件RST报文段,这属于异常关闭流程,不遵守TCP的状态变迁,A会清除本端连接,对端B收到这个RST后,回应一个ACKAA收到后,发一个RSTB,这样两端就都断开连接,不存在一端连接长时间存在的问题。如果中间有报文丢弃,KEEPALIVE可以解决这个问题。

SYN的修改:

1.         报文段的SYN被置位,顺序号不在接收窗口范围内,给对端发ACK

2.         报文段的SYN被置位,并且该报文的顺序号正是期望的顺序号(RCV.NXT == SEG.SEQ),发送ACK,在发送ACK之前,把被确认的值减一

3.         报文段的SYN被置位,该报文的顺序号不是期望的顺序号,但是在窗口范围内(RCV.NXT < SEG.SEQ <= RCV.NXT+RCV.WND),发送ACK

报文段的ACK值检查,VRP软件处理已满足draft建议的范围((SND.UNA - MAX.SND.WND) <= SEG.ACK < SND.NXT)。未修改。

2.BGPMD5认证问题修改

原处理流程没有判断不包含MD5认证信息的RST报文,新的处理在启用MD5认证的TCP连接上检测并丢弃所有不包含MD5认证信息的报文和认证失败的报文。

减轻被攻击影响临时的措施:

1.在启动了BGP协议的一些关键应用场合,启动IPSEC;

2.不能使用IPSEC的关键应用场合,在支持源地址逆向检查的设备上,建议用户启动源地址逆向检查功能。这可以大大减少攻击达成的可能性;

3.严格控制启动BGP的设备的相关信息外露。

 

最终的解决措施:

1.升级新的软件版本,H3C公司S系列交换机和R系列、AR系列路由器软件版本将于200471日前发布。

2.BGP连接上启动MD5验证(基于新发布的版本)。

四、参考文档

http://www.uniras.gov.uk/vuls/2004/236929/index.htm
http://www.cisco.com/warp/public/707/cisco-sa-20040420-tcp-ios.shtml
http://www.checkpoint.com/techsupport/alerts/tcp_dos.html
http://software.fujitsu.com/jp/security/niscc/niscc.html#236929-TCP
ftp://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2004-006.txt.asc
http://www.ietf.org/internet-drafts/draft-ietf-tcpm-tcpsecure-00.txt