10月 09, 2009

TCP Zero Window Size Vulnerability



Keyword:Zero Window Probes, Persist condition

在正常的 TCP 連線狀態下,每當接收端成功收到封包時,會回應 ACK 給發送端。該 ACK 資訊除了告知發送端,封包成功送達外,另一個作用是讓發送端知道,目前的 Receive Window Size 是多少,以便達到 Flow control 的效用。藉由這樣的資訊,可以避免發送端一次送出過量資料。

TCP Robustness in Persist Condition 這份文件,提到的系統弱點則是利用 TCP 協定的設計缺失達成攻擊目的。其主要方式如下:

一個具有惡意的接收者,向發送端提出需求,在連線建立後隨即送出ACK(window size=0) 的訊息,這表示接收端暫時無法接收資訊。發送端收到該 ACK 後便會進入 Persist condition,在這狀況下發送端會為接收端保存這份資料(in sending queue),並等到接收端重新開啟 Receive window 後再將資料送出。

在 Persist condition 狀況下,發送端定期去 probe 接收端狀態。但惡意的接收端每次都回應 ACK(window size=0) 讓傳送端遲遲無法送出資料。然而發送端服務的對象往往不止一個,上述的惡意行為如果大量出現將會耗用大量資源,造成發送端無法提供正常服務。

相關連結參考:
微軟 MS09-048 安全通報
TCP Robustness in Persist Condition

沒有留言:

張貼留言