專利名稱:使用復制確認和重組間隙方法防止網(wǎng)絡數(shù)據(jù)注入攻擊的制作方法
技術領域:
本發(fā)明一般地涉及計算機網(wǎng)絡。本發(fā)明更具體而言涉及防止網(wǎng)絡中的數(shù)據(jù)注入攻擊。
背景技術:
這一部分中描述的方法可以被實行,但并不一定是先前已被設計或實行了的方法。因此,除非在這里另行指出,否則這一部分中描述的方法不是本申請的權利要求的現(xiàn)有技術,并且也并不因為被包括在這一部分中而被承認是現(xiàn)有技術。
對于商家和顧客等來說,網(wǎng)絡已經(jīng)成為了一種很重要的工具,他們中的很多人現(xiàn)在都依賴于諸如郵件服務器、Web站點和內(nèi)容服務器等網(wǎng)絡資源的持續(xù)可用性。隨著對網(wǎng)絡的使用增加,保護網(wǎng)絡不受惡意實體的干擾變得越來越重要。例如,拒絕服務(“DoS”)攻擊可能使合法用戶不能訪問網(wǎng)絡服務,并且已經(jīng)被成功地用來干擾對諸如Yahoo!和CNN等因特網(wǎng)站點的合法用戶訪問。
數(shù)據(jù)注入攻擊可能導致DoS或其他負面影響。一種類型的數(shù)據(jù)注入攻擊利用如在因特網(wǎng)工程任務組(IETF)請求注解(RFC)793中定義的作為因特網(wǎng)的基本協(xié)議之一的傳輸控制協(xié)議(“TCP”)的基本設計。在數(shù)據(jù)注入攻擊中,攻擊者猜測有效TCP連接的參數(shù)值,然后發(fā)送包含惡意或虛假數(shù)據(jù)凈荷的虛假段。如果接收者將這些段傳遞給應用,則當應用處理或執(zhí)行這些數(shù)據(jù)凈荷時可能會出現(xiàn)故障。
遵從RFC 793并且充當數(shù)據(jù)接收者的一種典型的TCP實現(xiàn)在接收到任何丟失段之前,在重組緩沖區(qū)中維護無序數(shù)據(jù)。該接收者針對被無序接收的每個段發(fā)送確認(“ACK”)消息,指示最近的有效順序號。發(fā)送者在重傳緩沖區(qū)中保持未被確認的段。這一處理使得發(fā)送者可迅速地重傳在傳送中丟失的段,因為這些段未被確認。
一種TCP數(shù)據(jù)注入攻擊利用上述TCP實現(xiàn)機制,所述機制試圖在無序到達并且需要被重組為正確順序的段被傳遞給TCP以上的邏輯層的應用之前管理這些段。邊界網(wǎng)關協(xié)議(BGP)、超文本傳輸協(xié)議(HTTP)、一些語音協(xié)議、多協(xié)議標簽交換(MPLS)和使用TCP連接的其他協(xié)議是這些攻擊的目標。后果可能是很嚴重的。例如,當路由器的BGP會話被關閉相關的TCP連接干擾時,路由器將丟棄其創(chuàng)建的所有BGP路由,基本上導致BGP處理的故障。因此,BGP處理必須將自身與網(wǎng)絡中的對等路由器重新同步,在重新同步期間,故障路由器不能轉發(fā)任何流量。
此外,數(shù)據(jù)注入攻擊可能導致向上游處理提供惡意命令、不必要地填充重組緩沖區(qū)、其他高層應用的誤操作、發(fā)起“ACK戰(zhàn)爭”,等等。因此,本領域的研究人員正致力于研究在不從根本上改變?nèi)鏡FC 793中規(guī)定的TCP的操作的情況下挫敗TCP數(shù)據(jù)注入攻擊的方法。
成功的攻擊必須注入攜帶用于源端口、目的地端口的正確值的TCP段;對于順序號和ACK號來說,一個范圍內(nèi)的值是允許的。這些值的允許范圍很大,因此發(fā)動涉及順序地檢查每個參數(shù)的所有可能值的強力攻擊似乎是不可能的。但是,在大多數(shù)TCP實現(xiàn)中,選擇有效值的任務較為簡單,因為在RFC 793中存在某些漏洞。這些漏洞在遵從RFC 793的實現(xiàn)中產(chǎn)生了安全弱點。例如,將偽隨機32位值指定為新TCP連接的初始順序號(ISN)似乎防止了攻擊者以任何可行的方式猜測正確的順序號,因為潛在的正確值的數(shù)量是232或約40億個值。但是,即使段的順序號不與下一預期順序號嚴格匹配,如果段的順序號落在可接受值的一個窗口或范圍內(nèi),則遵從RFC 793的傳統(tǒng)TCP實現(xiàn)也將接受這個段。所述窗口或范圍的大小一般與重組緩沖區(qū)的字節(jié)數(shù)相同,并且被用來補償段可能丟失的可能性。在一些TCP實現(xiàn)中,允許的順序值的范圍可以是16,384、65,535,或更大。
一個后果是即使當真隨機或偽隨機ISN被使用時,攻擊者也不需要正確地生成順序號的所有32位以提供接收節(jié)點將接受的號碼。如果允許的順序值的范圍足夠大,則攻擊者在可行的時間中通過隨機或強力選擇而猜到正確的順序值的機會就大大增加。接收節(jié)點建立的窗口越大,黑客就越容易實施攻擊。
此外,大多數(shù)實現(xiàn)將較小范圍的值用于初始端口號,并簡單地對每個新連接增加端口號。因此,攻擊者較容易使用普通的計算資源猜到被兩個端點用于合法TCP連接的端口值。
還出現(xiàn)了另一個弱點,因為大多數(shù)TCP實現(xiàn)不測試ACK值是否等于預期的ACK值,甚至也不測試ACK值是否落在允許的ACK值的范圍內(nèi)。相反,大多數(shù)實現(xiàn)將接受攜帶大于先前接收的ACK值的ACK值的任何段,只要順序號在允許范圍內(nèi)。RFC 793將ACK值定義為在從1到232這個范圍內(nèi)的無符號整數(shù)。因此,猜到允許的順序號的攻擊者可通過僅嘗試兩個ACK值(1或232-1,其中一個必定被接受)就能成功地進行數(shù)據(jù)注入攻擊。
上述危害的結果是在大多數(shù)實現(xiàn)中,攻擊者可在理論上在(232/窗口大小/2)個段或大約30,000個段中將數(shù)據(jù)注入連接。因此,即使使用傳統(tǒng)的計算設備也能較快地進行強力攻擊。
Mitesh Dalal等人于2004年1月9日提交的題為“Preventing NetworkReset Denial of Service Attacks”的共同未決申請No.10/755,146(律師卷號50325-0868)中描述了用于防止網(wǎng)絡DoS復位攻擊的方法。Pritam Shah等人于2003年8月14日提交的題為“Detecting network denial of serviceattacks”并被轉讓給本受讓人的共同未決申請No.10/641,494中提供了用于處理被稱為SYN-RST攻擊的類似攻擊的方法。Shah等人的方法適合于中間路由器而不是TCP端點設備,但是并沒有完全解決本公開中描述的所有問題。
在附圖中以示例而非限制的方式示出了本發(fā)明,在附圖中,相似的標號指代相似的元件,其中圖1是示出了用于施行TCP數(shù)據(jù)注入攻擊的一種技術的消息流示意圖;
圖2是示出了用于在數(shù)據(jù)段到達時將其丟棄的方法的流程圖;圖3是示出了基于重疊而從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖4是示出了圖3的操作示例的框圖;圖5A是示出了由數(shù)據(jù)發(fā)送者執(zhí)行的用于使用復制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖5B是示出了在由數(shù)據(jù)接收者執(zhí)行的用于使用復制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法中的步驟的流程圖;圖5C是示出了圖5A的操作示例的消息流示意圖;圖5D是示出了圖5C的示例中的其他步驟的消息流示意圖;圖6是示出了用于基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖7是示出了可在其上實現(xiàn)實施例的計算機系統(tǒng)的框圖。
具體實施例方式
描述了用于防止網(wǎng)絡數(shù)據(jù)注入攻擊的方法和裝置。在以下描述中,為了說明的目的列舉了很多具體細節(jié),以提供對本發(fā)明的全面理解。但是本領域的技術人員應當清楚,本發(fā)明可在沒有這些具體細節(jié)的情況下實施。在其他情形下,公知的結構和設備以框圖的形式示出,以避免不必要地模糊本發(fā)明。
這里根據(jù)以下大綱描述實施例1.0概述2.0用于防止網(wǎng)絡數(shù)據(jù)注入攻擊的方法2.1用于在到達時丟棄數(shù)據(jù)段的方法2.2用于基于重疊而從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法2.3用于使用復制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法2.4用于基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法
3.0實現(xiàn)機制——硬件概述4.0擴展和替換1.0概述僅作為簡介,并且不限制所附權利要求的范圍,本發(fā)明滿足了在背景技術中提到的需要以及將從以下描述中變得清楚的其他需要和目的,在一個方面中,本發(fā)明包括一種用于防止對網(wǎng)絡的攻擊的方法,其中所述攻擊包括將虛假傳輸控制協(xié)議(TCP)段注入發(fā)送者和接收者之間的TCP連接,所述方法包括由計算機實現(xiàn)的以下步驟接收復制ACK消息并使復制ACK計數(shù)器遞增;當重傳緩沖區(qū)為空并且復制ACK計數(shù)器等于指定的擊發(fā)因子(strike factor)時,發(fā)送提供正確的順序值和ACK值的正確的ACK消息。接收者通過接收正確的ACK消息繼續(xù);確定正確的順序值是否小于重組緩沖區(qū)中所有段的最高順序值;并且當正確的順序值小于重組緩沖區(qū)中所有段的最高順序值時從重組緩沖區(qū)丟棄所有段。
另一方法接收第二TCP段;確定第二TCP段與先前放置在重組緩沖區(qū)中的第一TCP段之間的順序值間隙;根據(jù)指定的拭探值(heuristic)確定順序值間隙是否太大;如果順序值間隙太大則執(zhí)行以下步驟創(chuàng)建并發(fā)送攜帶剛好在最近被正確確認的順序值之前的第一順序值的啞段(dummysegment);接收對啞段的確認;確定在確認中攜帶的第二順序值是否小于第一TCP段的第三順序值;當在確認中攜帶的第二順序值小于第一TCP段的第三順序值時,從重組緩沖區(qū)丟棄第一TCP段。
在其他方面,本發(fā)明包括被配置為執(zhí)行上述步驟的計算機裝置和計算機可讀介質。此外,很多其他特征和方面將從下面的描述和所附權利要求變得很清楚。
2.0用于防止TCP拒絕服務攻擊的方法描述了幾種用于防止網(wǎng)絡數(shù)據(jù)注入攻擊的方法。第一方法丟棄攜帶小于下一未被確認的序列減去最大窗口大小的ACK值的接收到的段。術語“小于”在這里用在其中可能發(fā)生卷繞(wraparound)的無符號整數(shù)值的上下文中。該方法幫助將虛假注入段據(jù)于TCP重組緩沖區(qū)之外。僅需要在充當接收者的TCP處理的邏輯中作出一些很小的改變。在第二方法中,拭探值被用來檢驗新到達的段的順序號,當順序號是下一預期順序號時,新到達的段被使用,并且重組緩沖區(qū)的內(nèi)容不被考慮。此外,如果新到達的段的數(shù)據(jù)凈荷在序列順序方面與已經(jīng)在重組緩沖區(qū)中的段重疊,則重組緩沖區(qū)中的重疊段被認為是虛假的并被丟棄。因此,如果第一方法由于某種原因沒能防止虛假數(shù)據(jù)進入重組緩沖區(qū),則該方法幫助從重組緩沖區(qū)刪除虛假數(shù)據(jù)。
在第三和第四方法中,ACK消息或啞段被發(fā)送,以驗證重組緩沖區(qū)中的數(shù)據(jù)的真實性,并且?guī)椭斓貋G棄虛假數(shù)據(jù)。這些方法涉及發(fā)送者對虛假數(shù)據(jù)的檢測,并且改良了對典型TCP實現(xiàn)固有的用于處理ACK消息的機制的使用。第四方法可在不修改發(fā)送者的實現(xiàn)的情況下實現(xiàn)。此外,這些方法在接收者中的實現(xiàn)維持了與RFC 793的兼容性。
2.1用于在數(shù)據(jù)段到達時將其丟棄的方法現(xiàn)在參考圖1和圖2描述用于防止TCP數(shù)據(jù)注入攻擊的第一方法。圖1是示出了用于施行TCP數(shù)據(jù)注入攻擊的一種技術的消息流示意圖。圖2是示出了用于在數(shù)據(jù)段到達時將其丟棄的方法的流程圖。
圖2的處理導致了圖1中以示例的方式示出的消息流,該處理可在由充當TCP連接的端點的網(wǎng)絡元件執(zhí)行的一個或多個計算機程序、指令序列或其他軟件元件中實現(xiàn)。例如,圖2可以被實現(xiàn)為TCP應用的一部分,或者是路由器、交換機或網(wǎng)絡基礎設施的其他元件的操作系統(tǒng)的功能?;蛘?,圖2可以被實現(xiàn)為被個人計算機、工作站或其他網(wǎng)絡末端站的操作系統(tǒng)容宿或與個人計算機、工作站或其他網(wǎng)絡末端站的操作系統(tǒng)相關聯(lián)的TCP進程、堆棧、適配器或代理。
在圖1中,發(fā)送者102、攻擊者104和接收者106代表TCP連接中的端點。發(fā)送者102、攻擊者104和接收者106可包括路由器、交換機、集線器、網(wǎng)關、個人計算機、工作站、服務器,或連接到或可以被連接到或與網(wǎng)絡通信的其他設備。攻擊者104是將不希望的或虛假的段注入已在發(fā)送者102和接收者106之間建立的TCP流或連接的任何實體。攻擊者104可包括工作站、個人計算機、路由器、交換機或其他處理元件。
發(fā)送者102、接收者106和攻擊者104參與一個或多個網(wǎng)絡。此外。發(fā)送者102、接收者106和攻擊者104可以在局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、一個或多個因特網(wǎng)或任何其他類型的網(wǎng)絡或其子網(wǎng)中,或可通過局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、一個或多個因特網(wǎng)或任何其他類型的網(wǎng)絡或其子網(wǎng)而被訪問,在上述網(wǎng)絡中,傳輸控制協(xié)議(TCP)被用來建立網(wǎng)絡元件之間的連接。這種網(wǎng)絡可包含額外的網(wǎng)絡基礎設施元件,例如路由器、交換機等,以及其他末端站設備,例如工作站、打印機、服務器等。在一種實現(xiàn)中,發(fā)送者102、接收者106和攻擊者104全都可通信地耦合到公共分組交換網(wǎng)絡,例如因特網(wǎng)。
發(fā)送者102、接收者106和攻擊者104可以被連接到額外的網(wǎng)絡元件。其他實施例可包括比已示出的更少或更多的網(wǎng)絡元件。具體而言,在實際系統(tǒng)中,可以有任意數(shù)量的網(wǎng)絡元件。
為了描述圖1,假設發(fā)送者102和接收者106僅如在RFC 793中定義的那樣實現(xiàn)TCP,并且使用大小為4000的窗口。發(fā)送者102向接收者106發(fā)送順序號(“SeqNo”)為101、ACK值為5005并且具有441字節(jié)數(shù)據(jù)的段110。接收者106發(fā)送SeqNo為5005,ACK為543的確認消息112。在此描述中,諸如“SeqNo 543”或“ACK 5005”這樣的標號被分別用作為攜帶值為543的順序號和值為5005的確認的TCP段的簡化表示。
接下來攻擊者104發(fā)送具有SeqNo 3000、ACK 0x2000000(33,554,432)和256字節(jié)惡意數(shù)據(jù)的段114。攻擊者104在沒有關于那時正被發(fā)送者102和接收者106用于TCP連接的順序號的真實知識的情況下猜到了SeqNo 3000,并且SeqNo 3000是允許的SeqNo值,因為(3000<543+4000)。傳統(tǒng)上不對ACK值進行窗口大小的比較,因此在2,147,488,649到4,294,967,295和0到5001這個范圍中的ACK值都是可接受的。攻擊者104還確定出或猜出發(fā)送者102和接收者106的網(wǎng)絡地址,例如它們的IP地址以及用于當前連接的端口號。所述地址和端口值被放置在虛假段114中,但是為了簡明起見而未被示出。由于攻擊者104不確定ACK值0x2000000(33,554,432)是否合適,因此攻擊者104還發(fā)送具有相同的SeqNo 3000但是ACK值為0x82000000(2,181,038,080)的段116。
在步驟118,接收者106接受段116但是丟棄了段114,因為其ACK值是不可接受的。然后接收者通過發(fā)送具有SeqNo 5005和ACK 543的段120來對段116進行確認。值為5005的SeqNo被使用,因為段112是最近接收到的有序段,并且接收者106需要用信號表明它正在等待緊隨其后的段,雖然已經(jīng)接收到了看上去在流的未來很遠處的段116。在沒有防范方法的情況下,如步驟122所示,段116最終被轉發(fā)到使用、依賴于或執(zhí)行段116中的數(shù)據(jù)的應用并可能危害該應用。
現(xiàn)在參考圖2,在這里的第一防御方法中,在步驟202,TCP段被接收。在步驟204,執(zhí)行測試來確定接收到的段中攜帶的ACK值是否小于下述差即下一已被發(fā)送但未被確認的順序值(以RFC 793的說法是snduna)減去迄今為止發(fā)送的段的總數(shù)和與該TCP連接相關聯(lián)的最大窗口的大小這二者中的較小者所得到的差。在一個實施例中,表達式min(snduna-isn,最大窗口大小)產(chǎn)生被與未被確認的順序值相比較的值。
最大窗口大小值反映了對等體可管理的最大窗口大小。允許的窗口大小可變?yōu)榱硪淮翱诖笮∫杂糜谔囟ǖ亩谓粨Q,但是即使發(fā)生了這樣的調(diào)節(jié),在步驟204的測試中還是使用最大窗口大小。因此,步驟204對照過去的有效ACK值的窗口來測試接收到的段。為了在步驟204產(chǎn)生“真”結果,有效的ACK值不能大于下一預期順序值之后的一個窗口。
相反,現(xiàn)有方法允許具有在包括和早于下一未被確認順序值的那一半順序值空間內(nèi)的任意ACK值的段,并且假設順序值本身在傳入窗口中。在這種環(huán)境下,RFC 739允許接收者忽略ACK。RFC 793僅要求如果接收到的ACK值大于接收者的預期值,則接收者必須發(fā)送回指定了預期ACK值的ACK段。RFC 793缺乏用于處理早于預期的ACK值的嚴格要求,這向攻擊者提供了提出會被接受的虛假段的途徑。
如果步驟204的測試為真,則在步驟206,該段被丟掉而不是被轉發(fā)到應用或被放置在重組緩沖區(qū)中以用于潛在的重新排序和以后的轉發(fā)。如果步驟204的測試為假,則在步驟208,對接收到的段執(zhí)行另一TCP段處理。
在一種替換中,步驟204的測試不允許ACK值落在窗口中,而是測試接收到的TCP段的ACK值是否剛好等于預期的ACK值或者是小于初始窗口的某個范圍的值。如果未發(fā)現(xiàn)精確匹配,則傳入段被丟掉。這一替換可使得接收者丟棄在其他有效的但是延遲的數(shù)據(jù)之前到達的數(shù)據(jù),因為當較早數(shù)據(jù)到達時,接收者要求發(fā)送者尚未遇到的ACK值。因此,該方法可能強制發(fā)送者執(zhí)行重傳。但是,為了受益于提高已知較易受攻擊的網(wǎng)絡環(huán)境中的攻擊抵抗力,這一缺點是可以接受的。
使用上述方法,虛假段被據(jù)于重組緩沖區(qū)之外,并且不被轉發(fā)到虛假段可能導致問題的較高層應用或處理。具體而言,利用本方法,僅當段的順序號在可接受的窗口內(nèi)并且其ACK值正確時,該段才被接受。
2.2用于基于重疊從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法圖3是示出了用于基于重疊從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖4是示出了圖3的操作的示例的框圖。一般地,圖3提供了用于通過檢測段是虛假的來從TCP重組緩沖區(qū)刪除不正確的注入段的方法,所述段被檢測為虛假的是因為它們不正確地重疊了與先前接收的被正確地確認了的段相關聯(lián)的數(shù)據(jù)。
首先參考圖3,步驟302-304代表準備步驟,其被描述為提供用于由后續(xù)步驟所代表的解決方案的上下文。在步驟302,第一TCP段被接收并且是有序的。該段被轉發(fā)到應用,并且下一預期順序號值在存儲器中被更新。術語“第一”在步驟302中被用來說明步驟302的段出現(xiàn)在步驟304和步驟306的段之前,但是步驟302的段可能在TCP連接建立之后的任意時刻到達,并不需要是在完成TCP握手階段之后實際接收的第一個段。在步驟304,第二段被接收并且是無序的,因此第二段被存儲在重組緩沖區(qū)中。
在步驟306,第三段被接收。在步驟308,測試被執(zhí)行以確定第三段攜帶的SeqNo值是否等于下一預期SeqNo值。步驟308還可涉及驗證第三段的SeqNo和其數(shù)據(jù)長度的和是否精確地與重組緩沖區(qū)中的其他段對準。如果否,則在步驟309,傳統(tǒng)的處理被應用于無序段。如果SeqNo值剛好是下一預期值,則第三段被視為從當前連接中的合法發(fā)送者到達的可信段。第三段被視為可信的,因為攻擊者猜到并發(fā)送精確的下一預期SeqNo值的機會是1/232。
因此,在步驟310執(zhí)行測試,以確定第三段是否與已在重組緩沖區(qū)中的任何段重疊。在此上下文中,“重疊”意味著在第三段中攜帶的SeqNo和數(shù)據(jù)長度的和與重組緩沖區(qū)中的任意段的SeqNo重疊。在某些情形下,第三傳入段可能與來自攻擊者的若干段重疊。如果沒有這樣的重疊,則在步驟316,執(zhí)行對緩沖區(qū)和第三段的常規(guī)重組處理。
但是,如果發(fā)現(xiàn)重疊,則先前被接收進重組緩沖區(qū)的重疊段被視為虛假段,而第三段被視為真實段。重疊指示虛假段已被接收進重組緩沖區(qū),因為當連續(xù)的SeqNo值被與流中的在先段的數(shù)據(jù)長度大小相比較時,一組真實段最終將精確地順次對準。此外,攻擊者需要猜測SeqNo值,因此重疊的存在強烈建議SeqNo已被猜測并且相關聯(lián)的段是虛假的。在步驟310發(fā)現(xiàn)的重疊可能是全部重疊也可能是部分重疊。在步驟312,從重組緩沖區(qū)丟棄虛假段。
在步驟313,ACK消息被發(fā)送并且攜帶第三段的SeqNo。在步驟314,正常的TCP處理繼續(xù)。這種處理可能包括重傳,重傳通過要求發(fā)送者重傳在被丟棄的虛假段所覆蓋的范圍內(nèi)的數(shù)據(jù)來幫助確保重組緩沖區(qū)僅包含有效數(shù)據(jù)。
現(xiàn)在結合圖4示出一個示例。具有SeqNo 201和100字節(jié)數(shù)據(jù)的無序段404先前已被接收進重組緩沖區(qū)402,如數(shù)字1所示。如數(shù)字2所示,下一預期順序號是101,這就是為什么段404被視為無序的原因。
在數(shù)字3,段406到達,其具有SeqNo 101和150字節(jié)數(shù)據(jù)。SeqNo值101剛好是預期的下一SeqNo值,因此對于段406,步驟308的測試(圖3)為真。此外,101和150的和是251,其與段404攜帶的值201重疊。因為段406被視為可信的,因為它攜帶精確的下一預期順序號,因此段404被視為虛假的并且被丟棄,如數(shù)字4所示。然后,具有SeqNo 251的ACK段被發(fā)送以對段406進行確認。
因此,上述方法刪除了被無意中接收進重組緩沖區(qū)的虛假注入數(shù)據(jù)段。該方法可被單獨實施,或者與這里的2.1節(jié)的方法結合起來實施。
2.3用于使用復制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法圖5A是示出了由數(shù)據(jù)發(fā)送者執(zhí)行的用于使用復制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖5B是示出了由數(shù)據(jù)接收者執(zhí)行的用于使用復制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的步驟的流程圖;圖5C是示出了圖5A的操作示例的消息流示意圖;圖5D是示出了圖5C的示例中的其他步驟的消息流示意圖。
在描述圖5A到圖5D時,術語“重傳緩沖區(qū)”指包含一個或多個已被發(fā)送但尚未被確認的數(shù)據(jù)段的數(shù)據(jù)結構,而術語“重組緩沖區(qū)”指存儲接收到的無序數(shù)據(jù)的數(shù)據(jù)結構。
在傳統(tǒng)的TCP處理中,對于被注入重組緩沖區(qū)的每個段,TCP都生成具有當前順序號和確認最近的有序數(shù)據(jù)的確認號的復制ACK。在接收三(3)個復制ACK之后,如果在重傳緩沖區(qū)中有一個丟失段的話,則發(fā)送者執(zhí)行丟失段的快速重傳。如果重傳緩沖區(qū)為空,則發(fā)送者什么都不作。
在本方法中,在接收到的ACK的量超過了指定的擊發(fā)因子并且如果重傳緩沖區(qū)為空,則發(fā)送者向接收者發(fā)送攜帶正確的順序號和正確的ACK號的特殊的確認消息(被稱為糾正確認消息)。在接收到糾正確認消息時,接收者確定接收者的重組緩沖區(qū)中的數(shù)據(jù)是假注入數(shù)據(jù)。接收者可基于確定ACK段中的順序號小于重組緩沖區(qū)中的數(shù)據(jù)來進行這種確定。因此,重組緩沖區(qū)中的一個或多個段被丟棄。該方法提供了丟棄假注入數(shù)據(jù)的快速方法。
在本方法的一個實施例中,擊發(fā)因子是三(3)?;蛘撸瑩舭l(fā)因子是1或2;而典型的擊發(fā)因子可以在1到10這個范圍中,在其他實施例中可以使用任何其他特定的擊發(fā)因子。利用值為1的擊發(fā)因子,發(fā)送者不用等待3個復制ACK,而是在沒有數(shù)據(jù)未被確認時,針對在發(fā)送者處接受的每個復制ACK發(fā)送糾正確認消息。
首先參考圖5A,其示出了當攻擊者發(fā)送虛假段時用于發(fā)送者的復制ACK方法的步驟。在步驟502,復制ACK被接收。在步驟504,發(fā)送者測試其重傳緩沖區(qū)是空的還是包含未被確認的段。如果緩沖區(qū)不為空,則在步驟506,在需要時執(zhí)行快速重傳操作。
如果重傳緩沖區(qū)為空,則處理假設復制ACK是虛假數(shù)據(jù)段注入所導致的假復制ACK。因此,在步驟508,假復制ACK計數(shù)器的值被遞增。一般地,假復制ACK計數(shù)器的初始值為0,并且每次到達步驟508時遞增1。
在步驟510,發(fā)送者測試假復制ACK計數(shù)器的值是否等于特定的擊發(fā)因子。擊發(fā)因子是根據(jù)察覺到的危險的級別、所需的安全級別或根據(jù)所需的響應級別而預先設置的固定值。在各個實施例中,典型的擊發(fā)因子值為1,2或3。打擊值可以是可配置的參數(shù),其例如可在配置文件、用戶接口面板中設置或通過被發(fā)往執(zhí)行實現(xiàn)的網(wǎng)絡元件的命令行接口命令來設置。
如果假復制ACK計數(shù)器不等于擊發(fā)因子,則在步驟512,該方法返回控制以便執(zhí)行常規(guī)TCP處理。執(zhí)行對控制的傳送,因為假復制ACK消息的數(shù)量尚未超過由打擊值代表的危險級別。但是,如果假復制ACK計數(shù)器與打擊值匹配,則在步驟514,糾正確認消息被發(fā)送到發(fā)送者,該消息攜帶發(fā)送者先前發(fā)送的所有數(shù)據(jù)的最高或正確順序號,還攜帶有效的ACK值。步驟514的效果是重新同步已發(fā)送了太多ACK消息的合法發(fā)送者,同時防止當復制ACK消息被接收者以傳統(tǒng)方式處理時,響應于惡意攻擊者而可能出現(xiàn)的負面影響。
現(xiàn)在參考圖5B,其示出了由數(shù)據(jù)接收者執(zhí)行的步驟。在步驟530,糾正確認消息被接受。其他段可能在接收糾正確認消息之前被接收,但是為了簡明起見,糾正確認消息被示為下一段。在步驟532,接收者測試糾正確認消息的SeqNo是否小于重組緩沖區(qū)中任意段的最高順序號。如果否,則控制在步驟507返回。如果糾正確認消息的SeqNo小于重組緩沖區(qū)中任意段的最高順序號,則重組緩沖區(qū)包含至少一些虛假注入數(shù)據(jù),雖然虛假數(shù)據(jù)在重組緩沖區(qū)中的具體位置是未知的。因此,在步驟534,全部重組緩沖區(qū)被丟棄。因此,通過上述測試,接收者可確定它已將假的注入數(shù)據(jù)段放置在重組緩沖區(qū)中,并且可以丟棄它。因此,上游應用可免受虛假數(shù)據(jù)的影響。
現(xiàn)在參考圖5C、圖5D描述上述方法的示例性應用中的消息流。假設擊發(fā)因子是二(2),由發(fā)送者102維護的復制ACK計數(shù)器的初始值為0,發(fā)送者102在其重傳緩沖區(qū)中沒有段。
發(fā)送者102發(fā)送具有SeqNo 101、ACK 5001以及50字節(jié)數(shù)據(jù)的段509。該段被有序接收,并且接收者106發(fā)送具有SeqNo 5001和ACK 152的ACK消息511。然后,攻擊者104注入具有SeqNo 4000、ACK 1和256字節(jié)的惡意或虛假數(shù)據(jù)的虛假段513。接收者106發(fā)送ACK消息。然后基于SeqNo值4000,接收者106確定段513是被無序接收的。因此,接收者106發(fā)送具有ACK值152和SeqNo 5001的復制ACK消息516,以便向發(fā)送者102提供正確的值。在步驟518,發(fā)送者102累積或使其假復制ACK計數(shù)器遞增,因為其重傳緩沖區(qū)是空的,因此計數(shù)器值為1。
攻擊者104發(fā)送具有SeqNo 5000、ACK 1和256字節(jié)數(shù)據(jù)的虛假段520。段520中的SeqNo值與段513不同,因為攻擊者104正在猜測SeqNo值,而且不知道允許的窗口或下一預期SeqNo值。然后基于SeqNo值5000,接收者106確定段520是被無序接收的。因此,接收者106發(fā)送仍具有ACK值152和SeqNo 5001的復制ACK消息522。發(fā)送者102在步驟524使其假復制ACK計數(shù)器遞增,因為其重傳緩沖區(qū)是空的,因此計數(shù)器值為2。
在步驟526,發(fā)送者102通過步驟510的測試(圖5A)確定假復制ACK計數(shù)器等于擊發(fā)因子。
現(xiàn)在參考圖5D,響應于步驟526的確定,發(fā)送者102發(fā)送具有SeqNo152和ACK 5001的糾正ACK消息538。因此,糾正ACK消息538向接收者106宣告正確值。作為響應,在步驟540,接收者106確定糾正ACK消息538的SeqNo小于重組緩沖區(qū)中的段的SeqNo。因此,接收者106在步驟542從重組緩沖區(qū)丟棄虛假段。
2.4用于基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法圖6是示出了基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖。
在步驟602,查詢閾值(“query_threshld”)被確定和存儲。用于選擇查詢閾值的技術在本節(jié)末尾描述。
在步驟604,TCP段被接收。在步驟606,確定接收到的段的SeqNo與重組緩沖區(qū)中第一段相比的重組間隙。在本上下文中,重組間隙值指示重組緩沖區(qū)中第一段的開始和接收到的段之間的字節(jié)差別。在一個實施例中,重組間隙值被確定為reassm_gap=(重組緩沖區(qū)中第一段的SeqNo)-rcvnxt其中“rcvnxt”指示TCP處理預期接收的下一段。然后,重組間隙值被用作為觸發(fā),以便確定重組緩沖區(qū)中的數(shù)據(jù)是否為假。具體而言,在步驟608,執(zhí)行測試以確定注入的數(shù)據(jù)是否滿足以下條件query_threshold<=reassm_gap<=rcvwnd其中“rcvwnd”表示接收窗口大小。如果關系不成立,則控制在步驟607返回。如果關系成立,則查詢閾值已達到,意味著重組間隙太大。
因此,在步驟610創(chuàng)建啞ACK段。在本上下文中,“啞ACK段”意味著這樣的TCP消息,其被格式化為傳統(tǒng)ACK消息,但是被創(chuàng)建和發(fā)送以用于確定端點是否合法。或者,啞ACK段可被稱為驗證ACK段,或者任何其他功能上等同的術語都可被用作為段的標記。啞ACK段攜帶剛好在最近被正確地確認的SeqNo值之前的SeqNo值,還攜帶合法ACK值。在一個實施例中,SeqNo值被選擇為SeqNo<=(snduna-1),或者比已經(jīng)被確認的SeqNo老的任何SeqNo。ACK值可以是任何可接受的ACK值,例如ACK(rcvnxt)。在TCP段的標志部分設置ACK位。啞ACK段在步驟612被發(fā)送。
啞ACK段的目的是驗證重組緩沖區(qū)中數(shù)據(jù)的真實性。具體而言,如這里所述地發(fā)送啞ACK段將致使遵從RFC 793的發(fā)送者以正確的SeqNo和ACK值進行響應。在步驟614,從發(fā)送者接收ACK消息。根據(jù)RFC793,ACK消息提供發(fā)送者先前發(fā)送過的最大順序號。
然后,接收者可確定重組緩沖區(qū)中的數(shù)據(jù)是否是虛假的。在一個實施例中,在步驟616,接收者測試在步驟614接收的發(fā)送者ACK消息的SeqNo是否小于重組緩沖區(qū)中第一段的SeqNo。如果是,則重組緩沖區(qū)中的段是虛假的并在步驟618被丟棄。
因此,上述方法認識到要不是虛假段,發(fā)送者和接收者之間的連接處于同步狀態(tài)。因為只有發(fā)送者和接收者知道精確的下一預期SeqNo,因此對啞段的使用可被用來致使發(fā)送者通過證明關于精確的下一預期SeqNo的知識來向接收者證實自己。
在步驟602選擇和在步驟608使用的查詢閾值可以使用幾種方法中的任意一個來選擇。在一個實施例中,步驟608涉及測試reassm_gap是否大于當時的窗口大小的1/2?;蛘撸樵冮撝悼梢允钱敃r窗口大小的1/3,窗口大小的3/4,等等。選定值可以根據(jù)網(wǎng)絡中的察覺到的危險級別而變化。查詢閾值還可以是可配置的參數(shù)值。
在另一實施例中,最大段大小(“mss”)也被考慮。例如,步驟608可以涉及評估關系if(reasm_gap>min(rcvwndsize/2,n*maxmss)),其中n是由應用選擇的或是由程序控制的。在另一替換中,查詢閾值可以根據(jù)諸如帶寬和延遲的函數(shù)或往返時間(RTT)估計、可用帶寬以及窗口大小的組合等值來動態(tài)改變。
上述方法不需要改變在接收者處使用的TCP邏輯,因此維持了與現(xiàn)有的TCP實現(xiàn)的互操作性。本節(jié)和2.3節(jié)的方法可與在現(xiàn)有的RFC中描述的現(xiàn)有的快速重傳和快速恢復方法一起使用而無需任何修改。
3.0實現(xiàn)機制——硬件概述圖7是示出了可在其上實現(xiàn)實施例的計算機系統(tǒng)700的框圖。優(yōu)選實施例使用在例如路由器設備這樣的網(wǎng)絡元件上運行的一個或多個計算機程序實現(xiàn)。因此在本實施例中,計算機系統(tǒng)700是路由器。
計算機系統(tǒng)700包括用于傳送信息的總線702或其他通信機制,以及用于處理信息的耦合到總線702的處理器704。計算機系統(tǒng)700還包括主存儲器706,例如隨機訪問存儲器(RAM)、閃存或其他動態(tài)存儲設備,它們耦合到總線702,以便存儲信息和要被處理器704執(zhí)行的指令。主存儲器706還可用來在要被處理器704執(zhí)行的指令的執(zhí)行期間存儲臨時變量或其他中間信息。計算機系統(tǒng)700還包括耦合到總線702以便存儲處理器704的靜態(tài)信息和指令的只讀存儲器(ROM)708或其他靜態(tài)存儲設備。諸如磁盤、閃存或光盤等存儲設備被提供和耦合到總線702以便存儲信息和指令。
通信接口718可耦合到總線702,以便與處理器704交換信息和命令選擇。接口718是傳統(tǒng)的串行接口,例如RS-232或RS-422接口。外部終端712或其他計算機系統(tǒng)連接到計算機系統(tǒng)700,并使用接口718向它提供命令。在計算機系統(tǒng)700中運行的固件或軟件提供了終端接口或基于字符命令接口,從而外部命令可被送入計算機系統(tǒng)。
交換系統(tǒng)716耦合到總線702,并且具有到一個或多個外部網(wǎng)絡元件的輸入接口714和輸出接口719。外部網(wǎng)絡元件可包括耦合到一個或多個主機724的本地網(wǎng)絡722,或者是具有一個或多個服務器730的例如因特網(wǎng)728這樣的全球網(wǎng)絡。交換系統(tǒng)716根據(jù)公知的預定協(xié)議和協(xié)定將到達輸入接口714的信息流量交換到輸出接口719。例如,交換系統(tǒng)716與處理器合作可確定到達輸入接口714的數(shù)據(jù)分組的目的地,并使用輸出接口719將其發(fā)送到正確的目的地。所述目的地可包括主機724、服務器730、其他末端站或本地網(wǎng)絡722或因特網(wǎng)728中的其他路由和交換設備。
本發(fā)明涉及使用計算機系統(tǒng)700來實現(xiàn)這里的方法。根據(jù)本發(fā)明的一個實施例,響應于處理器704執(zhí)行包含在主存儲器706中的一條或多條指令的一個或多個序列,計算機系統(tǒng)700提供這里的方法的實現(xiàn)。這些指令可從另一計算機可讀介質(例如存儲設備710)被讀入主存儲器706。對包含在主存儲器706中的指令序列的執(zhí)行致使處理器704執(zhí)行這里描述的處理步驟。多處理布置中的一個或多個處理器也可被采用以執(zhí)行包含在主存儲器706中的指令序列。在可替換實施例中,硬連線電路可被用來代替軟件指令或與軟件指令組合以實現(xiàn)本發(fā)明。因此,本發(fā)明的實施例并不限于硬件電路和軟件的任何特定組合。
這里使用的術語“計算機可讀”介質是指參與向處理器704提供指令以供執(zhí)行的任何介質。這種介質可采取多種形式,包括但不限于非易失性介質、易失性介質和傳輸介質。非易失性介質包括例如光或磁盤,例如存儲設備710。易失性介質包括動態(tài)存儲器,例如主存儲器706。傳輸介質包括同軸線纜、銅線和光纖,包括包括總線702在內(nèi)的線路。傳輸介質還可采取聲或光波的形式,例如在無線電波和紅外數(shù)據(jù)通信期間生成的那些。
計算機可讀介質的常見形式包括例如軟盤、柔性盤、硬盤、磁帶或任何其他磁性介質、CD-ROM、任何其他光介質、打孔卡、紙帶、具有孔圖案的任何物理介質、RAM、PROM和EPROM,以及任何其他存儲芯片或光盤匣、如后所述的載波,或計算機可從其讀取的任何其他介質。
在向處理器704運送一條或多條指令的一個或多個序列以供執(zhí)行的過程中可能涉及各種形式的計算機可讀介質。例如,指令最初可能被存儲在遠程計算機的磁盤上。遠程計算機可將指令載入其動態(tài)存儲器,并使用調(diào)制解調(diào)器通過電話線發(fā)送這些指令。計算機系統(tǒng)700本地的調(diào)制解調(diào)器可接收電話線上的數(shù)據(jù),并使用紅外發(fā)射機將數(shù)據(jù)轉換為紅外信號。耦合到總線702的紅外檢測器可接收在紅外信號中攜帶的數(shù)據(jù),并將數(shù)據(jù)放在總線702上??偩€702將數(shù)據(jù)運送到主存儲器706,處理器704從主存儲器706獲取并執(zhí)行指令。被主存儲器706接收的指令可選地在被處理器704執(zhí)行之前或之后被存儲在存儲設備710上。
通信接口718還提供與連接到本地網(wǎng)絡722的網(wǎng)絡鏈路720相耦合的雙向數(shù)據(jù)通信。例如,通信接口718可以是綜合業(yè)務數(shù)字網(wǎng)(ISDN)卡或調(diào)制解調(diào)器,用于提供到相應類型電話線的數(shù)據(jù)通信連接。作為另一示例,通信接口718可以是局域網(wǎng)(LAN)卡,用于提供到兼容LAN的數(shù)據(jù)通信連接。還可實現(xiàn)無線鏈路。在任何這種實現(xiàn)中,通信接口718發(fā)送和接收攜帶代表各種信息的數(shù)字數(shù)據(jù)流的電、電磁或光信號。
網(wǎng)絡鏈路720一般通過一個或多個網(wǎng)絡向其他數(shù)據(jù)設備提供數(shù)據(jù)通信。例如,網(wǎng)絡鏈路720可通過本地網(wǎng)絡722向主計算機724或向由因特網(wǎng)服務提供商(ISP)726操作的數(shù)據(jù)設備提供連接。ISP 726又通過世界范圍的分組數(shù)據(jù)通信網(wǎng)絡(現(xiàn)在一般稱為因特網(wǎng)728)來提供數(shù)據(jù)通信服務。本地網(wǎng)絡722和因特網(wǎng)728都使用攜帶數(shù)字數(shù)據(jù)流的電、電磁或光信息。攜帶去往和來自計算機系統(tǒng)700的數(shù)字數(shù)據(jù)的通過各個網(wǎng)絡的信號和在網(wǎng)絡鏈路720上并且通過通信接口718的信號是傳輸信息的載波的示例性形式。
計算機系統(tǒng)700可通過一個或多個網(wǎng)絡、網(wǎng)絡鏈路720和通信接口718發(fā)送消息和接收數(shù)據(jù),包括程序代碼。在因特網(wǎng)示例中,服務器730可通過因特網(wǎng)728、ISP 726、本地網(wǎng)絡722和通信接口718發(fā)送被請求的應用程序代碼。根據(jù)本發(fā)明,一個被這樣下載的應用提供這里描述對網(wǎng)絡數(shù)據(jù)注入攻擊的檢測。
處理器704可在代碼被接收和/或存儲在存儲設備710或其他非易失性存儲器中以供后來的執(zhí)行時執(zhí)行接收到的代碼。以此方式,計算機系統(tǒng)700可以載波形式獲得應用代碼。
4.0擴展和替換在上述說明中,參考本發(fā)明的具體實施例描述了本發(fā)明。但是很明顯,在不脫離本發(fā)明的更廣的精神和范圍的情況下可作出各種修改和改變。因此,說明書和附圖應被理解為說明性而非限制性的。
權利要求
1.一種用于防止網(wǎng)絡上的攻擊的方法,其中所述攻擊包括將虛假傳輸控制協(xié)議(TCP)段注入發(fā)送者和接收者之間的TCP連接,所述方法包括由計算機實現(xiàn)的以下步驟接收復制TCP ACK消息;當由接收者維護的TCP重傳緩沖區(qū)為空時,使假復制ACK計數(shù)器遞增;當假復制ACK計數(shù)器等于指定的擊發(fā)因子時,發(fā)送提供正確的順序值和ACK值的糾正ACK消息。
2.如權利要求1所述的方法,其中所述指定的擊發(fā)因子是從1到10范圍內(nèi)的值。
3.如權利要求1所述的方法,其中所述步驟由充當所述TCP連接中的數(shù)據(jù)接收者的末端節(jié)點執(zhí)行。
4.如權利要求1所述的方法,其中所述步驟由網(wǎng)絡基礎設施元件的操作系統(tǒng)的TCP應用執(zhí)行。
5.如權利要求1所述的方法,其中所述步驟由被個人計算機、工作站或其他網(wǎng)絡末端站的操作系統(tǒng)容宿或與個人計算機、工作站或其他網(wǎng)絡末端站的操作系統(tǒng)相關聯(lián)的TCP進程、堆棧、適配器或代理執(zhí)行。
6.如權利要求1所述的方法,還包括以下步驟接收所述糾正ACK消息;確定所述正確的順序值是否小于重組緩沖區(qū)中的段的另一順序值;當所述正確的順序值小于所述重組緩沖區(qū)中的段的所述另一順序值時,從所述重組緩沖區(qū)丟棄所述段。
7.如權利要求6所述的方法,其中所述丟棄步驟包括丟棄所述重組緩沖區(qū)中的所有段。
8.一種用于防止網(wǎng)絡上的攻擊的方法,其中所述攻擊包括將虛假傳輸控制協(xié)議(TCP)段注入發(fā)送者和接收者之間的TCP連接,所述方法包括由計算機實現(xiàn)的以下步驟接收特定的TCP段;確定所述特定的TCP段和先前被放置在由接收者維護的重組緩沖區(qū)中的在先TCP段之間的順序值間隙;根據(jù)指定的拭探值,確定所述順序值間隙是否太大;如果所述順序值間隙太大,則執(zhí)行以下步驟創(chuàng)建和發(fā)送攜帶剛好在最近被正確地確認的順序值之前的特定順序值的啞段;接收對所述啞段的確認;確定所述確認中攜帶的第二順序值是否小于所述第一TCP段的第三順序值;以及當所述確認中攜帶的所述第二順序值小于所述特定TCP段的所述第三順序值時,從所述重組緩沖區(qū)丟棄所述特定TCP段。
9.如權利要求8所述的方法,其中當重組間隙值大于當時的窗口大小的一半時,所述指定的拭探值成立。
10.如權利要求8所述的方法,其中當重組間隙值大于(a)當時的窗口大小的一半和(b)多個最大允許段大小二者中的較小者時,所述指定的拭探值成立。
11.如權利要求8所述的方法,其中當查詢閾值大于當時的帶寬和當時的延遲的函數(shù)時,所述指定的拭探值成立。
12.如權利要求8所述的方法,其中當查詢閾值大于往返時間(RTT)估計、當時的可用帶寬值和窗口大小的函數(shù)時,所述指定的拭探值成立。
13.如權利要求8所述的方法,其中當查詢閾值小于等于重組間隙值并且所述重組間隙值小于等于接收窗口值時,所述指定的拭探值成立。
14.如權利要求13所述的方法,其中所述重組間隙值包括所述重組緩沖區(qū)中的第一段的順序值減去下一預期段值。
15.一種用于防止網(wǎng)絡上的攻擊的裝置,其中所述攻擊包括發(fā)送具有虛假或不希望的數(shù)據(jù)段的虛假傳輸控制協(xié)議(TCP)段,所述裝置包括用于接收復制TCP ACK消息的裝置;用于當由接收者維護的TCP重傳緩沖區(qū)為空時,使假復制ACK計數(shù)器遞增的裝置;用于當假復制ACK計數(shù)器等于指定的擊發(fā)因子時,發(fā)送提供正確的順序值和ACK值的糾正ACK消息的裝置。
16.如權利要求15所述的裝置,還包括用于執(zhí)行權利要求2、3、4、5、6、7、8、9、10、11、12、13或14中任何步驟的裝置。
17.一種用于防止網(wǎng)絡上的攻擊的裝置,其中所述攻擊包括發(fā)送具有虛假或不希望的數(shù)據(jù)段的虛假傳輸控制協(xié)議(TCP)段,所述裝置包括處理器;一個或多個存儲的指令序列,所述指令序列可被所述處理器訪問,并且當被所述處理器執(zhí)行時使得所述處理器執(zhí)行接收復制TCP ACK消息;當由接收者維護的TCP重傳緩沖區(qū)為空時,使假復制ACK計數(shù)器遞增;當假復制ACK計數(shù)器等于指定的擊發(fā)因子時,發(fā)送提供正確的順序值和ACK值的糾正ACK消息。
18.如權利要求17所述的裝置,還包括存儲的指令序列,所述指令序列可被所述處理器訪問,并且當被所述處理器執(zhí)行時,使得所述處理器執(zhí)行權利要求2、3、4、5、6、7、8、9、10、11、12、13或14中的任何步驟。
19.一種攜帶用于防止網(wǎng)絡上的攻擊的一個或多個指令序列的計算機可讀介質,其中攻擊包括發(fā)送具有虛假或不希望的數(shù)據(jù)段的虛假傳輸控制協(xié)議(TCP)段,其中一個或多個處理器對所述一個或多個指令序列的執(zhí)行使得所述一個或多個處理器執(zhí)行接收復制TCP ACK消息;當由接收者維護的TCP重傳緩沖區(qū)為空時,使假復制ACK計數(shù)器遞增;當假復制ACK計數(shù)器等于指定的擊發(fā)因子時,發(fā)送提供正確的順序值和ACK值的糾正ACK消息。
20.如權利要求19所述的計算機可讀介質,還包括存儲的指令序列,所述指令序列可被所述處理器訪問,并且當被所述處理器執(zhí)行時,使得所述處理器執(zhí)行權利要求2、3、4、5、6、7、8、9、10、11、12、13或14中的任何步驟。
全文摘要
本發(fā)明公開了一種用于防止分組交換網(wǎng)絡中的TCP數(shù)據(jù)注入攻擊的方法。ACK消息或啞段被發(fā)送,以驗證重組緩沖區(qū)中數(shù)據(jù)的真實性,并且?guī)椭斓貋G棄虛假數(shù)據(jù)。這些方法涉及發(fā)送者檢測虛假數(shù)據(jù),并增強了對典型TCP實現(xiàn)所固有的用于處理ACK消息的機制的使用。后一方法可在不修改發(fā)送者的TCP實現(xiàn)的情況下實現(xiàn)。此外,接收者的TCP實現(xiàn)維持與RFC 793的兼容性。
文檔編號G06F11/22GK1906591SQ200580001579
公開日2007年1月31日 申請日期2005年1月11日 優(yōu)先權日2004年1月16日
發(fā)明者阿納恩薩·拉邁阿, 蘭德爾·斯圖爾特, 彼得·李, 帕特里克·梅翰 申請人:思科技術公司