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

 

 

聯係我們