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