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 number为A,攻击者选择一个随机sequence number为B,以步长为"window size"发送报文,因为sequence number范围为0~2^32,同时考虑到A、B所处位置的概率,攻击者平均发送"2^32/(windowsize*2)"个报文就有一个落在当前TCP连接的滑动窗口范围内,从而导致该TCP连接复位。以windowsize为8192为例,达成攻击平均需要发送262144个报文,假设报文长度为256字节,那么攻击者使用2M的ADSL线路可以在512秒复位这个TCP连接。考虑到现在很多操作系统的window size多达32K甚至64K,而且攻击者的线路带宽也远不止2M,攻击者可以更快达成攻击。
对TCP应用的危害分析
达成攻击的前提条件是:已知(源地址、目的地址、源端口号、目的端口号);sequence number落在window size之内。对于一些基于TCP的应用,如telnet,ftp等,因为IP地址范围太大,猜测较难,而且这些应用的连接时间一般不长,所以威胁不算太大。但是对于BGP协议来说,要获取这四元组相对容易:首先,很多AS站点的地址信息能够在一些"BGP looking glasses"服务或者一些DNS资源信息上查到,这导致可以较为容易获取源地址和目的地址信息;其次目的端口是well-known的179;最后虽然源端口是变化的,但是研究发现,几乎所有厂商的TCP实现,在选择源端口号时是有规律的。加上BGP的TCP连接长时间存在,攻击者可以比较从容的发动攻击并得手。BGP被认为受本次发现的漏洞影响最大。
二、影响的产品
现已确认H3C公司基于VRP操作系统的S系列交换机、R系列和AR系列路由器产品受到此问题影响。BGP协议受到潜在攻击的可能最大,且支持BGP MD5认证的软件不能防止BGP连接被攻击复位。
三、解决措施
H3C在其即将发布的软件中参考draft-ietf-tcpm-tcpsecure-00.txt对TCP sequence number检测机制进行了修改,同时修复了BGP的MD5认证实现错误的问题。
软件修改说明:
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造成影响。两个设备(假设A和B)建立TCP连接,如果其中一端A发起正好符合上面的条件RST报文段,这属于异常关闭流程,不遵守TCP的状态变迁,A会清除本端连接,对端B收到这个RST后,回应一个ACK给A,A收到后,发一个RST给B,这样两端就都断开连接,不存在一端连接长时间存在的问题。如果中间有报文丢弃,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.BGP的MD5认证问题修改:
原处理流程没有判断不包含MD5认证信息的RST报文,新的处理在启用MD5认证的TCP连接上检测并丢弃所有不包含MD5认证信息的报文和认证失败的报文。
减轻被攻击影响临时的措施:
1.在启动了BGP协议的一些关键应用场合,启动IPSEC;
2.不能使用IPSEC的关键应用场合,在支持源地址逆向检查的设备上,建议用户启动源地址逆向检查功能。这可以大大减少攻击达成的可能性;
3.严格控制启动BGP的设备的相关信息外露。
最终的解决措施:
1.升级新的软件版本,H3C公司S系列交换机和R系列、AR系列路由器软件版本将于2004年7月1日前发布。
四、参考文档
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