国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      蠕蟲遏制的制作方法

      文檔序號(hào):6632785閱讀:183來源:國知局
      專利名稱:蠕蟲遏制的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明一般涉及計(jì)算機(jī)安全,尤其涉及檢測(cè)、警告和/或減少網(wǎng)絡(luò)化計(jì)算機(jī)系統(tǒng)中蠕蟲的傳播。

      發(fā)明內(nèi)容
      下文為向讀者提供基本的理解提出了本發(fā)明的簡化概述。該概述并非本發(fā)明的廣泛綜述,且沒有標(biāo)識(shí)本發(fā)明關(guān)鍵或決定性元素,也沒有描述本發(fā)明的范圍。它唯一的目的是以簡化的形式提供此處所揭示的某些概念,作為后文提供的更詳細(xì)描述的序言。
      自繁殖程序,也被稱為蠕蟲,威脅連接至因特網(wǎng)的計(jì)算機(jī)。蠕蟲惡意利用了諸如流行的軟件包等程序中的易受攻擊性來獲取對(duì)被感染的機(jī)器的控制。這樣,該問題的一個(gè)長期的解決方法是構(gòu)建沒有易受攻擊性的軟件。然而,直到那時(shí)以前,軟件會(huì)一直含有易受攻擊性,并且可以采用蠕蟲遏制系統(tǒng)來降低蠕蟲的影響。因?yàn)槿湎x能夠迅速地傳播,遏制系統(tǒng)可以被自動(dòng)化以快速和/或有效地檢測(cè)和響應(yīng),并且可以向網(wǎng)絡(luò)中的另一個(gè)計(jì)算機(jī)系統(tǒng)節(jié)點(diǎn)分發(fā)警報(bào)。
      遏制系統(tǒng)的一方面可以包括監(jiān)測(cè)系統(tǒng),該監(jiān)測(cè)系統(tǒng)能夠通過包括動(dòng)態(tài)流分析的多種技術(shù)檢測(cè)一大類攻擊。遏制系統(tǒng)的另一方面可以包括生成和/或發(fā)送警報(bào),作為安全共享關(guān)于已檢測(cè)到的蠕蟲的知識(shí)的基礎(chǔ)。警報(bào)可以包含證明一個(gè)給定的程序含有易受攻擊性的信息。警報(bào)可以是自證明的,這樣它的真實(shí)性可以由計(jì)算機(jī)系統(tǒng)獨(dú)立地驗(yàn)證。遏制系統(tǒng)可以包括能復(fù)原的和/或自組織的協(xié)議,以用及時(shí)的方式向沒有被感染的節(jié)點(diǎn)傳播警報(bào),甚至在蠕蟲爆發(fā)過程中受到劇烈的攻擊時(shí)。遏制系統(tǒng)可以包括一系統(tǒng)體系結(jié)構(gòu),它使得大量互不信任的計(jì)算機(jī)能夠在遏制蠕蟲的任務(wù)中相互合作,即使在蠕蟲正在迅速傳播并惡意利用軟件包中未知的易受攻擊性時(shí)。遏制系統(tǒng)可以包括一保護(hù)系統(tǒng),它可以保護(hù)計(jì)算設(shè)備免遭將來的攻擊。
      當(dāng)結(jié)合附圖考慮參考下述詳細(xì)描述時(shí),眾多附加特征能夠被更容易的理解和更好地理解。


      按照附圖閱讀下述詳細(xì)描述,可以更好地理解本發(fā)明,附圖中圖1是實(shí)現(xiàn)網(wǎng)絡(luò)系統(tǒng)中一節(jié)點(diǎn)的示例性計(jì)算系統(tǒng)的示意圖;圖2是一示例性計(jì)算網(wǎng)絡(luò)的示意圖;圖3是一示例性遏制系統(tǒng)的數(shù)據(jù)流圖;圖4是與一示例性存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)相關(guān)聯(lián)的示例性頁污染數(shù)據(jù)存儲(chǔ)的表;圖5是另一示例性頁污染數(shù)據(jù)存儲(chǔ)的表;圖6是一檢測(cè)蠕蟲攻擊和/或程序易受攻擊性的示例性方法的流程圖;圖7是一示例性警報(bào)的示意圖;圖8是一證明自證明警報(bào)的示例性方法的流程圖;圖9是一示例性抽象機(jī)器的代碼清單;圖10是一示例性安全條件的條件清單;圖11是易受攻擊指令的指令清單;圖12是一示例性對(duì)等網(wǎng)絡(luò)的示意圖;圖13是示出在一示例性對(duì)等網(wǎng)絡(luò)中在給定一小部分檢測(cè)模塊時(shí)一小部分存活節(jié)點(diǎn)的示例性圖表。
      圖14是一示例性寄存器污染數(shù)據(jù)存儲(chǔ)的表;圖15是易受攻擊指令的指令清單;圖16是一生成自證明警報(bào)的示例性方法的流程圖;圖17是對(duì)任意跳轉(zhuǎn)至一可執(zhí)行緩沖區(qū)的易受攻擊性的示例性源代碼清單;以及圖18是一示例性污染數(shù)據(jù)存儲(chǔ)的表。
      附圖中,相同的參考標(biāo)號(hào)用來指相同的部分。
      具體實(shí)施例方式
      示例性操作環(huán)境圖1和下列討論意在對(duì)其中可實(shí)現(xiàn)蠕蟲遏制系統(tǒng)的所有或一部分部的合適的計(jì)算機(jī)環(huán)境提供一簡短的、概括的描述。圖1中的操作環(huán)境僅僅是合適的操作環(huán)境的一個(gè)示例,并不意欲對(duì)該操作環(huán)境的使用范圍或功能提出任何限制。其它可適于用作此處所述的蠕蟲遏制系統(tǒng)的公知的計(jì)算機(jī)系統(tǒng)、環(huán)境和/或配置包括,但不限于,個(gè)人計(jì)算機(jī)、手持或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、小型機(jī)、大型機(jī)、包含上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算機(jī)環(huán)境等。
      盡管并非必需,蠕蟲遏制系統(tǒng)將在諸如由一臺(tái)或多臺(tái)計(jì)算機(jī)或其他設(shè)備執(zhí)行的程序模塊等計(jì)算機(jī)可執(zhí)行指令的通用語境下描述。一般地,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。通常,程序模塊的功能可以按在多種環(huán)境下所要求的結(jié)合或分布。在分布式環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
      參考圖1,用于實(shí)現(xiàn)蠕蟲遏制系統(tǒng)的示例性系統(tǒng)包括一計(jì)算設(shè)備,諸如計(jì)算設(shè)備100。在其最基本配置中,計(jì)算設(shè)備100通常包括至少一個(gè)處理器單元102和存儲(chǔ)器104。取決于計(jì)算設(shè)備的確切配置和類型,存儲(chǔ)器104可以是易失性的(諸如RAM)、非易失性的(諸如ROM、閃存等)或兩者的結(jié)合。該最基本配置在圖1中由虛線106示出。此外,設(shè)備100還可以包括另外的特征和/或功能。例如,設(shè)備100還可包括另外的存儲(chǔ)(例如,可移動(dòng)的和/或不可移動(dòng)的),包括,但不限于,磁盤、光盤或磁帶。這些另外的存儲(chǔ)在圖1中由可移動(dòng)存儲(chǔ)108和不可移動(dòng)存儲(chǔ)110示出。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)的用于諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的信息的存儲(chǔ)的易失性的和非易失性的、可移動(dòng)的和不可移動(dòng)的介質(zhì)。存儲(chǔ)器104、可移動(dòng)存儲(chǔ)108、和不可移動(dòng)存儲(chǔ)110都是計(jì)算機(jī)存儲(chǔ)介質(zhì)的示例。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但并不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由設(shè)備100訪問的任何其它介質(zhì)。任何這樣的計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是設(shè)備100的一部分。
      設(shè)備100還可以包含通信連接112,它允許設(shè)備100與諸如計(jì)算系統(tǒng)網(wǎng)絡(luò)211中的其它節(jié)點(diǎn)等其它計(jì)算設(shè)備通信。通信連接112是通信介質(zhì)的一個(gè)示例。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號(hào)”指的是一種信號(hào),其一個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式被設(shè)定或更改。作為示例,而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,和無線介質(zhì),諸如聲學(xué)、射頻、紅外線和其它無線介質(zhì)。在這里使用的術(shù)語計(jì)算機(jī)可讀介質(zhì)包括存儲(chǔ)介質(zhì)和通信介質(zhì)兩者。
      設(shè)備100還可以含有輸入設(shè)備114,諸如鍵盤、鼠標(biāo)、筆、語音輸入設(shè)備、觸摸式輸入設(shè)備、激光距離探測(cè)器、紅外攝像機(jī)、視頻輸入設(shè)備和/或其它輸入設(shè)備。還可以包括諸如顯示器、揚(yáng)聲器、打印機(jī)和/或其它輸出設(shè)備的輸出設(shè)備116。
      在下文的描述中,本發(fā)明參考由一臺(tái)或多臺(tái)計(jì)算設(shè)備實(shí)現(xiàn)的動(dòng)作和操作的符號(hào)表示來描述,除非另有說明。由此,可以理解,這樣的動(dòng)作和操作,有時(shí)被稱為由計(jì)算機(jī)執(zhí)行的,包括由計(jì)算設(shè)備的處理單元對(duì)以結(jié)構(gòu)化格式表示數(shù)據(jù)的電信號(hào)的處理。該處理變換了數(shù)據(jù)或在計(jì)算設(shè)備的存儲(chǔ)器系統(tǒng)中的位置上維護(hù)它們,從而以一種本領(lǐng)域技術(shù)人員都理解的方式重新配置或改變了該設(shè)備的操作。雖然下列描述已在前文中描述,但它并不意味著限制,如本領(lǐng)域的技術(shù)人員可以理解的,在下文中描述的各種動(dòng)作和操作也可用硬件實(shí)現(xiàn)。例如,通過使用本領(lǐng)域技術(shù)人員所知的常規(guī)技術(shù),軟件指令中的全部或一部分可以由諸如DSP、可編程邏輯陣列等專用電路來實(shí)現(xiàn)。
      維護(hù)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是存儲(chǔ)器的物理位置,它具有由數(shù)據(jù)格式所定義的特定屬性。本領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到,用來存儲(chǔ)程序指令的存儲(chǔ)設(shè)備能夠分布在網(wǎng)絡(luò)上。例如,遠(yuǎn)程計(jì)算機(jī)可以存儲(chǔ)被描述為軟件的進(jìn)程的一示例。本地或終端計(jì)算機(jī)可以訪問該遠(yuǎn)程計(jì)算機(jī)并下載一部分或全部軟件來運(yùn)行程序。作為選擇,本地計(jì)算機(jī)可以下載所需的部分軟件,或通過在本地終端上執(zhí)行一些軟件指令且在遠(yuǎn)程計(jì)算機(jī)上(或計(jì)算機(jī)網(wǎng)絡(luò)中)執(zhí)行一些軟件指令來分布式地處理。
      其中可使用遏制系統(tǒng)的網(wǎng)絡(luò)化環(huán)境的一個(gè)示例參考圖2來描述。該示例性網(wǎng)絡(luò)包括若干計(jì)算機(jī)或節(jié)點(diǎn)210,它們通過由云表示的網(wǎng)絡(luò)211彼此通信。網(wǎng)絡(luò)211可以包括眾多公知的組件,諸如,路由器、網(wǎng)關(guān)、集線器等,且允許節(jié)點(diǎn)210通過有線和/無線介質(zhì)通信。當(dāng)通過網(wǎng)絡(luò)211彼此交互時(shí),一個(gè)或多個(gè)節(jié)點(diǎn)可以擔(dān)當(dāng)客戶機(jī)、網(wǎng)絡(luò)服務(wù)器、或關(guān)于其他節(jié)點(diǎn)的對(duì)等體(peer)。從而,遏制系統(tǒng)的各種示例可以被實(shí)施為客戶機(jī)、網(wǎng)絡(luò)服務(wù)器、對(duì)等體、或其組合,即使此處所包含的特定示例沒有涉及所有這些類型的計(jì)算機(jī)。
      蠕蟲遏制蠕蟲通常通過諸如消息等可以被存儲(chǔ)在計(jì)算系統(tǒng)中的接收到的數(shù)據(jù)引入到計(jì)算系統(tǒng)中。該接收到的和存儲(chǔ)的數(shù)據(jù)可以惡意利用該計(jì)算系統(tǒng)的存儲(chǔ)特征來創(chuàng)建允許蠕蟲攻擊和/或傳播的易受攻擊性。例如,眾多蠕蟲將代碼注入一易受攻擊的程序中并強(qiáng)迫該程序執(zhí)行該代碼。其它蠕蟲可以通過遠(yuǎn)程控制易受攻擊的程序的執(zhí)行來攻擊,而不需注入新的代碼。
      參考圖3,蠕蟲遏制系統(tǒng)300可以包括一個(gè)或多個(gè)檢測(cè)模塊340、警報(bào)模塊350、警報(bào)驗(yàn)證模塊360、分發(fā)模塊370和響應(yīng)模塊380。檢測(cè)模塊340可以檢測(cè)在計(jì)算系統(tǒng)上的蠕蟲攻擊。檢測(cè)前,該蠕蟲可以是已知或未知的??梢岳斫?,在適當(dāng)時(shí)可使用任何蠕蟲檢測(cè)系統(tǒng)。蠕蟲遏制系統(tǒng)300可以使用不同的技術(shù)運(yùn)行不同的檢測(cè)模塊340,且每個(gè)檢測(cè)模塊340可以使用一種或多種技術(shù)來檢測(cè)蠕蟲??墒褂煤线m的檢測(cè)技術(shù)的任一組合,包括將收到的信息標(biāo)識(shí)為含有已知蠕蟲;將接收到的信息與存儲(chǔ)的信息相比較以檢測(cè)更改的和不必要的文件的存在、檢測(cè)配置的改變、和/或驗(yàn)證諸如返回地址等參數(shù)值;將預(yù)期要存儲(chǔ)的信息與實(shí)際所存儲(chǔ)的信息相比較以檢測(cè)緩沖區(qū)蓋寫;使用保護(hù)存儲(chǔ)段檢測(cè)緩沖區(qū)溢出;實(shí)現(xiàn)數(shù)組邊界核查以直接檢測(cè)緩沖區(qū)上溢和下溢;監(jiān)視程序的運(yùn)行時(shí)和/或通信模式并檢測(cè)與預(yù)期行為的任何背離;對(duì)傳入數(shù)據(jù)檢查已知蠕蟲簽名,諸如串和/或消息長度;動(dòng)態(tài)數(shù)據(jù)流分析;等等。動(dòng)態(tài)數(shù)據(jù)流分析在下文描述。
      當(dāng)檢測(cè)到蠕蟲,遏制系統(tǒng)可以采取行動(dòng)。例如,警報(bào)模塊350可以生成警報(bào)330,并且將警報(bào)送至一個(gè)或多個(gè)計(jì)算系統(tǒng),以共享關(guān)于所檢測(cè)的蠕蟲的知識(shí)。警報(bào)模塊可以生成一自證明警報(bào),它可以被發(fā)送至一個(gè)或多個(gè)計(jì)算系統(tǒng),且可以包含證明給定程序含有易受攻擊性的信息。警報(bào)的分發(fā)可以由分發(fā)模塊370來確定,它可以使得大量互不信任的計(jì)算機(jī)系統(tǒng)能夠在遏制蠕蟲上合作。接收到的自證明警報(bào)可以由接收該自證明警報(bào)的計(jì)算系統(tǒng)獨(dú)立地證明。對(duì)自證明警報(bào)的驗(yàn)證可以由接收計(jì)算系統(tǒng)320的警報(bào)驗(yàn)證模塊360執(zhí)行。
      檢測(cè)蠕蟲和/或接收警報(bào)的計(jì)算系統(tǒng)可以采取本地行動(dòng)以凈化和/或保護(hù)系統(tǒng)、降低蠕蟲的有害效果、和/或防止蠕蟲經(jīng)由響應(yīng)模塊380傳播。響應(yīng)模塊380所使用的確切保護(hù)機(jī)制可在各節(jié)點(diǎn)間變化,并且可以適當(dāng)?shù)貙?shí)現(xiàn)。例如,某些節(jié)點(diǎn)可以簡單地停止易受攻擊的軟件包;其它節(jié)點(diǎn)可以使用本地修補(bǔ)和/或過濾過程。
      使用動(dòng)態(tài)流分析的檢測(cè)動(dòng)態(tài)數(shù)據(jù)流分析可以檢測(cè)多種不同的蠕蟲或同一蠕蟲的變種通過惡意利用易受攻擊性來獲取對(duì)目標(biāo)程序的控制的方式。從而,動(dòng)態(tài)數(shù)據(jù)流分析不是以蠕蟲為中心的,而是以易受攻擊性為中心的。動(dòng)態(tài)數(shù)據(jù)流分析可以檢測(cè)未知的蠕蟲,因?yàn)樗恍枰P(guān)于含有易受攻擊性的特定指令集或蠕蟲所使用來惡意利用該易受攻擊性的特定行動(dòng)集的先驗(yàn)知識(shí)。以這種方式,動(dòng)態(tài)數(shù)據(jù)流分析可以檢測(cè)未知的蠕蟲。蠕蟲使用的多種攻擊涉及將代碼注入到易受攻擊的程序中并強(qiáng)迫它執(zhí)行該代碼。另一種常見的攻擊機(jī)制是遠(yuǎn)程地控制該易受攻擊的程序的執(zhí)行,而不注入任何新代碼。例如,如果該程序已經(jīng)裝載C運(yùn)行時(shí)環(huán)境,則蠕蟲可以強(qiáng)迫該易受攻擊的程序調(diào)用system()函數(shù)。動(dòng)態(tài)流分析可以檢測(cè)這兩種感染方法以及其它感染方法。
      動(dòng)態(tài)流分析跟蹤輸入操作中接收到的數(shù)據(jù)(例如,從網(wǎng)絡(luò)連接處接收到的數(shù)據(jù))。動(dòng)態(tài)流分析可以由上文參考圖3討論的檢測(cè)模塊340來實(shí)現(xiàn)。更具體地,檢測(cè)模塊340可以將某些信息存儲(chǔ)位置標(biāo)識(shí)為“臟”,例如,存儲(chǔ)從外部來源接收到的信息的那些存儲(chǔ)位置和/或存儲(chǔ)從來自外部來源的信息導(dǎo)出的信息的存儲(chǔ)位置。檢測(cè)模塊可以選擇性地阻斷存儲(chǔ)在臟位置上的數(shù)據(jù)的執(zhí)行,和/或可以選擇性地阻斷將那些數(shù)據(jù)裝載到指令指針。以這種方式,阻斷執(zhí)行和/或?qū)⑴K數(shù)據(jù)裝載到指令指針可以防止或減少遠(yuǎn)程裝載的代碼的執(zhí)行和對(duì)執(zhí)行的遠(yuǎn)程控制。指令指針或程序計(jì)數(shù)器是包含在程序序列中下一條被執(zhí)行的指令的地址或位置的寄存器。
      跟蹤所存儲(chǔ)的數(shù)據(jù)是臟還是干凈的動(dòng)態(tài)流分析可以使用任一合適的方式來執(zhí)行。例如,可以探測(cè)存儲(chǔ)來自外部來源的信息的指令來跟蹤哪個(gè)存儲(chǔ)器位置和/或CPU寄存器含有從輸入操作中接收和/或從輸入操作中接收到的數(shù)據(jù)中導(dǎo)出的臟數(shù)據(jù)。探測(cè)的指令的選擇可以包括讀/或?qū)憯?shù)據(jù)的任何適當(dāng)?shù)闹噶睿T如裝載或存儲(chǔ)操作(例如,x86 CPU上的MOVS、PUSH、POP)、算術(shù)和邏輯指令(例如,x86 CPU上的ADD、MUL、XOR、AND)。所有控制轉(zhuǎn)移指令(例如,x86 CPU上的RET、CALL、JMP),或被認(rèn)為適當(dāng)?shù)淖蛹部梢员惶綔y(cè)來實(shí)現(xiàn)對(duì)裝載至指令指針的數(shù)據(jù)的核查。
      臟存儲(chǔ)器位置可以用任何合適的方式來跟蹤。例如,臟存儲(chǔ)器位置可以在污染數(shù)據(jù)存儲(chǔ)中跟蹤,污染數(shù)據(jù)存儲(chǔ)將一臟指示符與計(jì)算設(shè)備的一部分存儲(chǔ)器中的存儲(chǔ)位置相關(guān)聯(lián)。存儲(chǔ)器的該部分可以是存儲(chǔ)器位置、寄存器、偏移量指示等。
      臟指示符可以是任一合適的指示符,它指示存儲(chǔ)在相關(guān)聯(lián)的存儲(chǔ)器位置上的信息來自不可信外部來源,在某些示例中,可以認(rèn)為發(fā)送信息的所有其它節(jié)點(diǎn)都是不可信的。例如,臟指示符可以是一二進(jìn)制數(shù),這樣,1指示相關(guān)聯(lián)的數(shù)據(jù)是臟的,而0指示相關(guān)聯(lián)的數(shù)據(jù)是干凈的。在另一個(gè)示例中,臟指示符可以是諸如整數(shù)或字母數(shù)字串等消息標(biāo)識(shí)符,它指示臟信息的消息和/或來源。以這種方式,如果數(shù)據(jù)是臟的,則臟指示符可以等價(jià)于唯一消息指示符,且如果數(shù)據(jù)是‘干凈的’,臟指示符可以等于一默認(rèn)值,如空值或‘0’。在另一個(gè)示例中,臟指示符可以是指示消息和消息中的偏移量兩者的標(biāo)識(shí)符。在另一個(gè)示例中,臟指示符可以是數(shù)據(jù)流圖的標(biāo)識(shí)符,該數(shù)據(jù)流圖包括用來從臟信息的消息/來源中的值計(jì)算臟存儲(chǔ)器部分處的值的指令的全部序列或序列的相關(guān)部分。
      由相關(guān)聯(lián)的臟指示符指示的相關(guān)聯(lián)的存儲(chǔ)器部分的臟或干凈的位置可以用任一適當(dāng)?shù)姆绞絹碇甘?。在一個(gè)示例中,臟指示符可以與指示存儲(chǔ)器中的特定位置的存儲(chǔ)器位置指示符相關(guān)聯(lián)。在另一個(gè)示例中,在臟指示符向量中放置臟指示符可以指示該存儲(chǔ)器位置。例如,臟指示符向量或數(shù)組中的第一個(gè)臟指示符可以指示第一存儲(chǔ)器位置(諸如,堆棧的頂端),第二個(gè)臟指示符可以指示第二存儲(chǔ)器位置(諸如堆棧中自頂向下第二個(gè)位置),依此類推。
      在一個(gè)示例中,每個(gè)存儲(chǔ)器位置可以用污染數(shù)據(jù)存儲(chǔ)中的臟指示符來跟蹤。示例污染數(shù)據(jù)存儲(chǔ)390在圖3示出。計(jì)算設(shè)備中的任何類型或部分的存儲(chǔ)器可以被跟蹤,例如,存儲(chǔ)器頁、在存儲(chǔ)器頁中的個(gè)別存儲(chǔ)器位置、CPU寄存器等。
      存儲(chǔ)器的每一頁都可以通過將存儲(chǔ)器的每一頁和頁臟指示符相關(guān)聯(lián)來跟蹤。存儲(chǔ)器頁可以是存儲(chǔ)器的任一段,諸如4KB的存儲(chǔ)器段。頁臟指示符可以指示存儲(chǔ)器頁中的至少一個(gè)存儲(chǔ)器位置是否為臟。如果頁臟指示符指示頁中的至少一個(gè)臟存儲(chǔ)器位置,那么臟頁中的每個(gè)存儲(chǔ)器位置可以與一存儲(chǔ)器位置臟指示符相關(guān)聯(lián)。存儲(chǔ)器位置臟指示符可以指示相關(guān)聯(lián)的存儲(chǔ)器位置(由向量中的位置,或任何其它合適的方式來指示)是干凈的還是臟的,取決于在該存儲(chǔ)器位置中所包含的信息。以這種方式,每個(gè)存儲(chǔ)器頁可以與一頁臟指示符相關(guān)聯(lián),且只有包含臟信息的那些頁可以被進(jìn)一步分隔成一個(gè)個(gè)存儲(chǔ)器位置以跟蹤臟信息。
      圖4示出允許檢測(cè)模塊跟蹤哪些存儲(chǔ)器位置為臟(例如,含有從輸入操作中接收到的數(shù)據(jù))示例數(shù)據(jù)結(jié)構(gòu)410、420。頁污染數(shù)據(jù)存儲(chǔ)410可以包括指示相關(guān)聯(lián)的存儲(chǔ)器頁是干凈還是臟的頁臟指示符的向量。例如,如圖4所示,第一存儲(chǔ)器頁可以如頁臟指示符412的值所指示的那樣是干凈的,而第二存儲(chǔ)器頁可以如頁臟指示符414的值所指示的那樣是臟的。以這種方式,頁污染數(shù)據(jù)存儲(chǔ)410是一向量位圖,每4KB存儲(chǔ)器頁一個(gè)比特,如果在該頁中的任何位置是臟的,則將該比特置位。
      對(duì)頁污染數(shù)據(jù)存儲(chǔ)410中所指示的每一臟頁,可將一附加存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)420與圖4中所示的指示臟頁的頁污染數(shù)據(jù)存儲(chǔ)的頁臟指示符相關(guān)聯(lián)。存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)420可以包括指示臟面中相關(guān)聯(lián)的存儲(chǔ)器位置是干凈還是臟的存儲(chǔ)器位置臟指示符的向量。例如,如圖4所示,由頁臟指示符414的值指示的,第二頁包含臟數(shù)據(jù)。存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)420可以與頁臟指示符414相關(guān)聯(lián)。存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)420可以包括指示該特定頁中哪個(gè)存儲(chǔ)器位置是干凈的和/或臟的存儲(chǔ)器位置臟指示符422、424的向量。在圖4所示的示例存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)中,第一存儲(chǔ)器位置可以如存儲(chǔ)器位置臟指示符422的值所指示的那樣是干凈的,而第二存儲(chǔ)器位置可以如存儲(chǔ)器位置臟指示符424的值所指示的那樣是臟的。以這種方式,存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)420是一個(gè)向量位圖,每個(gè)存儲(chǔ)單元一個(gè)比特,如果相關(guān)聯(lián)頁上的相關(guān)聯(lián)存儲(chǔ)器位置是臟的,則將該比特置位。存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)可以用任一何合適的粒度來跟蹤臟存儲(chǔ)器位置,例如,通過以頁、字、和/或字節(jié)粒度維護(hù)臟指示符來跟蹤。類似地,其它存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)可以與指示臟存儲(chǔ)器位置的存儲(chǔ)器位置臟指示符相關(guān)聯(lián)。其它存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)可以在更精細(xì)級(jí)別的粒度上,例如,對(duì)信息的每個(gè)字節(jié),指示臟存儲(chǔ)器位置。
      如圖4所示,頁臟指示符可以存儲(chǔ)在頁污染數(shù)據(jù)存儲(chǔ)410上,且存儲(chǔ)器位置臟指示符可以存儲(chǔ)在存儲(chǔ)器位置污染數(shù)據(jù)存儲(chǔ)420上??蛇x擇地,并非對(duì)每一級(jí)存儲(chǔ)器部分粒度有單獨(dú)數(shù)據(jù)存儲(chǔ),而是單個(gè)數(shù)據(jù)存儲(chǔ)可以與指示臟存儲(chǔ)器部分的、包括下一級(jí)更精細(xì)粒度的臟指示符的臟指示符一同使用。例如,頁臟指示符可以作為數(shù)組存儲(chǔ)在污染數(shù)據(jù)存儲(chǔ)中。指示干凈頁的頁臟指示符可以是任一合適的指示符,諸如0或空值。指示臟值的頁臟指示符可以是含有指示該頁的哪個(gè)存儲(chǔ)器位置是臟和干凈的指示符值矢量的位圖。
      在圖5所示的示例性污染數(shù)據(jù)存儲(chǔ)510中,第一存儲(chǔ)器頁可以如由頁臟指示符512的值所指示的那樣是干凈的,而第二存儲(chǔ)器頁可以如由頁臟指示符514的值所指示的那樣是臟的。指示該頁為臟的臟面指示符可以包括指示相關(guān)聯(lián)的存儲(chǔ)器位置是干凈還是臟的存儲(chǔ)器位置臟指示符向量。以這種方式,如果頁是干凈的,則污染數(shù)據(jù)存儲(chǔ)510是一數(shù)組位圖,每一存儲(chǔ)器頁一個(gè)比特,如果頁是臟的,則污染數(shù)據(jù)存儲(chǔ)510是一存儲(chǔ)器位置臟指示符向量。例如,如圖5所示,第二頁包含了如由頁臟指示符514的值所指示的臟數(shù)據(jù)。頁臟指示符514的值可以指示該頁中哪些存儲(chǔ)器位置是臟的或是干凈的。例如,如圖5所示,存儲(chǔ)器位置臟指示符542的值指示該頁中包含的第一存儲(chǔ)器位置是干凈的,而存儲(chǔ)器位置臟指示符544指示相關(guān)聯(lián)的存儲(chǔ)器位置是臟的。
      動(dòng)態(tài)數(shù)據(jù)流分析可以另外地和/或替換地跟蹤存儲(chǔ)在CPU寄存器上干凈的/臟的數(shù)據(jù)。例如,存儲(chǔ)器的每一寄存器可以用寄存器污染數(shù)據(jù)存儲(chǔ)中的寄存器臟指示符來跟蹤。寄存器臟指示符可以依據(jù)所存儲(chǔ)的信息的來源指示相關(guān)聯(lián)的存儲(chǔ)器寄存器是干凈的還是臟的。如上文所述,跟蹤也可以在比寄存器更小的粒度上另外地或替換地執(zhí)行,例如,通過為寄存器中每一字節(jié)保存一個(gè)臟指示符來跟蹤。
      圖14示出允許檢測(cè)模塊跟蹤哪些寄存器為臟(例如,含有從輸入操作中接收到的(或?qū)С龅?數(shù)據(jù))的示例數(shù)據(jù)存儲(chǔ)1400。寄存器污染數(shù)據(jù)存儲(chǔ)1400可以包括一寄存器臟指示符向量。例如,如圖14所示,第一CPU寄存器可以如寄存器臟指示符1422的值所指示的那樣是干凈的,而第二CPU寄存器可以如寄存器臟指示符1424的值所指示的那樣是臟的。以這種方式,寄存器污染數(shù)據(jù)存儲(chǔ)1400是一向量位圖,每一CPU寄存器一個(gè)比特,如果相關(guān)聯(lián)頁上的相關(guān)聯(lián)CPU寄存器是臟的,則將該比特置位。
      盡管在上文描述了存儲(chǔ)器頁、存儲(chǔ)器位置和寄存器的示例,然而應(yīng)該理解,任何類型、部分和/或格式的存儲(chǔ)器都可以使用上文所述的動(dòng)態(tài)數(shù)據(jù)流分析來跟蹤。
      如上文所述,臟指示符可以不僅僅指示相關(guān)聯(lián)的存儲(chǔ)器部分是干凈的/臟的,而且也可以指示存儲(chǔ)在該存儲(chǔ)器部分中的信息的來源和/或?qū)С雎窂?。存?chǔ)在臟存儲(chǔ)器部分中的信息的來源、計(jì)算或?qū)С隹梢杂萌我缓线m的方式來指示,諸如一帶有可任選偏移量指示的輸入消息標(biāo)識(shí)符、包含用于計(jì)算臟存儲(chǔ)器位置的值的指令序列的數(shù)據(jù)流圖等。臟指示符還可以指示在指令中處理的值的原始來源。
      圖18示出了允許檢測(cè)模塊跟蹤哪些存儲(chǔ)器位置和/或寄存器為臟(例如,包含從輸入操作中接收到的或?qū)С龅臄?shù)據(jù))以及臟數(shù)據(jù)的來源的示例污染數(shù)據(jù)存儲(chǔ)1800。如圖18所示,臟指示符,諸如臟指示符值1812可以用任一合適的方式指示在該位置上相關(guān)聯(lián)的數(shù)據(jù)是干凈的,諸如空值等。臟指示符值1814可以指示相關(guān)位置處的相關(guān)聯(lián)數(shù)據(jù)是臟的,且可以指示該臟信息的來源。例如,如圖18所示,臟指示符值1814可以包含一數(shù)據(jù)流圖,指示存儲(chǔ)在相關(guān)聯(lián)存儲(chǔ)器位置上的數(shù)據(jù)是從來自非可信來源的臟輸入數(shù)據(jù)中導(dǎo)出的,且指示了存儲(chǔ)在相關(guān)聯(lián)存儲(chǔ)器部分的數(shù)據(jù)是如何從臟輸入數(shù)據(jù)中導(dǎo)出的。數(shù)據(jù)流圖可以指示輸入值、輸入數(shù)據(jù)的來源消息、輸入數(shù)據(jù)消息中的偏移量、應(yīng)用于輸入數(shù)據(jù)以導(dǎo)出目前所存儲(chǔ)的數(shù)據(jù)的指令等。如圖18所示,臟指示符值1814可以指示數(shù)據(jù)流圖1816。圖18中的數(shù)據(jù)流圖1816指示了輸入數(shù)據(jù)1818在消息標(biāo)識(shí)符為mess_1的消息中的偏移量為0。數(shù)據(jù)流圖可以指示應(yīng)用于輸入數(shù)據(jù)的操作和/或指令。如圖18所示,加法操作1820使用輸入值1818和以值2示出的值1824執(zhí)行。加法操作的結(jié)果可以使用乘法操作符1826與值1828相乘。以這種方式,該數(shù)據(jù)流圖示出了相關(guān)聯(lián)的存儲(chǔ)器位置是如何從臟數(shù)據(jù),例如輸入數(shù)據(jù)1818中導(dǎo)出的。
      存儲(chǔ)臟指示符的污染數(shù)據(jù)存儲(chǔ),諸如圖4中的頁污染數(shù)據(jù)存儲(chǔ)410和寄存器污染數(shù)據(jù)存儲(chǔ)420、圖5中的污染數(shù)據(jù)存儲(chǔ)510、圖14中的寄存器污染數(shù)據(jù)存儲(chǔ)1400、以及圖18中的污染數(shù)據(jù)存儲(chǔ)1800,可以被存儲(chǔ)在計(jì)算設(shè)備的存儲(chǔ)器中的任意一個(gè)或多個(gè)合適的數(shù)據(jù)存儲(chǔ)中。可以理解,任一合適格式的任一合適數(shù)據(jù)存儲(chǔ)可以用來存儲(chǔ)污染數(shù)據(jù)存儲(chǔ)信息和/或?qū)⑵鋫鬟f到檢測(cè)模塊,包括關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、非結(jié)構(gòu)化數(shù)據(jù)庫、常駐內(nèi)存(in-memory)數(shù)據(jù)庫、時(shí)序存儲(chǔ)器或其它數(shù)據(jù)存儲(chǔ)。存儲(chǔ)陣列可以使用平面文件系統(tǒng),諸如ASCII文本、二進(jìn)制文件、通信網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)、或其他文件系統(tǒng)來構(gòu)造。盡管對(duì)上述數(shù)據(jù)存儲(chǔ)有這些可能的實(shí)現(xiàn),然而此處使用的術(shù)語數(shù)據(jù)存儲(chǔ)和存儲(chǔ)陣列仍涉及以計(jì)算機(jī)可訪問的任何方式收集和存儲(chǔ)的任何數(shù)據(jù)。
      寄存器、頁、存儲(chǔ)器位置等的臟指示符可以在任何合適的時(shí)間生成。例如,只要執(zhí)行了輸入操作(例如,從網(wǎng)絡(luò)連接接收和/或處理數(shù)據(jù)),寫入結(jié)果數(shù)據(jù)的存儲(chǔ)器位置和/或寄存器就可以用一臟指示符來指示。參考圖3,只要執(zhí)行了[MoveData目標(biāo),源]格式的指令,檢測(cè)模塊340就可以為存儲(chǔ)器的相關(guān)聯(lián)部分生成一個(gè)或多個(gè)臟指示符。更具體地,每當(dāng)來自臟來源的數(shù)據(jù)被寫到目標(biāo)中,該目標(biāo)存儲(chǔ)器部分,例如,存儲(chǔ)器位置、寄存器等,可以被指示為臟的,否則,目標(biāo)存儲(chǔ)器部分可以被指示為干凈的。當(dāng)指令或系統(tǒng)調(diào)用將來自非可信外部來源的數(shù)據(jù)寫入目標(biāo)時(shí),目標(biāo)存儲(chǔ)器部分可以被指示為臟的。指令MoveData是一不存在于任一特定CPU上的廣義指令,且可以包含可以處理計(jì)算設(shè)備的存儲(chǔ)器中的數(shù)據(jù)的任何數(shù)量的指令和/或指令的組合。例如,MoveData指令可包含操作數(shù)為寄存器或存儲(chǔ)器的x86 MOV指令、目標(biāo)為由ESP寄存器所指向的存儲(chǔ)器位置且另一寄存器為操作數(shù)的PUSH操作。其他的示例可以包括裝載和存儲(chǔ)操作,諸如MOV、MOVS、PUSH、POP等。其他的示例可以包括算術(shù)和邏輯指令,諸如ADD、MUL、AND、XOR等。只要存儲(chǔ)器位置因?yàn)樗阈g(shù)或邏輯指令被執(zhí)行而變成臟的,臟指示符就可以包括導(dǎo)致該存儲(chǔ)器位置變臟的全部或部分指令序列。盡管上述示例是對(duì)x86 CPU專用的,然而本領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到,由其他計(jì)算設(shè)備執(zhí)行的其他操作和/或指令可以是適合的。
      為使用動(dòng)態(tài)數(shù)據(jù)流分析檢測(cè)蠕蟲的存在,數(shù)據(jù)可以在它被執(zhí)行和/或被裝載至指令指針之前被檢查。以這種方式,動(dòng)態(tài)數(shù)據(jù)流分析可以在蠕蟲獲得控制之前截取執(zhí)行。特別地,檢測(cè)可以在執(zhí)行控制被重定向到非法位置時(shí)發(fā)生。例如,在指令被執(zhí)行前,可檢查適當(dāng)?shù)奈廴緮?shù)據(jù)存儲(chǔ),以保證存儲(chǔ)要執(zhí)行的數(shù)據(jù)的存儲(chǔ)器部分的相關(guān)聯(lián)臟指示符是干凈的。如果該臟指示符指示存儲(chǔ)該數(shù)據(jù)的存儲(chǔ)器位置是臟的,則該指令的執(zhí)行可以被中止,且可檢測(cè)到蠕蟲的存在。類似地,在數(shù)據(jù)從存儲(chǔ)器部分被裝載至指令指針之前,可以檢查該數(shù)據(jù)的存儲(chǔ)器部分的相關(guān)聯(lián)污染數(shù)據(jù)存儲(chǔ)。如果相關(guān)聯(lián)存儲(chǔ)器部分的臟指示符指示該數(shù)據(jù)來自不可信來源或從其導(dǎo)出的,那么該指針值可以不被裝載至該指令指針,且可以檢測(cè)到蠕蟲的存在。為降低最后一項(xiàng)測(cè)試可能生成的假肯定,檢測(cè)模塊可以進(jìn)一步在將被裝載至該指令指針的值上沒有計(jì)算任何范圍比較(例如,檢查一個(gè)值是否比一給定的常數(shù)小)或邏輯操作(例如,與一給定的比特模式進(jìn)行AND操作)。檢測(cè)模塊也可以使用下述的易受攻擊性驗(yàn)證過程來保證蠕蟲的存在被正確地檢測(cè)到,而沒有假肯定。
      動(dòng)態(tài)數(shù)據(jù)流分析檢測(cè)是非常通用的,因?yàn)樗梢葬槍?duì)未知的攻擊目標(biāo)進(jìn)行保護(hù),而大多數(shù)目前可用的工具被設(shè)計(jì)成保護(hù)已知目標(biāo)。實(shí)現(xiàn)如上文所述的動(dòng)態(tài)數(shù)據(jù)流分析的檢測(cè)模塊可以不依賴于檢測(cè)任一特定數(shù)據(jù)結(jié)構(gòu)的蓋寫,而是可以跟蹤被執(zhí)行或被裝載至指令指針的數(shù)據(jù)的來源。例如,多種工具被設(shè)計(jì)成保護(hù)堆棧,然而攻擊者可以選擇以函數(shù)指針或設(shè)置跳轉(zhuǎn)(setjump)緩沖區(qū)為目標(biāo)來繞過該類型的保護(hù)。在任一情況下,攻擊者必須向正在運(yùn)行的程序輸入某些數(shù)據(jù),這意味著動(dòng)態(tài)數(shù)據(jù)流分析可以檢測(cè)到該攻擊。事實(shí)上,動(dòng)態(tài)數(shù)據(jù)流分析可以有能力檢測(cè)攻擊目標(biāo)十分難以識(shí)別的問題。
      例如,諸如圖17所示的源代碼清單1700等程序可以從網(wǎng)絡(luò)連接裝載數(shù)據(jù),并將該數(shù)據(jù)復(fù)制到第二緩沖區(qū)。該程序可以更改包含該緩沖區(qū)的頁上的頁保護(hù)許可,以允許執(zhí)行然后跳轉(zhuǎn)到該緩沖區(qū)。那些保護(hù)堆?;蛉魏纹渌绦驍?shù)據(jù)結(jié)構(gòu)的工具不會(huì)檢測(cè)到該問題,因?yàn)闆]有損壞程序的堆棧且也沒有緩沖區(qū)過速。如果該程序在頁上實(shí)施執(zhí)行許可的CPU上運(yùn)行,則該問題也不會(huì)被檢測(cè)到,因?yàn)樵摮绦蛎鞔_地更改了頁許可。然而,上文所述的動(dòng)態(tài)數(shù)據(jù)流分析可以檢測(cè)該問題,因?yàn)榫彌_區(qū)中的數(shù)據(jù)最初是通過網(wǎng)絡(luò)連接上的輸入操作進(jìn)入程序的地址空間中的。盡管該示例是稍有創(chuàng)造的,但它顯示了程序可能包含的那種任意錯(cuò)誤。
      可以理解,在某些情況下,由檢測(cè)模塊實(shí)現(xiàn)的動(dòng)態(tài)流分析可以不需訪問源代碼,而大多數(shù)保護(hù)工具需要訪問源代碼。該檢測(cè)機(jī)制可以用多種其他方式實(shí)現(xiàn)。它可以通過在跟蹤使用頁許可的存儲(chǔ)器訪問解釋的CPU仿真器上運(yùn)行程序、通過使用二進(jìn)制探測(cè)技術(shù)、或通過使用操作系統(tǒng)調(diào)試接口控制程序的執(zhí)行來實(shí)現(xiàn)。此外,在某些情況下,只要執(zhí)行環(huán)境有能力保留對(duì)每一被執(zhí)行指令的控制,上文所述的動(dòng)態(tài)數(shù)據(jù)流分析甚至可以檢測(cè)自修改代碼和動(dòng)態(tài)生成代碼(例如,在及時(shí)(just-in-time)編譯環(huán)境中生成的代碼等)的安全問題。如果程序運(yùn)行在解釋環(huán)境中,對(duì)每個(gè)指令保持控制是平凡的,但仍存在支持自修改代碼的二進(jìn)制蓋寫器。
      因?yàn)閯?dòng)態(tài)流分析不依賴于系統(tǒng)的已知易受攻擊性,和/或定義含有蠕蟲的消息的特征,上述的動(dòng)態(tài)流分析可以檢測(cè)已知和/或未知的蠕蟲。另外,實(shí)現(xiàn)動(dòng)態(tài)流分析的檢測(cè)模塊可以檢測(cè)慢速蠕蟲和/或偽裝成正常話務(wù)的蠕蟲。即使蠕蟲僅將它們自己寄生在正常的應(yīng)用程序話務(wù)中,使用動(dòng)態(tài)流分析的檢測(cè)模塊仍可以檢測(cè)到該蠕蟲。另外,實(shí)現(xiàn)動(dòng)態(tài)流分析的檢測(cè)模塊可以檢測(cè)多形和/或變形的蠕蟲。使用包括加密在內(nèi)的通用迷惑技術(shù)的蠕蟲變種引擎是廣泛可用的。因此,將來的蠕蟲可以廣泛地使用這些工具,從而提高了不使用動(dòng)態(tài)流分析來檢測(cè)的難度。
      實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)流分析的檢測(cè)模塊可以被擴(kuò)展以檢測(cè)通過蓋寫系統(tǒng)調(diào)用參數(shù)來獲取對(duì)目標(biāo)程序的控制的蠕蟲。這樣的蠕蟲可以,例如,蓋寫創(chuàng)建進(jìn)程的系統(tǒng)調(diào)用的參數(shù)并啟動(dòng)接受來自其它蠕蟲實(shí)例的命令的程序。檢測(cè)模塊可以通過核查系統(tǒng)調(diào)用正在使用臟的自變量,例如,存儲(chǔ)在臟存儲(chǔ)器位置的自變量,以及這些自變量未被系統(tǒng)所核查,即,在臟的自變量上計(jì)算的邏輯操作(例如,與特定值或值范圍的比較)不足以將它們限制到安全的值,來檢測(cè)這樣的攻擊。例如,檢測(cè)模塊可以斷定蠕蟲可以強(qiáng)迫目標(biāo)程序啟動(dòng)存儲(chǔ)在目標(biāo)系統(tǒng)上的任何程序。
      檢測(cè)模塊可以實(shí)現(xiàn)一種以上檢測(cè)機(jī)制,且網(wǎng)絡(luò)中一個(gè)或多個(gè)不同節(jié)點(diǎn)的每個(gè)檢測(cè)模塊可以實(shí)現(xiàn)不同的檢測(cè)技術(shù)。例如,檢測(cè)模塊可以實(shí)現(xiàn)上文結(jié)合一種或多種其他檢測(cè)機(jī)制描述的數(shù)據(jù)流分析檢測(cè)機(jī)制。每種檢測(cè)機(jī)制還可以有多種實(shí)現(xiàn)。以這種方式,可以達(dá)到檢測(cè)機(jī)制的類型和實(shí)現(xiàn)的多樣性。示例性附加和/或替換檢測(cè)機(jī)制可以包括不如動(dòng)態(tài)數(shù)據(jù)流分析通用但仍有能力檢測(cè)出重大攻擊的檢測(cè)機(jī)制。
      一種這樣的簡單技術(shù)是檢測(cè)每一RET指令將控制轉(zhuǎn)移至一可執(zhí)行頁。該檢測(cè)機(jī)制可能是有效的,因?yàn)槎喾N蠕蟲使用簡單的蓋寫堆棧和跳轉(zhuǎn)至蓋寫該堆棧的數(shù)據(jù)的技術(shù),該數(shù)據(jù)通常并不處于含有執(zhí)行許可的存儲(chǔ)器區(qū)域內(nèi)。該技術(shù)可以通過使用二進(jìn)制蓋寫探測(cè)目標(biāo)可執(zhí)行碼上的每一RET指令來實(shí)現(xiàn)。多種其他技術(shù)可以用來保護(hù)堆棧。
      另一示例性附加和/或替換檢測(cè)機(jī)制可以通過探測(cè)每個(gè)CALL和/或RET指令來保持陰影堆棧。陰影堆棧本質(zhì)上是正常堆棧的副本,但保持在不同的存儲(chǔ)器位置,所以該堆棧的完整性可以在每條RET處核查。
      可以理解,其他附加和/或替換檢測(cè)機(jī)制可以由檢測(cè)模塊實(shí)現(xiàn),以檢測(cè)蠕蟲、病毒等的存在或威脅,包括將接收到的信息標(biāo)識(shí)為包含已知的蠕蟲;將接收到的信息和所存儲(chǔ)的信息進(jìn)行比較以檢測(cè)被更改的和不必要的文件的存在、檢測(cè)配置改變、和/或驗(yàn)證諸如返回地址等參數(shù)值;將預(yù)期要存儲(chǔ)的信息和實(shí)際存儲(chǔ)的信息作比較以檢測(cè)緩沖器蓋寫;使用保護(hù)存儲(chǔ)段檢測(cè)緩沖區(qū)溢出;實(shí)現(xiàn)數(shù)組邊界核查以直接檢測(cè)緩沖區(qū)上溢和下溢;監(jiān)視程序的運(yùn)行時(shí)和/或通信模式并檢測(cè)與預(yù)期行為的任何背離;檢查輸入數(shù)據(jù)是否含有已知蠕蟲簽名,諸如串和/或消息長度;動(dòng)態(tài)數(shù)據(jù)流分析;等等。
      在操作中,檢測(cè)模塊,諸如圖3所示檢測(cè)模塊340,可以實(shí)現(xiàn)一種檢測(cè)蠕蟲的方法。圖6示出了檢測(cè)蠕蟲的示例性方法600??山邮?602)處理數(shù)據(jù)的指令,諸如由參考圖1所述的計(jì)算設(shè)備接收。如上文所述,處理數(shù)據(jù)的指令可以是移動(dòng)、組合、轉(zhuǎn)移、裝載數(shù)據(jù)等的指令。數(shù)據(jù)可以如所指令的來處理(604),諸如由計(jì)算設(shè)備的適當(dāng)?shù)谋镜貞?yīng)用程序、操作系統(tǒng)等來處理。對(duì)數(shù)據(jù)的處理可以包括在存儲(chǔ)器位置和/或寄存器中存儲(chǔ)(606)至少一部分?jǐn)?shù)據(jù)或處理過的部分?jǐn)?shù)據(jù)(例如,數(shù)據(jù)的導(dǎo)出)。存儲(chǔ)器可以是堆棧、緩沖區(qū)或計(jì)算設(shè)備的任何其他存儲(chǔ)器部分的一部分。存儲(chǔ)的數(shù)據(jù)的位置可以用任一合適的方式來確定(608)??蓹z查數(shù)據(jù)的來源以確定(610)存儲(chǔ)信息的存儲(chǔ)器部分是‘臟的’還是‘干凈的’。當(dāng)所存儲(chǔ)的信息是從不可信來源導(dǎo)出時(shí),存儲(chǔ)器部分是臟的。同樣地,如果數(shù)據(jù)是來自可信來源和/或從其它干凈數(shù)據(jù)導(dǎo)出的,數(shù)據(jù)可以被認(rèn)為是干凈的。
      如果數(shù)據(jù)是干凈的,那么可設(shè)置(612)臟指示符值以指示該數(shù)據(jù)是干凈的。如上文所述,指示干凈數(shù)據(jù)的臟指示符可以是任何合適的指示符,包括‘0’值、空值等。
      所確定的臟指示符值可以與存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器部分相關(guān)聯(lián)(614),諸如通過在污染數(shù)據(jù)存儲(chǔ),如圖3所示的污染數(shù)據(jù)存儲(chǔ)390中存儲(chǔ)臟指示符值來關(guān)聯(lián)。該污染數(shù)據(jù)存儲(chǔ)可以用默認(rèn)臟指示符值來初始化和/或填充。更具體地,所有存儲(chǔ)器部分可以最初被認(rèn)為是一指示臟存儲(chǔ)器部分的臟指示符和/或與該臟指示符相關(guān)聯(lián),,除非如果肯定地確定了干凈數(shù)據(jù)并且將其存儲(chǔ)在相關(guān)聯(lián)的存儲(chǔ)器部分中而特意地更改為干凈的。在另一示例中,所有的存儲(chǔ)器部分最初可以被認(rèn)為是一指示干凈存儲(chǔ)器部分的臟指示符和/或該臟指示符相關(guān)聯(lián),,除非如果肯定地確定了臟數(shù)據(jù)并且將其存儲(chǔ)在相關(guān)聯(lián)存儲(chǔ)器部分中而特意地更改為臟的??梢岳斫?,污染數(shù)據(jù)存儲(chǔ)可以被初始化為任何適當(dāng)?shù)闹怠4送?,如上文所述,污染?shù)據(jù)存儲(chǔ)可以包括一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ),一個(gè)或多個(gè)臟指示符與每個(gè)存儲(chǔ)器寄存器、存儲(chǔ)器頁、存儲(chǔ)器位置等相關(guān)聯(lián)。
      如果數(shù)據(jù)是臟的,那么可設(shè)置(612)臟指示符值以指示在該確定位置的數(shù)據(jù)是臟的。如上文所述,指示臟數(shù)據(jù)的臟指示符可以是任一合適的指示符,包括‘1’值或例如消息標(biāo)識(shí)符等與數(shù)據(jù)來源相關(guān)聯(lián)的唯一起源標(biāo)識(shí)符、向存儲(chǔ)的當(dāng)前數(shù)據(jù)提供輸入的數(shù)據(jù)的存儲(chǔ)器位置、與消息內(nèi)偏移量組合的消息標(biāo)識(shí)符、包括在計(jì)算所存儲(chǔ)的數(shù)據(jù)時(shí)所使用的所有或部分指令的數(shù)據(jù)流圖等。如果所存儲(chǔ)的數(shù)據(jù)是從存儲(chǔ)在另一臟存儲(chǔ)器部分的其它‘父’數(shù)據(jù)中導(dǎo)出的,則擁有與‘父’數(shù)據(jù)相同的起源指示符、父數(shù)據(jù)的存儲(chǔ)器位置、通過將所接收到的指令與指令操作數(shù)的數(shù)據(jù)流圖相組合所創(chuàng)建的數(shù)據(jù)流圖等。所確定的臟指示符值可以與所存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器部分(例如,位置或寄存器)相關(guān)聯(lián)(614),諸如通過在一適當(dāng)?shù)奈廴緮?shù)據(jù)存儲(chǔ)中存儲(chǔ)該臟指示符值來關(guān)聯(lián)。例如,如果一存儲(chǔ)器位置被確定為臟的,那么可設(shè)置一存儲(chǔ)器位置臟指示符以指示臟數(shù)據(jù),和/或可設(shè)置一頁臟指示符以指示存儲(chǔ)器的臟頁。
      在某些情況下,為檢測(cè)惡意利用系統(tǒng)調(diào)用自變量的蠕蟲的存在,本方法可以確定臟存儲(chǔ)器部分何時(shí)被用作系統(tǒng)調(diào)用的自變量。更具體地,可接收(616)執(zhí)行系統(tǒng)調(diào)用的指令可被接收(616)。可確定(618)作為系統(tǒng)調(diào)用自變量傳遞的數(shù)據(jù)的存儲(chǔ)器部分。可檢查(620)與所確定的存儲(chǔ)器部分相關(guān)聯(lián)的臟指示符。例如,如上文所述,臟指示符可以與每個(gè)存儲(chǔ)器部分相關(guān)聯(lián),以指示所存儲(chǔ)的信息是干凈的還是臟的。如果該臟指示符指示將被裝載的數(shù)據(jù)是‘干凈的’,那么,在某些情況下,可執(zhí)行(636)接收到的指令,例如,可裝載該信息。在某些情況下,為包括各種檢測(cè)機(jī)制,可以使用其他檢測(cè)技術(shù)進(jìn)一步檢查指令和/或數(shù)據(jù)以檢測(cè)(634)蠕蟲、病毒等的存在。
      在某些情況下,為檢測(cè)蠕蟲的存在,本方法可確定存儲(chǔ)在臟存儲(chǔ)器部分的數(shù)據(jù)何時(shí)以指示蠕蟲存在的方式來處理。更具體地,可接收(622)更改執(zhí)行流的指令??纱_定(624)存儲(chǔ)將被裝載至指令指針的值的存儲(chǔ)器部分??蓹z查(620)與所確定的存儲(chǔ)器部分相關(guān)聯(lián)的臟指示符。如果該臟指示符指示存儲(chǔ)將被裝載至指令指針的值的存儲(chǔ)器部分是臟的,那么可以按上文所述采取(625)適當(dāng)?shù)男袆?dòng)。如果該臟指示符指示存儲(chǔ)將被裝載的值的存儲(chǔ)器部分是‘干凈的’,那么,在某些情況下,可執(zhí)行(636)所接收的指令,并且該值被裝載。在某些情況下,如果將被裝載的值的存儲(chǔ)器部分被指示為干凈的,則由所裝載的值所指示的指令的位置可以被確定(628),并且可以檢查(630)該位置以確定存儲(chǔ)該指令的存儲(chǔ)器部分是干凈的還是臟的。如果存儲(chǔ)該指令的位置是臟的,則可以采取(626)適當(dāng)?shù)男袆?dòng)。如果該位置被指示為干凈的,則可以使用其他檢測(cè)技術(shù)進(jìn)一步檢查指令和/或數(shù)據(jù)以檢測(cè)(634)蠕蟲、病毒等的存在。如果臟指示符指示將被裝載的值的存儲(chǔ)器位置和由該值指示的指令是干凈的,那么該指令被執(zhí)行(636)。
      如果臟指示符指示將被處理的數(shù)據(jù)是‘臟的’,那么可以采取(626)適當(dāng)?shù)男袆?dòng)。如上文所述,響應(yīng)于蠕蟲的檢測(cè)的適當(dāng)行動(dòng)可以包括關(guān)閉易受攻擊的程序、關(guān)閉主機(jī)系統(tǒng)、生成并發(fā)送警報(bào)消息、為易受攻擊性生成補(bǔ)丁和/或過濾器等。
      自證明警報(bào)(“SCA”)在某些情況下,單個(gè)節(jié)點(diǎn)可以包括一檢測(cè)模塊來保護(hù)它自己。然而,對(duì)蠕蟲的檢測(cè)可能是計(jì)算密集型過程。因此,在某些情況下,諸如圖2所示的網(wǎng)絡(luò)等網(wǎng)絡(luò)的一個(gè)或多個(gè)節(jié)點(diǎn)可以檢測(cè)蠕蟲、易受攻擊性和/或攻擊,且可以警告網(wǎng)絡(luò)中的一個(gè)或多個(gè)節(jié)點(diǎn)。如果中心節(jié)點(diǎn)代表多個(gè)其它節(jié)點(diǎn)檢測(cè)到蠕蟲,則該檢測(cè)系統(tǒng)可以是以服務(wù)器為中心的。以這種方式,檢測(cè)蠕蟲的負(fù)載可以由一專用系統(tǒng)承擔(dān)??蛇x擇地,在網(wǎng)絡(luò)中的所有節(jié)點(diǎn)或其子集可以負(fù)責(zé)檢測(cè)易受攻擊性,則該檢測(cè)系統(tǒng)可以是以主機(jī)為中心的。網(wǎng)絡(luò)中檢測(cè)易受攻擊性的節(jié)點(diǎn)集合可以是固定的,或可以隨時(shí)間而改變并且可以在任何時(shí)間加入或離開該集合。服務(wù)器中心和主機(jī)中心檢測(cè)系統(tǒng)的組合可以在網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)之間實(shí)現(xiàn)各種檢測(cè)系統(tǒng),并將檢測(cè)結(jié)果互相傳遞和/或傳遞給在網(wǎng)絡(luò)中的其他節(jié)點(diǎn)。
      只要檢測(cè)機(jī)制檢測(cè)到蠕蟲攻擊,可以生成標(biāo)識(shí)軟件程序易受攻擊性和/或所識(shí)別的蠕蟲特征(例如,消息來源等)的警報(bào)。例如,該警報(bào)可以通過其特征作為輸入數(shù)據(jù)(以蠕蟲為中心)和/或通過可被蠕蟲惡意利用的軟件應(yīng)用程序的易受攻擊性(以易受攻擊性為中心)來識(shí)別蠕蟲。警報(bào)的生成可以是自動(dòng)或手動(dòng)的,且可以響應(yīng)于被檢測(cè)到的易受攻擊性和/或蠕蟲。警報(bào)可以用任一合適的方式來生成,諸如如圖3所示響應(yīng)于來自檢測(cè)模塊340的輸入通過警報(bào)模塊350生成。
      在某些情況下,可生成警報(bào),使得接收系統(tǒng)可以證明警報(bào)消息的起源和/或內(nèi)容的真實(shí)性。為證明警報(bào)的來源,該警報(bào)可以或可以不被數(shù)字地簽署,以將該警報(bào)標(biāo)識(shí)為源自一可信來源。為證明警報(bào)中指示的程序的易受攻擊性,該警報(bào)可以包含描述如何觸發(fā)該易受攻擊性等的事件和/或程序路徑的列表。在一示例中,自證明警報(bào)可以包含標(biāo)識(shí)和/或描述軟件易受攻擊性的機(jī)器可驗(yàn)證證據(jù)。以這種方式,該自證明警報(bào)可以包含允許接收者通過再現(xiàn)感染過程來高效和/或有效地核查在警報(bào)中的易受攻擊性聲稱的真實(shí)性的信息。自證明警報(bào)可以用任一合適的方式描述在軟件系統(tǒng)中的易受攻擊性,諸如通過文本描述、示出易受攻擊性的非確定性事件的完整和/或部分日志、攜帶由Necula等人所著“Safe Kernel Extensions withoutRuntime Checking”(發(fā)表在2ndSymp.On Operating System Design andImplementation,1996年十月,第229-243頁上,通過引用包含在此)所描述的代碼的證明的包括等來描述。例如,非確定性事件的日志可以包括接收到的數(shù)據(jù),并且可以示出直到被檢測(cè)到的攻擊瞬間之前的事件,例如,對(duì)存儲(chǔ)在臟存儲(chǔ)器部分的數(shù)據(jù)的執(zhí)行和/或使用來自臟存儲(chǔ)器部分的數(shù)據(jù)裝載程序計(jì)數(shù)器。
      對(duì)軟件易受攻擊性的描述可以用于自證明警報(bào),因?yàn)榻邮沼?jì)算設(shè)備可以驗(yàn)證所識(shí)別的軟件應(yīng)用程序以所指示的方式響應(yīng),這指示了軟件對(duì)于蠕蟲攻擊的易受攻擊性。以這種方式,警報(bào)可以是自證明的,因?yàn)樵摼瘓?bào)可以基于警報(bào)中所包含的信息以及接收節(jié)點(diǎn)已知的信息(例如,通過本地應(yīng)用程序響應(yīng)的驗(yàn)證)而被證明。以這種方式,自證明警報(bào)可以是以易受攻擊性為中心的,而不是以蠕蟲為中心的。
      程序的所檢測(cè)到的易受攻擊性可以在自證明警報(bào)中被描述為非確定性事件的列表。更具體地,易受攻擊的程序的執(zhí)行可以被建模為分段確定性過程。該執(zhí)行是間隔的序列,每一間隔以一非確定性事件(例如,消息的接收)開始,且其后跟隨一確定性事件的序列。在一間隔內(nèi)的執(zhí)行是確定性的,例如,程序的響應(yīng)完全由當(dāng)前狀態(tài)所確定。以這種方式,記錄所有非確定性事件可以允許執(zhí)行的重放,這樣可以示出程序的易受攻擊性。重放顯示所識(shí)別程序的易受攻擊行為的執(zhí)行可以允許節(jié)點(diǎn)核查該自證明警報(bào)的真實(shí)性。
      圖7示出了以易受攻擊性為中心的示例性自證明警報(bào)700。該自證明警報(bào)可以是任一合適的格式和/或依照任一合適的消息協(xié)議。自證明警報(bào)可以包括程序標(biāo)識(shí)符702和事件列表704,且可以可任選地包括易受攻擊性類型標(biāo)識(shí)符706、一個(gè)或多個(gè)驗(yàn)證提示708、和/或響應(yīng)指示符710。
      程序標(biāo)識(shí)符702可以標(biāo)識(shí)含有所檢測(cè)到的易受攻擊性的程序或應(yīng)用程序。程序標(biāo)識(shí)符702可以包括易受攻擊程序的任一合適的標(biāo)識(shí)符的任何一個(gè)或多個(gè),諸如商業(yè)名稱、預(yù)定名稱、版本號(hào)、廠商名稱等。
      事件列表704是執(zhí)行時(shí)會(huì)導(dǎo)致程序到達(dá)禁止?fàn)顟B(tài)的一個(gè)或多個(gè)非確定性事件的序列。重放該事件列表可以示出和/或指示程序的所檢測(cè)到的易受攻擊性。事件列表704中的事件序列可以用任一合適的方式生成。將非確定性事件記入日志的技術(shù)在容錯(cuò)文獻(xiàn)中有進(jìn)一步描述,這些文獻(xiàn)包括Dunlap等人所著“Revirtenablingintrusion analysis through virtual-machine logging and replay”,發(fā)表在Operating Syst.Design and Implementation,Boston,Massachusetts,2002年12月,和Elnozahy等人所著“A survey of rollback-recovery protocols inmessage passing systems”,發(fā)表在ACM Computing Surveys,第32卷,第3號(hào),2002年9月,第375-408頁,這兩篇文獻(xiàn)都通過引用包含在此。
      事件序列可以包括在檢測(cè)過程中記入日志的事件或從那些事件中導(dǎo)出,諸如在上文所述動(dòng)態(tài)流檢測(cè)技術(shù)過程中記入日志的事件。事件列表中的事件序列可以與攻擊期間實(shí)際紀(jì)入日志的事件匹配或不匹配,諸如圖3所示檢測(cè)模塊340所記入日志的事件。準(zhǔn)備自證明警報(bào)的節(jié)點(diǎn)可以用任一合適的方式修改記入日志的事件,包括去除不必要到達(dá)禁止?fàn)顟B(tài)的事件、用無害的值替代蠕蟲代碼部分等。事件列表704中的非確定性事件序列可以采用任何合適的格式和/或包含任何合適的指令或其它數(shù)據(jù)。例如,事件列表可以包括來自操作系統(tǒng)調(diào)用的結(jié)果列表和/或接收到的消息列表。因?yàn)槿湎x可以惡意利用不需與易受攻擊的程序長時(shí)間交互的那些易受攻擊性,因此非確定性事件的序列可以相當(dāng)短。更具體地,易受攻擊行為可以用少量數(shù)據(jù)來觸發(fā)。例如,對(duì)先前的多種蠕蟲,單個(gè)接收事件就足夠了。
      對(duì)于使用動(dòng)態(tài)流分析的蠕蟲檢測(cè),檢測(cè)模塊340在蠕蟲獲得控制之前截取執(zhí)行。具體地,對(duì)蠕蟲攻擊的檢測(cè)可以在執(zhí)行控制被重定向至一非法位置時(shí)發(fā)生,例如,來自臟存儲(chǔ)器位置的數(shù)據(jù)將要被執(zhí)行或裝載至指令指針時(shí)。為限制在警報(bào)中事件列表的大小,如果檢測(cè)沒有被干涉,可以搜索非確定性事件的日志,以找出含有存儲(chǔ)在臟存儲(chǔ)器部分中、將要被執(zhí)行或被裝載至程序計(jì)數(shù)器的數(shù)據(jù)的事件。在多種情況下,易受攻擊性可以由單個(gè)事件觸發(fā),并且自證明警報(bào)可以只包含作為該搜索結(jié)果的事件。在一示例中,可以在整個(gè)日志上執(zhí)行對(duì)臟數(shù)據(jù),例如非法地址的搜索。在另一示例中,上文參考檢測(cè)模塊的檢測(cè)機(jī)制所述的數(shù)據(jù)流分析可以用來避免搜索并減少錯(cuò)誤匹配的出現(xiàn)。因?yàn)閯?dòng)態(tài)流分析可以提供所有輸入事件的全數(shù)據(jù)流跟蹤,因此確定將要被執(zhí)行或裝載至程序計(jì)數(shù)器的臟數(shù)據(jù)的值的一個(gè)或多個(gè)確切輸入事件可以被確定。例如,數(shù)據(jù)流跟蹤可以標(biāo)識(shí)引入在蠕蟲攻擊中使用的信息的來自外部來源的特定消息、可惡意利用易受攻擊性的輸入事件、和/或輸入數(shù)據(jù)內(nèi)數(shù)據(jù)和/或指令的偏移量。
      為確定輸入事件,一輸入事件標(biāo)識(shí)符可以與存儲(chǔ)在臟存儲(chǔ)器部分的數(shù)據(jù)相關(guān)聯(lián),以指示確定臟數(shù)據(jù)的當(dāng)前值的輸入事件。輸入事件標(biāo)識(shí)符可以在臟指示符之外和/或包括在臟指示符內(nèi)。輸入事件標(biāo)識(shí)符可以是標(biāo)識(shí)從臟存儲(chǔ)器部分裝載數(shù)據(jù)的輸入事件和/或臟數(shù)據(jù)來源的任意何時(shí)的標(biāo)識(shí)符,諸如整數(shù)、文本串等。在一示例中,臟指示符包括標(biāo)識(shí)臟數(shù)據(jù)來源的輸入事件標(biāo)識(shí)符。更具體地,指示干凈的臟指示符可以是任何合適的值,諸如空值或0。然而,在某些情況下,并非使用諸如‘1’等整數(shù)來指示臟存儲(chǔ)器部分,而是指示臟存儲(chǔ)器部分的臟指示符可以是輸入事件指示符或其它來源指示符。可選擇地,臟指示符可以包括諸如圖18所示的數(shù)據(jù)流圖,以確定確定存儲(chǔ)在臟存儲(chǔ)器部分的當(dāng)前值的輸入事件和這些事件中的字節(jié)范圍。當(dāng)數(shù)據(jù)流分析用信號(hào)通知易受攻擊性時(shí),含有將要被執(zhí)行或裝載至程序計(jì)數(shù)器的臟數(shù)據(jù)的數(shù)據(jù)流圖中的標(biāo)識(shí)符的事件和在執(zhí)行日志中最后一個(gè)非確定性事件可以用來形成警報(bào)中的事件列表。
      除減少重放易受攻擊執(zhí)行所需的非確定性事件序列大小以外或作為其替換,執(zhí)行可以在生成警報(bào)事件列表時(shí)用越來越大的事件日志后綴(例如,從后向前通過日志)來重放,且可對(duì)每次迭代核查錯(cuò)誤狀態(tài)的存在。以這種方式,事件列表可以從導(dǎo)致易受攻擊性檢測(cè)的原始事件中減少。對(duì)目前大多數(shù)的蠕蟲,該策略可能是有效的,因?yàn)橥ㄟ^網(wǎng)絡(luò)連接接收到的最后幾個(gè)分組可能觸發(fā)易受攻擊性。
      易受攻擊性類型標(biāo)識(shí)符706可以標(biāo)識(shí)和/或描述存在且可能在指示的程序中被惡意利用的程序易受攻擊性或錯(cuò)誤狀態(tài)的類型。易受攻擊性類型標(biāo)識(shí)符可以是任何合適的標(biāo)識(shí)符,諸如字母數(shù)字文本串等,它指示所指出程序的允許不被接受的錯(cuò)誤狀態(tài)的預(yù)定易受攻擊性。對(duì)錯(cuò)誤狀態(tài)的描述和/或可接受性可在警報(bào)的生成者和接收者中意見一致且被預(yù)先確定。此外,自證明警報(bào)的接收節(jié)點(diǎn)可以認(rèn)同執(zhí)行的哪些狀態(tài)和結(jié)果是易受攻擊性的表達(dá)。關(guān)于易受攻擊性類型的一致認(rèn)定可以是事先的,例如預(yù)先確定的,或動(dòng)態(tài)的,例如,在蠕蟲檢測(cè)和/或警報(bào)接收時(shí)確定。由易受攻擊性類型標(biāo)識(shí)符所標(biāo)識(shí)的易受攻擊性類型可以是程序或應(yīng)用程序的任何合適的漏洞??纱嬖诙喾N不同類型的狀態(tài),它們可事先被一致同意為易受攻擊性的表達(dá)。易受攻擊性類型的一示例可以是任意執(zhí)行控制(“AEC”)。AEC警報(bào)標(biāo)識(shí)了允許蠕蟲將執(zhí)行重定向至程序地址空間中的任意代碼片段的易受攻擊性。它們描述了如何調(diào)用其地址在輸入中提供給易受攻擊程序的代碼片段。易受攻擊性類型的另一示例可以是任意代碼執(zhí)行(ACE)。ACE警報(bào)描述了代碼注入易受攻擊性。它們描述了如何執(zhí)行在輸入中提供給易受攻擊程序的任意代碼片段。易受攻擊性類型的另一示例可以是任意函數(shù)自變量(AFA)。AFA警報(bào)標(biāo)識(shí)了數(shù)據(jù)諸如易受攻擊性,它允許蠕蟲更改關(guān)鍵函數(shù)的自變量值,諸如更改可執(zhí)行碼的名稱以在創(chuàng)建進(jìn)程的系統(tǒng)調(diào)用中運(yùn)行。它們描述了如何調(diào)用帶有在輸入中提供給易受攻擊程序的自變量值的指定關(guān)鍵函數(shù)。
      驗(yàn)證提示708可以包括便于在重放所指示的事件列表后核查所指示的狀態(tài)或易受攻擊性是否為真的任何合適的信息。
      響應(yīng)指示符710可以包括便于對(duì)程序易受攻擊性的恰當(dāng)響應(yīng)的任何合適的信息。例如,響應(yīng)指示符可以指示一補(bǔ)丁可以解決易受攻擊性、可以生成一過濾器來檢測(cè)對(duì)該易受攻擊性的潛在惡意利用、用于檢測(cè)含有所標(biāo)識(shí)蠕蟲的消息的接收的過濾器、實(shí)現(xiàn)補(bǔ)丁/過濾器的實(shí)際代碼等。
      在一示例中,易受攻擊性中心自證明警報(bào)可以指示一程序含有任意執(zhí)行控制(AEC)易受攻擊性。因?yàn)槿湎x攻擊可以是基于任意地更改易受攻擊程序的執(zhí)行流的能力,因此該易受攻擊性可以用一AEC易受攻擊性類型指示符來指示。因?yàn)樘峁┩ㄟ^向程序發(fā)送消息來將程序計(jì)數(shù)器重定位至任意位置的能力是少見且危險(xiǎn)的,因此主機(jī)可以認(rèn)同該狀態(tài)表達(dá)了易受攻擊性。對(duì)這種類型的易受攻擊性,驗(yàn)證提示可以指出程序計(jì)數(shù)器(例如,x86 CPU上的EIP)將用任意值來裝載,且可以指出在非確定性事件列表中的哪里是將被裝載至程序計(jì)數(shù)器的值。例如,如果該非確定性事件列表是接收到的消息的列表,則驗(yàn)證提示可以指出在哪條消息中和在哪個(gè)偏移量處是將被裝載至程序計(jì)數(shù)器的值。消息和偏移量可以使用上述技術(shù)來確定。
      在另一示例中,易受攻擊性中心自證明警報(bào)可以指示一程序含有任意代碼執(zhí)行(ACE)易受攻擊性。因?yàn)槿湎x攻擊是基于將代碼注入易受攻擊程序的能力的,因此該易受攻擊性可以用一ACE易受攻擊性類型指示符來指示。因?yàn)樘峁┩ㄟ^向程序發(fā)送消息來向程序注入新代碼的能力是少見且危險(xiǎn)的,因此主機(jī)可以認(rèn)同該狀態(tài)表達(dá)了易受攻擊性。對(duì)這種類型的易受攻擊性,驗(yàn)證提示可以指出新代碼會(huì)被注入且被執(zhí)行,且可以指出非確定性事件列表中的哪里是將被執(zhí)行的代碼。例如,如果非確定性事件列表是接收到的消息的列表,則驗(yàn)證提示可以指出在哪條消息中和在哪個(gè)偏移量處是將被注入和執(zhí)行的代碼。消息和偏移量可以使用上述技術(shù)來確定。
      在另一示例中,易受攻擊性中心自證明警報(bào)可以指示一程序含有任意函數(shù)自變量(AFA)漏洞。因?yàn)槿湎x攻擊是基于注入要用作函數(shù)自變量的值的能力的,因此該易受攻擊性可以用一AFA易受攻擊性類型指示符來指示。因?yàn)樘峁┩ㄟ^向程序發(fā)送消息來向程序所使用的系統(tǒng)調(diào)用注入任意新自變量的能力是少見且危險(xiǎn)的,因此主機(jī)可以認(rèn)同該狀態(tài)表達(dá)了易受攻擊性。對(duì)這種類型的易受攻擊性,驗(yàn)證提示可以指出一任意函數(shù)自變量被注入且被執(zhí)行,且可以指出在非確定性事件列表中的哪里是將被注入的自變量。例如,如果該非確定性事件列表是接收到的消息的列表,則驗(yàn)證提示可以指出在哪條消息中和在哪個(gè)偏移量處是將被注入的自變量。消息和偏移量可以使用上述技術(shù)來確定。
      自證明警報(bào)的一個(gè)替換形式可以包括該程序是易受攻擊的證據(jù),它類似于Necula等人所著的“Safe Kernel Extensions without Runtime Checking”中的帶證據(jù)的代碼,發(fā)表在2ndSymp.Operation Systems Design and Implementation,1996年10月,第229-243頁。在最簡單的形式中,該證據(jù)可以包括對(duì)導(dǎo)致禁止?fàn)顟B(tài)的執(zhí)行路徑的描述,諸如以指令序列的形式。該種形式的警報(bào)同先前所述的不同,因?yàn)樗鼣y帶程序指令序列,而非只含有非確定性事件列表,且它也可以帶有邏輯公式以促進(jìn)下述的驗(yàn)證機(jī)制。
      生成警報(bào)的節(jié)點(diǎn)可以向至少一個(gè)其它節(jié)點(diǎn)發(fā)送警報(bào),以向它通知所檢測(cè)到的蠕蟲或易受攻擊性。警報(bào)的分發(fā)可以通過分發(fā)模塊370響應(yīng)于警報(bào)模塊350來確定,如圖3所示。節(jié)點(diǎn)可以通過通信介質(zhì)以任何合適的消息格式或協(xié)議發(fā)送警報(bào)。警報(bào)可以分發(fā)給與生成警報(bào)的節(jié)點(diǎn)通信的任何合適的節(jié)點(diǎn)。當(dāng)一節(jié)點(diǎn)接收到警報(bào)時(shí),該節(jié)點(diǎn)也可以將該警報(bào)分發(fā)給與其通信的任何合適的節(jié)點(diǎn)。例如,警報(bào)可以依照預(yù)先確定的警報(bào)地址列表發(fā)送給所有節(jié)點(diǎn)、發(fā)送給近期與生成警報(bào)的節(jié)點(diǎn)聯(lián)系的所有節(jié)點(diǎn)、或依照任何其他合適的分發(fā)方案。一種分發(fā)方案將在下文更詳細(xì)論述。
      證明自證明警報(bào)諸如圖7所示的自證明警報(bào)700的自證明警報(bào),可以由接收該警報(bào)的節(jié)點(diǎn)自證明。例如,接收節(jié)點(diǎn)320的警報(bào)驗(yàn)證模塊360,如圖3所示,可以證明接收到的警報(bào)330。在一示例中,接收節(jié)點(diǎn)可以對(duì)該警報(bào)進(jìn)行語法分析以檢索程序標(biāo)識(shí)符和事件列表以及諸如易受攻擊性指示符和一個(gè)或多個(gè)驗(yàn)證提示等任何其他參數(shù)。接收節(jié)點(diǎn)可以重放由所指示的程序中的事件列表定義的執(zhí)行??梢允褂萌魏魏线m的技術(shù)以重放該事件列表,包括在某種類型的沙箱(sandbox)環(huán)境中重放程序中的事件。重放事件列表的結(jié)果可以由接收節(jié)點(diǎn)檢查來驗(yàn)證程序易受攻擊性,結(jié)果可以用所提供的易受攻擊性類型標(biāo)識(shí)符和/或驗(yàn)證提示來擴(kuò)充,以確定指示的錯(cuò)誤或易受攻擊性狀態(tài)是否存在。如果否,則該警報(bào)沒有被證明,且可以采取適當(dāng)行動(dòng),諸如丟棄消息、向其它節(jié)點(diǎn)發(fā)送標(biāo)識(shí)錯(cuò)誤警報(bào)的警報(bào)等。
      事件列表可以使用一階邏輯來證明,而不是逐字逐句地執(zhí)行事件列表。例如,包含在自證明警報(bào)中的證據(jù)可以用一種類似于攜帶證據(jù)的代碼的方式來驗(yàn)證。然而,不是顯示程序的所有執(zhí)行涉及安全條件,而是證明自證明警報(bào)可以顯示程序的一特殊執(zhí)行展示了易受攻擊性。不是考慮完整的程序,而是自證明警報(bào)的證明可以集中在一條或多條所標(biāo)識(shí)的執(zhí)行路徑上,例如,事件列表中由非確定性事件序列定義的路徑。在一種簡單的形式中,自證明警報(bào)中的證據(jù)可以包括在由事件列表定義的路徑中執(zhí)行的指令列表。以這種方式,一邏輯驗(yàn)證可以為易受攻擊的程序中所標(biāo)識(shí)的路徑生成一安全條件,并且顯示當(dāng)程序接收到由自證明警報(bào)提供的事件列表中的事件時(shí)該安全條件不成立。
      例如,在上述AEC自證明警報(bào)中,所指示的程序的易受攻擊執(zhí)行路徑可以由單個(gè)消息的接收觸發(fā),且該自證明警報(bào)可以包括路徑中的指令列表。為證明該警報(bào),可以檢查該指令列表,諸如通過使用程序文本來確定安全條件并驗(yàn)證事件列表中的事件違反了該條件??梢詮某绦蛑噶钪猩稍搱?zhí)行路徑的邏輯安全條件。為獲得一執(zhí)行路徑的安全條件,可以定義一模擬安全程序的執(zhí)行的抽象機(jī)器。該抽象機(jī)器的指令可以與由易受攻擊程序生成的真實(shí)CPU指令類似。
      圖9示出了x86 CPU指令的一子集的示例抽象機(jī)器900。在圖9中,∏表示CPU指令的向量(例如,自證明警報(bào)中的指令列表);pc表示程序計(jì)數(shù)器;∏pc表示當(dāng)前指令;ρ表示機(jī)器寄存器和存儲(chǔ)器的狀態(tài);ρ[ri]是狀態(tài)ρ中寄存器ri的值(可以被縮寫為ri);rm表示指示存儲(chǔ)器狀態(tài)的特殊寄存器;ρ[rd←rs]表示通過用值rs代替rd從ρ獲得的新狀態(tài);sel(rm,n)表示存儲(chǔ)器地址n的內(nèi)容;upd(rm,rd,rs)表示從將寄存器rs寫入寄存器rd得到的新存儲(chǔ)器狀態(tài);以及ZF表示零標(biāo)志(例如,存儲(chǔ)器中的一個(gè)比特)。
      當(dāng)執(zhí)行返回指令(RET)時(shí),示例抽象機(jī)器900核查由堆棧指針寄存器(ESP)指向的存儲(chǔ)器位置是否含有蠕蟲。從諸如圖9所示的抽象機(jī)器的定義中,可以獲得一組規(guī)則來為程序機(jī)械地生成安全條件。圖10示出了對(duì)應(yīng)于圖9所示的抽象機(jī)器的一組示例規(guī)則1000。規(guī)則1000根據(jù)安全條件參數(shù)SCpc+11004指定了安全條件參數(shù)SCpc1002。以這種方式,程序的安全條件可以通過從最后一條指令開始,處理每條在前的指令直到開始指令,同時(shí)核查指令列表是否代表給定程序文本時(shí)的有效執(zhí)行而獲得。更具體地,可以檢查最后一條指令、然后可以檢查最后兩條指令、依此類推。
      可以定義一前置條件。更具體地,該前置條件可以反映程序在易受攻擊執(zhí)行路徑開始時(shí)的初始狀態(tài),諸如寄存器和/或存儲(chǔ)器的狀態(tài)。可以定義一易受攻擊性謂詞。例如,易受攻擊性謂詞可以被定義為前置條件﹁安全條件。易受攻擊性謂詞然后可以根據(jù)一階謂詞演算的規(guī)則來證明。
      例如,由一自證明警報(bào)的事件列表提供的易受攻擊指令序列可以被定義為如圖11所示的指令1100。使用圖10所示的規(guī)則1000,安全條件SafetyCondition可以被定義為(ECX=10﹁Worm(sel(rm,ESP)))∧(ECX≠10﹁Worm(sel(rm,1234))(1)以這種方式,在由警報(bào)的事件列表1100標(biāo)識(shí)的執(zhí)行路徑的開始處,ECX寄存器的值不等于10,且存儲(chǔ)器位置1234剛被一網(wǎng)絡(luò)輸入操作寫入(且因此被認(rèn)為是‘臟的’且可能含有蠕蟲)。由上述等式(1)給出的安全條件,前置條件可以被定義為(ECX≠10∧ Worm(sel(rm,1234))(2)從等式(1)的安全條件和等式(2)的前置條件中,可以生成并證實(shí)一易受攻擊性謂詞。證實(shí)該易受攻擊性可以驗(yàn)證在事件列表中指示的易受攻擊性的存在,這可以證明警報(bào)。應(yīng)該理解,存儲(chǔ)器位置1234不必含有蠕蟲。例如,外部輸入操作可能任意地更改程序執(zhí)行的實(shí)時(shí)可以意味著該程序是易受攻擊的,即使還沒有對(duì)該易受攻擊性進(jìn)行惡意利用。
      圖16示出了生成自證明警報(bào)的示例性方法1600,圖8示出了證明自證明警報(bào)的示例性方法800。參考圖16,程序易受攻擊性可以由諸如檢測(cè)模塊340檢測(cè)(802)??梢源_定(804)該易受攻擊程序的程序標(biāo)識(shí)符??梢源_定(806)易受攻擊性類型,且選擇適當(dāng)?shù)囊资芄粜灾甘痉?梢源_定(808)提供易受攻擊性的機(jī)器可驗(yàn)證證據(jù)的事件列表808。如上文所述,該事件列表可以從實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)流分析的檢測(cè)過程中記入日志的事件導(dǎo)出。該事件列表也可以從檢測(cè)過程中記入日志的事件中消減或減少,以確定示出所指示的易受攻擊性、從一數(shù)據(jù)流圖導(dǎo)出、被修改以用無害的值來代替各部分等的最小的或精簡的事件集合。一個(gè)或多個(gè)驗(yàn)證提示可以基于所確定的事件列表和/或易受攻擊性指示符來確定(810)。在某些情況下,可確定(812)一響應(yīng)指示符,它可以包括關(guān)于對(duì)蠕蟲的潛在解決方法的提示,例如,補(bǔ)丁和/或過濾器、實(shí)現(xiàn)補(bǔ)丁和/或過濾器的實(shí)際代碼、蠕蟲簽名等。自證明消息可以依照任何合適的協(xié)議以任何合適的格式形成(814)。警報(bào)可以諸如通過通信介質(zhì)發(fā)送(816)給網(wǎng)絡(luò)中的另一節(jié)點(diǎn)。如上文所述,分發(fā)模塊370可以用來確定自證明警報(bào)的接收節(jié)點(diǎn)。
      參考圖8,可由接收節(jié)點(diǎn)諸如通過通信介質(zhì)接收(850)一自證明警報(bào)。該警報(bào)可以諸如由途3的警報(bào)驗(yàn)證模塊360進(jìn)行語法分析(852)以確定程序標(biāo)識(shí)符和事件列表。程序標(biāo)識(shí)符可以與接收節(jié)點(diǎn)上存在的程序進(jìn)行比較(854)。如果程序標(biāo)識(shí)符不存在于接收節(jié)點(diǎn)上,那么可以采取(856)恰當(dāng)?shù)男袆?dòng)。例如,恰當(dāng)?shù)男袆?dòng)可以包括丟棄該警報(bào)和/或?qū)⒃摼瘓?bào)轉(zhuǎn)發(fā)至另一節(jié)點(diǎn)以進(jìn)一步在通信網(wǎng)絡(luò)中分發(fā)該警報(bào)。
      如果該程序標(biāo)識(shí)符指示了接收節(jié)點(diǎn)的程序或應(yīng)用程序,那么該接收節(jié)點(diǎn),諸如通過圖3所示的警報(bào)驗(yàn)證模塊360,可以裝載(858)所指示的程序。在某些情況下,該程序可以被裝載至一被掛起的進(jìn)程。在某些情況下,該程序可以被裝載至一‘沙箱’環(huán)境,它可以限制行動(dòng)、互相聯(lián)系、和/或所指示的易受攻擊性的其它惡意副作用。虛擬機(jī)器可提供其中可以發(fā)生警報(bào)驗(yàn)證的沙箱環(huán)境。其他沙箱環(huán)境可以沉默地丟棄正在運(yùn)行的程序的所有輸出以限制副作用。在某些情況下,接收節(jié)點(diǎn)可以指令另一計(jì)算設(shè)備,諸如一孤立和/或測(cè)試設(shè)備,裝載所指示的程序和/或證明自證明警報(bào)。
      一驗(yàn)證函數(shù)可以被裝載(860)至該掛起進(jìn)程的地址空間。驗(yàn)證函數(shù)可以在該驗(yàn)證函數(shù)由所指示的程序調(diào)用時(shí)返回一成功指示符,或該函數(shù)可以調(diào)用一響應(yīng)模塊。成功指示符可以是指示驗(yàn)證函數(shù)的執(zhí)行的任何合適的指示符,包括視覺或聽覺信號(hào)、使用指定值退出程序、向網(wǎng)絡(luò)接口寫入值、發(fā)信號(hào)通知同步對(duì)象等。驗(yàn)證函數(shù)的結(jié)構(gòu)可以依賴于由事件列表所示的易受攻擊性的類型。以這種方式,可從自證明警報(bào)中語法分析易受攻擊性指示符和/或驗(yàn)證提示,并用來選擇和/或生成適當(dāng)?shù)尿?yàn)證函數(shù)。
      事件序列可以使用所裝載的程序來重放(862)。因?yàn)槭录斜肀粓?zhí)行,因此可調(diào)用驗(yàn)證函數(shù),它可以指示所指示的程序中的易受攻擊性的存在。例如,對(duì)于指示AEC的易受攻擊性指示符,自證明警報(bào)中的提示可以指示將被裝載至程序計(jì)數(shù)器的地址的事件和/或該事件中的偏移量。其中裝載了驗(yàn)證函數(shù)的地址可以被放置在該事件和/或偏移量處。以這種方式,如果在事件列表的重放過程中執(zhí)行(864)了驗(yàn)證函數(shù),那么證明了該易受攻擊性,且該警報(bào)可以被認(rèn)為是已證明的。以這種方式,接收節(jié)點(diǎn)可以響應(yīng)于已證明的警報(bào)采取(866)恰當(dāng)?shù)男袆?dòng),諸如終止該易受攻擊的程序和/或?qū)崿F(xiàn)一合適的補(bǔ)丁和/或過濾器以解決該易受攻擊性。如果該警報(bào)沒有被證明,例如,驗(yàn)證函數(shù)沒有被執(zhí)行,那么可以采取(856)恰當(dāng)?shù)男袆?dòng),諸如丟棄消息和/或向其它節(jié)點(diǎn)通知該無效的警報(bào)。
      在另一示例中,對(duì)于指示ACE警報(bào)的易受攻擊性指示符,自證明警報(bào)中的提示可以指示將由目標(biāo)程序注入和執(zhí)行的代碼的事件和/或該事件中的偏移量。指令序列“call verification(調(diào)用驗(yàn)證)”,即,指令CPU調(diào)用驗(yàn)證函數(shù)的目標(biāo)CPU指令序列,可以被放置在該事件和/或偏移量處。以這種方式,如果在事件列表的重放過程中執(zhí)行(864)了驗(yàn)證函數(shù),那么證明了該易受攻擊性,且該警報(bào)可以被認(rèn)為是已證明的。以這種方式,接收節(jié)點(diǎn)可以響應(yīng)于已證明的警報(bào)采取(866)恰當(dāng)?shù)男袆?dòng),諸如終止該易受攻擊的程序和/或?qū)崿F(xiàn)一合適的補(bǔ)丁和/或過濾器以解決該易受攻擊性。如果該警報(bào)沒有被證明,例如,驗(yàn)證函數(shù)沒有被執(zhí)行,那么可以采取(856)恰當(dāng)?shù)男袆?dòng),諸如丟棄消息和/或向其它節(jié)點(diǎn)通知該無效警報(bào)。
      在另一示例中,對(duì)于指示AFA警報(bào)的易受攻擊性指示符,自證明警報(bào)中的提示可以指示將會(huì)被傳遞給目標(biāo)程序的函數(shù)的任意自變量的事件和/或該事件中的偏移量。任意自變量可以被放置在該事件和/或偏移量處,且驗(yàn)證器可以用一包裝器來探測(cè)該AFA警報(bào)中所標(biāo)識(shí)的關(guān)鍵函數(shù),該包裝器在非確定性事件重放過程中對(duì)照用于函數(shù)調(diào)用的實(shí)際自變量值核查所提供的任意自變量值。如果它們匹配,則該包裝器調(diào)用驗(yàn)證函數(shù)。以這種方式,如果在事件列表重放過程中執(zhí)行(864)了驗(yàn)證函數(shù),那么證明了該易受攻擊性,且該警報(bào)可以被認(rèn)為是已證明的。以這種方式,接收節(jié)點(diǎn)可以響應(yīng)于已證明警報(bào)采取(866)恰當(dāng)?shù)男袆?dòng),諸如終止該易受攻擊的程序和/或?qū)崿F(xiàn)一合適的補(bǔ)丁和/或過濾器以解決該易受攻擊性。如果該警報(bào)沒有被證明,例如,驗(yàn)證函數(shù)沒有被執(zhí)行,那么可以采取(856)恰當(dāng)?shù)男袆?dòng),諸如丟棄消息和/或向其它節(jié)點(diǎn)通知該無效警報(bào)。
      不是逐字逐句地執(zhí)行上文對(duì)于事件列表所描述的事件列表,該事件列表可以使用一階邏輯來證明。參考圖8所示的方法,可以從程序指令中對(duì)由事件列表所指示的執(zhí)行路徑生成(872)一邏輯安全條件。該安全條件可以用任何合適的方式生成,諸如通過定義一模擬安全程序的執(zhí)行的抽象機(jī)器??梢远x(874)一反映在易受攻擊執(zhí)行路徑開始處的程序的初始狀態(tài)的前置條件??梢远x(876)一易受攻擊謂詞,它然后可以根據(jù)一階邏輯演算規(guī)則來證實(shí)(878)。如果該謂詞被證實(shí),則可以響應(yīng)于已證明的警報(bào)采取(866)恰當(dāng)?shù)男袆?dòng),諸如終止該易受攻擊的程序和/或?qū)崿F(xiàn)一合適的補(bǔ)丁和/或過濾器以解決該易受攻擊性。如果該謂詞沒有被證實(shí),那么可以采取(856)恰當(dāng)?shù)男袆?dòng),諸如丟棄消息和/或向其它節(jié)點(diǎn)通知該無效的警報(bào)。
      響應(yīng)如果執(zhí)行結(jié)果確實(shí)標(biāo)識(shí)了所指示的易受攻擊性,那么可以響應(yīng)于程序中已證明的易受攻擊性采取恰當(dāng)?shù)男袆?dòng)。計(jì)算設(shè)備的響應(yīng)可以用任何合適的方式手動(dòng)和/或自動(dòng)地執(zhí)行,包括由系統(tǒng)管理員、如圖3所示的響應(yīng)模塊380等手動(dòng)指示的響應(yīng)。例如,程序可以脫機(jī)地獲得,和/或可以采取其它防范措施。該防范措施可以包括基于事件列表和/或易受攻擊性類型指示符和/或驗(yàn)證提示來生成一補(bǔ)丁和/或過濾器。以這種方式,自證明警報(bào)內(nèi)的信息可以用來手動(dòng)和/或自動(dòng)地生成補(bǔ)丁和/或過濾器來防止感染,而無需終止應(yīng)用程序。此外,生成的補(bǔ)丁/過濾器可以包含在該自證明警報(bào)中,以供接收節(jié)點(diǎn)使用,諸如在圖7所示的響應(yīng)指示符710中。
      自證明警報(bào)的事件列表和/或驗(yàn)證提示可以用來自動(dòng)地生成對(duì)易受攻擊的程序的二進(jìn)制修改(例如,補(bǔ)丁),它可修補(bǔ)該易受攻擊性。
      例如,如果感染涉及對(duì)數(shù)據(jù)結(jié)構(gòu)的蓋寫,則可以生成執(zhí)行防止蓋寫的額外核查的代碼。例如,如果蓋寫是歸因于緩沖區(qū)上溢或下溢,則可以生成數(shù)組邊界核查代碼來防止蓋寫。所生成的代碼而后可以應(yīng)用于該易受攻擊的程序。在另一示例中,可以通過保持被該寫數(shù)據(jù)結(jié)構(gòu)的一單獨(dú)副本、使用原始數(shù)據(jù)結(jié)構(gòu)、以及在對(duì)執(zhí)行前的原始數(shù)據(jù)結(jié)構(gòu)的每次訪問前將該副本與原始數(shù)據(jù)結(jié)構(gòu)進(jìn)行比較,來生成一動(dòng)態(tài)補(bǔ)丁。在另一示例中,循環(huán)中的邊界條件可以用另一條件(例如,用確保循環(huán)體的執(zhí)行次數(shù)更低的條件)來替代。
      可以基于攜帶蠕蟲的源消息中足夠獨(dú)特的字母數(shù)字串和/或含有特定長度的消息來生成一蠕蟲專用過濾器。
      可以聲稱可檢測(cè)多形蠕蟲的易受攻擊性專用過濾器。在一示例中,一過濾器可以被安裝在網(wǎng)絡(luò)堆棧之上。易受攻擊性專用過濾器可以使用應(yīng)用程序狀態(tài)來確定何時(shí)丟棄傳入的話務(wù)。更具體地,可以通過分析自證明警報(bào)的事件列表中所列出的執(zhí)行路徑,并核查傳入消息中的哪些字節(jié)確定了導(dǎo)致感染的執(zhí)行路徑以及在該執(zhí)行路徑上測(cè)試了那些字節(jié)上的哪些條件,來生成過濾程序的一般條件。這些易受攻擊性專用過濾器能夠使用一類似于動(dòng)態(tài)流分析的機(jī)制來生成,直到寫入了將會(huì)由蠕蟲裝載至程序計(jì)數(shù)器或執(zhí)行的臟數(shù)據(jù)。
      在一示例中,使用動(dòng)態(tài)數(shù)據(jù)流分析生成易受攻擊性中心過濾器的響應(yīng)模塊可以為諸如存儲(chǔ)器位置和/或寄存器等每個(gè)臟存儲(chǔ)器部分維護(hù)一數(shù)據(jù)流圖。響應(yīng)模塊還可以為每個(gè)CPU標(biāo)志保持?jǐn)?shù)據(jù)流圖。每張數(shù)據(jù)流圖可以包括用于從消息或其它外部信息源中的值計(jì)算臟存儲(chǔ)器位置上的值的指令序列的全部或相關(guān)部分。響應(yīng)模塊可以使用控制流分析來跟蹤確定執(zhí)行控制轉(zhuǎn)移指令后的指令指針值的所有條件、以及在執(zhí)行條件移動(dòng)和設(shè)置指令時(shí)使用的條件。這些條件的邏輯與可以被稱為過濾器條件。過濾器條件初始為真,且可以在使用臟處理器標(biāo)志或?qū)⒖刂妻D(zhuǎn)移給從臟位置讀取的地址的每一指令后被更新。過濾器條件被更新為其舊的值和由該臟標(biāo)志和地址位置的數(shù)據(jù)流圖計(jì)算得到的表達(dá)式的適當(dāng)條件的邏輯與。例如,當(dāng)JZ EAX(如果零標(biāo)志被設(shè)定設(shè)置,則跳轉(zhuǎn)至存儲(chǔ)在EAX寄存器中的地址)被執(zhí)行且發(fā)生跳轉(zhuǎn),如果零標(biāo)志和EAX寄存器都是干凈的,則過濾器條件保持不變。如果零標(biāo)志是臟的,添加由零標(biāo)志的數(shù)據(jù)流圖計(jì)算的表達(dá)式為假的條件。如果EAX也是臟的,也添加由EAX數(shù)據(jù)流圖計(jì)算的表達(dá)式等于由EAX當(dāng)前所存儲(chǔ)的值的條件。如果跳轉(zhuǎn)沒有發(fā)生,添加由零標(biāo)志的數(shù)據(jù)流圖計(jì)算的表達(dá)式為真的條件,且不添加EAX數(shù)據(jù)流圖的條件。在該過程之后,過濾器條件可以被應(yīng)用于傳入消息,以阻斷蠕蟲或惡意利用同樣的漏洞的蠕蟲變種。以這種方式,過濾器條件可以減少假肯定的發(fā)生。
      圖15所示的示例性易受攻擊代碼可以用來闡明過濾器的生成。圖15中代碼1500通過將網(wǎng)絡(luò)緩沖區(qū)中消息的第一字節(jié)與一常數(shù)(0×31)進(jìn)行比較開始。如果匹配,則網(wǎng)絡(luò)緩沖區(qū)中的字節(jié)被復(fù)制到一基于堆棧的緩沖區(qū),直到發(fā)現(xiàn)一零字節(jié)。這是可能蓋寫堆棧上返回地址的潛在緩沖區(qū)上溢,且它表示了字符串庫中的易受攻擊性。用于此易受攻擊性的過濾器可以通過運(yùn)行上述動(dòng)態(tài)數(shù)據(jù)流分析來生成。例如,在執(zhí)行了圖15所示的示例性指令的前四條指令1502后,實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)流分析的檢測(cè)模塊可以確定消息中第一字節(jié)應(yīng)該等于0×31的條件。類似地,執(zhí)行循環(huán)可以導(dǎo)出網(wǎng)絡(luò)緩沖區(qū)中的字節(jié)序列上不同于零的條件。向傳入消息應(yīng)用具有這些條件的過濾器可以不產(chǎn)生假肯定,且可以阻斷實(shí)質(zhì)上惡意利用該易受攻擊性的所有蠕蟲變種。若干附加機(jī)制可以用來細(xì)化過濾器條件。在一示例中,響應(yīng)模塊去除消息字節(jié)上在由SCA中的驗(yàn)證提示標(biāo)識(shí)的偏移量后出現(xiàn)的條件。因?yàn)橄⒅械淖止?jié)通常按順序來處理,因此這種試探不太可能造成假肯定。在另一示例中,響應(yīng)模塊在函數(shù)返回時(shí)去除由該函數(shù)執(zhí)行添加的條件?;驹硎沁@些條件在函數(shù)返回后通常不重要,且該函數(shù)的重要效果是在臟數(shù)據(jù)的數(shù)據(jù)流圖中捕捉的。
      生成的補(bǔ)丁或過濾器可以由接收并證明警報(bào)消息的任何機(jī)器獨(dú)立地生成,諸如通過如圖3所示的響應(yīng)模塊380生成。在另一示例中,生成的補(bǔ)丁或過濾器可以包括在警報(bào)消息之內(nèi),且該補(bǔ)丁或過濾器可以由接收節(jié)點(diǎn)用任何合適的方式證明或確認(rèn)。如圖7所示,自證明警報(bào)還可以包括響應(yīng)指示符710,它可以包含對(duì)已驗(yàn)證的易受攻擊性和/或蠕蟲攻擊的合適的響應(yīng)。例如,該響應(yīng)指示符可以提供對(duì)合適的補(bǔ)丁和/或過濾器、實(shí)現(xiàn)合適的補(bǔ)丁和/或過濾器的代碼等的描述或提示。
      警報(bào)的分發(fā)檢測(cè)易受攻擊性的節(jié)點(diǎn)可以向網(wǎng)絡(luò)中與該檢測(cè)節(jié)點(diǎn)通信的一個(gè)或多個(gè)節(jié)點(diǎn)發(fā)送警報(bào)。例如,通信網(wǎng)絡(luò)中的一部分節(jié)點(diǎn)可以運(yùn)行易受攻擊性和/或蠕蟲檢測(cè)模塊,該模塊可以幫助分發(fā)檢測(cè)負(fù)載和去除蠕蟲的中心目標(biāo)。如上文所述,檢測(cè)模塊可以包含多種檢測(cè)機(jī)制,其中有些是簡單的,有些是復(fù)雜的。網(wǎng)絡(luò)的一檢測(cè)節(jié)點(diǎn)可以在空閑時(shí)運(yùn)行檢測(cè)模塊,作為其正常操作的一部分,和/或作為網(wǎng)絡(luò)中其主要的或唯一的功能。可以理解,通信網(wǎng)絡(luò)中的任何數(shù)量的節(jié)點(diǎn),諸如一個(gè)、一部分、或所有節(jié)點(diǎn)可以被認(rèn)為是運(yùn)行檢測(cè)模塊的檢測(cè)節(jié)點(diǎn)。
      如上文所述,當(dāng)檢測(cè)到易受攻擊性和/或蠕蟲攻擊時(shí),一種響應(yīng)可以是生成警報(bào),諸如自證明警報(bào),并將其發(fā)送至網(wǎng)絡(luò)中的一個(gè)或多個(gè)節(jié)點(diǎn)。以這種方式,可以向沒有檢測(cè)到該易受攻擊性和/或沒有被所檢測(cè)到的蠕蟲感染的節(jié)點(diǎn)警告關(guān)于該蠕蟲和/或程序易受攻擊性,且可以采取恰當(dāng)?shù)谋Wo(hù)行動(dòng)。如上文所述,自證明警報(bào)可以包括允許接收節(jié)點(diǎn)獨(dú)立地驗(yàn)證該警報(bào)的真實(shí)性的機(jī)器可驗(yàn)證信息。以這種方式,網(wǎng)絡(luò)中接收警報(bào)的任何節(jié)點(diǎn)可以證明該警報(bào),而無需與鑒權(quán)機(jī)構(gòu)等通信。從而,自證明警報(bào)可以是促進(jìn)互不信任節(jié)點(diǎn)之間的合作的體系結(jié)構(gòu)的一部分。
      覆蓋圖網(wǎng)絡(luò)當(dāng)檢測(cè)到蠕蟲和/或易受攻擊性時(shí),一警報(bào)可以被迅速和/或能復(fù)原地發(fā)送到可能運(yùn)行該易受攻擊或易受蠕蟲攻擊影響的其它程序。該警報(bào)可以用任何合適的方式發(fā)送到網(wǎng)絡(luò)中任何數(shù)量的可確定和/或預(yù)定節(jié)點(diǎn)。在一示例中,可以使用一網(wǎng)絡(luò)覆蓋圖來發(fā)送警報(bào),該網(wǎng)絡(luò)覆蓋圖對(duì)抗惡意知情者和/或蠕蟲的服務(wù)拒絕攻擊來進(jìn)行保護(hù)。例如,警報(bào)可以通過一結(jié)構(gòu)化的對(duì)等覆蓋圖來廣播。
      對(duì)等覆蓋圖可以為自組織應(yīng)用程序的構(gòu)造提供一合適的基底,因?yàn)閷?duì)等網(wǎng)絡(luò)可以縮放至巨大數(shù)量的節(jié)點(diǎn),且可以是有復(fù)原力的,例如,可以即使在大量節(jié)點(diǎn)崩潰或斷開連接時(shí)也保持連通性。下面的描述提供了結(jié)構(gòu)化對(duì)等覆蓋圖的概述,且示出了保護(hù)對(duì)等覆蓋圖以提高向在系統(tǒng)中實(shí)質(zhì)上所有未被感染的節(jié)點(diǎn)傳遞警報(bào)的可能性的一示例。盡管在以下討論中使用了Pastry對(duì)等覆蓋圖作為示例,然而可以理解,可以使用任何其它合適的網(wǎng)絡(luò)和/或?qū)Φ染W(wǎng)絡(luò)覆蓋圖。對(duì)等網(wǎng)絡(luò)覆蓋圖的網(wǎng)絡(luò)類型的當(dāng)前示例包括加州大學(xué)伯克利分校開發(fā)的Tapestry、麻省理工大學(xué)開發(fā)的Chord、以及微軟和賴斯大學(xué)開發(fā)的Pastry。Tapestry、Chord和Pastry都是用于構(gòu)建分布式系統(tǒng)的工具包。CAN、Kademlia、Skipnet和Viceroy是類似的其它系統(tǒng)。經(jīng)常會(huì)出現(xiàn)新的覆蓋圖設(shè)計(jì)。
      諸如Pastry等結(jié)構(gòu)化覆蓋圖將鍵映射給覆蓋圖節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)被分配一標(biāo)識(shí)符空間選擇的節(jié)點(diǎn)標(biāo)識(shí)符。鍵是從同一標(biāo)識(shí)符空間選擇的。鍵被映射給具有最接近和/或最類似于標(biāo)識(shí)符空間中該健的節(jié)點(diǎn)標(biāo)識(shí)符的節(jié)點(diǎn)。該節(jié)點(diǎn)可以被稱為該鍵的根節(jié)點(diǎn)。鍵到節(jié)點(diǎn)的映射可以通過允許用戶向目標(biāo)鍵發(fā)送查找消息的原語來展示,例如,使用在Dabek等人所著的“Towards a common API for structuredpeer-to-peer overlays”(發(fā)表在2ndInt’l Workshop on P2P Systems,2003年2月,第33-44頁,通過引用包含在此)中有進(jìn)一步討論的KBR接口來展示。查找消息可以通過覆蓋圖路由到目標(biāo)鍵的根節(jié)點(diǎn)。例如,Pastry從128位無符號(hào)整數(shù)集合中均勻地隨機(jī)選擇節(jié)點(diǎn)標(biāo)識(shí)符和鍵,然后將一指示的目標(biāo)鍵映射至其節(jié)點(diǎn)標(biāo)識(shí)符在數(shù)字上與該鍵最接近的活動(dòng)結(jié)點(diǎn)。例如,數(shù)字上最接近的節(jié)點(diǎn)標(biāo)識(shí)符可以是與目標(biāo)鍵以2128為模最接近的節(jié)點(diǎn)標(biāo)識(shí)符。
      節(jié)點(diǎn)的路由狀態(tài)信息可以被存儲(chǔ)在一路由表中。該路由表可以用路由表中指示的節(jié)點(diǎn)空間逼近存儲(chǔ)在路由表中的節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符的越來越高的詳細(xì)等級(jí)將節(jié)點(diǎn)標(biāo)識(shí)符與地址空間中多個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)地址相關(guān)聯(lián)。節(jié)點(diǎn)的葉子集合包含最接近或最類似于主宿在路由表中的節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符的那些節(jié)點(diǎn)的信息,諸如節(jié)點(diǎn)標(biāo)識(shí)符和網(wǎng)絡(luò)地址。取決于覆蓋圖協(xié)議,葉子集合可以被存儲(chǔ)在獨(dú)立于路由表的數(shù)據(jù)結(jié)構(gòu)中,和/或可以是路由表的最低層次。
      一示例性路由表結(jié)構(gòu)將參考Pastry來討論。Pastry的路由算法將節(jié)點(diǎn)標(biāo)識(shí)符和鍵解釋為以2b為底的無符號(hào)整數(shù),其中b是通常值為4的參數(shù)?;谠摻忉?,路由表是具有128/b行和2b列的矩陣。該路由表的r行c列中的條目包含與本地節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符共享前r位數(shù)的節(jié)點(diǎn)標(biāo)識(shí)符,且第(r+1)位數(shù)等于c,假定該路由表中的第一列表示r=0。如果不存在這樣的節(jié)點(diǎn)標(biāo)識(shí)符,例如,在網(wǎng)絡(luò)中沒有一個(gè)活動(dòng)節(jié)點(diǎn)正在使用該節(jié)點(diǎn)標(biāo)識(shí)符,那么該條目可以為空值。因?yàn)楣?jié)點(diǎn)標(biāo)識(shí)符可以遍及標(biāo)識(shí)符空間被均勻且隨機(jī)地分配,因此在該發(fā)送表中非空條目的平均數(shù)量可以被近似為對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)的數(shù)量的(2b-1)*log(以2b為底)。一Pastry節(jié)點(diǎn)的葉子集合可以包含本地節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符左端的 個(gè)最接近節(jié)點(diǎn)標(biāo)識(shí)符,以及本地節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符右端的 個(gè)最接近節(jié)點(diǎn)標(biāo)識(shí)符,其中 是一個(gè)通常值為8的參數(shù)。對(duì)等網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)的葉子集合的集合然后以環(huán)的形式連接覆蓋圖節(jié)點(diǎn)。以這種方式,消息可以通過轉(zhuǎn)發(fā)該消息給具有與目標(biāo)鍵相匹配的逐漸更長的前綴的節(jié)點(diǎn)而在對(duì)等網(wǎng)絡(luò)中路由。
      圖12示出了b=2以及 的一示例性結(jié)構(gòu)化覆蓋圖網(wǎng)絡(luò)1200。該結(jié)構(gòu)化覆蓋圖網(wǎng)絡(luò)圖示出了于節(jié)點(diǎn)1202始發(fā)的查找消息的路線1210。查找消息含有一與最接近于所指示鍵值的節(jié)點(diǎn)標(biāo)識(shí)符的鍵,例如,存儲(chǔ)與鍵相關(guān)的所需信息的節(jié)點(diǎn)是含有最接近于該的鍵的節(jié)點(diǎn)標(biāo)識(shí)符相匹配的健,例如,儲(chǔ)存與健相關(guān)聯(lián)的期望信息的節(jié)點(diǎn)是具有最接近于該健的節(jié)點(diǎn)標(biāo)識(shí)符的節(jié)點(diǎn)。例如,節(jié)點(diǎn)1202可以含有節(jié)點(diǎn)標(biāo)識(shí)符203231,且查找消息的鍵可以是323310。為發(fā)送該查找消息,始發(fā)節(jié)點(diǎn)1202可以搜索其路由表中的一層,以找出最接近于該查找消息的目標(biāo)鍵的已知節(jié)點(diǎn)標(biāo)識(shí)符。更具體地,節(jié)點(diǎn)1202可以搜索其路由表的第一行,以尋找以數(shù)字3開頭的節(jié)點(diǎn)標(biāo)識(shí)符,3是該鍵的第一位。該始發(fā)節(jié)點(diǎn)可以在以3開頭的節(jié)點(diǎn)標(biāo)識(shí)符的路由表位置處找到節(jié)點(diǎn)標(biāo)識(shí)符313221。參考圖12,始發(fā)節(jié)點(diǎn)1202可以而后使用通信介質(zhì)通過路線1212向處于與其路由表中的節(jié)點(diǎn)標(biāo)識(shí)符(313221)相關(guān)聯(lián)的地址處的節(jié)點(diǎn)1204轉(zhuǎn)發(fā)該查找消息。節(jié)點(diǎn)1204而后接收到該查找消息,且可以搜索其路由表(例如,表的第二層),以查找以32開始的節(jié)點(diǎn)標(biāo)識(shí)符,例如,匹配查找消息鍵323310的前兩位。節(jié)點(diǎn)1204可以在以32開頭的節(jié)點(diǎn)標(biāo)識(shí)符的位置處找到節(jié)點(diǎn)標(biāo)識(shí)符322021。節(jié)點(diǎn)1204然后可以使用通信介質(zhì)通過路線1214向處于與其路由表中的節(jié)點(diǎn)標(biāo)識(shí)符(322021)相關(guān)聯(lián)的地址的節(jié)點(diǎn)1206轉(zhuǎn)發(fā)該查找消息。節(jié)點(diǎn)1206然后接收到該查找消息,且可以搜索其路由表,并繼續(xù)上述步驟直至該查找消息到達(dá)該鍵的根節(jié)點(diǎn)1208。在多種情況下,如果節(jié)點(diǎn)標(biāo)識(shí)符的分布是足夠隨機(jī)且均勻的,路由平均需要大約 個(gè)中繼段(其中參數(shù)N是網(wǎng)絡(luò)中節(jié)點(diǎn)的個(gè)數(shù),且b是節(jié)點(diǎn)標(biāo)識(shí)符空間的底數(shù))。
      保護(hù)網(wǎng)絡(luò)為提高通過結(jié)構(gòu)化網(wǎng)絡(luò)覆蓋圖的警報(bào)分發(fā)的復(fù)原能力,一個(gè)或多個(gè)安全機(jī)制可以用來保護(hù)該結(jié)構(gòu)化的對(duì)等覆蓋圖網(wǎng)絡(luò)。任何安全措施可以被恰當(dāng)?shù)厥褂谩0踩胧┛梢园?,例如,Castro等人所著的“Secure routing for structured P2Poverlay networks”(發(fā)表在5thUsenix Symp.Operating System Design andImplementation,2002年12月,第299-314頁,通過引用包含在此)中所述的技術(shù)。其他的安全機(jī)制可以減少信息泄漏、減少服務(wù)拒絕(在覆蓋圖層產(chǎn)生擁塞)、即使大部分覆蓋圖節(jié)點(diǎn)被感染時(shí)也能向未感染的節(jié)點(diǎn)發(fā)送廣播警報(bào)等。
      一種安全措施可以向進(jìn)入對(duì)等網(wǎng)絡(luò)的節(jié)點(diǎn)分配節(jié)點(diǎn)標(biāo)識(shí)符。節(jié)點(diǎn)標(biāo)識(shí)符可以由任何合適的來源分配,諸如一個(gè)或多個(gè)可信鑒權(quán)機(jī)構(gòu)(CA)。該鑒權(quán)機(jī)構(gòu)可以保證節(jié)點(diǎn)標(biāo)識(shí)符是從節(jié)點(diǎn)標(biāo)識(shí)符空間中充分隨機(jī)地選取的,和/或可以防止節(jié)點(diǎn)偽造節(jié)點(diǎn)標(biāo)識(shí)符。鑒權(quán)機(jī)構(gòu)可以使用技術(shù)以控制認(rèn)證節(jié)點(diǎn)標(biāo)識(shí)符的已簽署證書的可用性,例如,通過要求支付、擁有一特定產(chǎn)品的證據(jù)、對(duì)慈善團(tuán)體的財(cái)政饋贈(zèng)的證據(jù)等來控制。使用鑒權(quán)機(jī)構(gòu)分配節(jié)點(diǎn)標(biāo)識(shí)符可以減少Sybil攻擊。為保護(hù)該鑒權(quán)機(jī)構(gòu)免遭攻擊,該一個(gè)或多個(gè)鑒權(quán)機(jī)構(gòu)可以是脫機(jī)的,和/或不被牽涉至該覆蓋圖網(wǎng)絡(luò)的正常操作中。
      一種替換和/或另外的安全措施可以包括啟用安全路由表維護(hù),這可以用任一適當(dāng)?shù)姆绞絹韺?shí)現(xiàn)。例如,可以對(duì)能夠填充路由表中每一字段的節(jié)點(diǎn)標(biāo)識(shí)符集合施加約束。在標(biāo)識(shí)符為i的節(jié)點(diǎn)的Pastry發(fā)送表中,在r行和c列的字段可以被約束為含有與該節(jié)點(diǎn)標(biāo)識(shí)符i共享前r位數(shù)且在第r+1位上的值為c的任何節(jié)點(diǎn)標(biāo)識(shí)符。節(jié)點(diǎn)標(biāo)識(shí)符條目的剩余數(shù)字可以是與路由無關(guān)的。然而,路由表中的條目可以被進(jìn)一步約束為指示或包含在域中最接近點(diǎn)p的節(jié)點(diǎn)標(biāo)識(shí)符。點(diǎn)p可以被定義為節(jié)點(diǎn)空間中這樣的節(jié)點(diǎn)標(biāo)識(shí)符位置它與節(jié)點(diǎn)標(biāo)識(shí)符i共享前r位數(shù),在第r+1位的值為c,且含有限制域中一有效點(diǎn)p的節(jié)點(diǎn)標(biāo)識(shí)符的某些可確定的數(shù)字序列。例如,點(diǎn)p可以被定義為這樣的節(jié)點(diǎn)標(biāo)識(shí)符它與節(jié)點(diǎn)標(biāo)識(shí)符i共享前r位數(shù),在第r+1位上值為c,且其它數(shù)字都與i相同。將路由表?xiàng)l目與標(biāo)識(shí)符空間中的虛擬點(diǎn)綁定可以減少對(duì)由惡意節(jié)點(diǎn)發(fā)送、由誠實(shí)節(jié)點(diǎn)接收的路由更新的接受(如果該更新不滿足虛擬點(diǎn)約束)。以這種方式,能夠被惡意節(jié)點(diǎn)占據(jù)的路由表?xiàng)l目的數(shù)目可以被限定。該技術(shù)在Castro等人所著的“Secure routing for structured peer-to-peeroverlay networks”(發(fā)表在5thUsenix Symp.Operating System Design andImplementation,Boston,MA,2002年12月,第299-314頁,通過引用包含在此)中進(jìn)一步描述。
      一種另外的或替換的安全措施可以包括避免信息泄漏。更具體地,網(wǎng)絡(luò)覆蓋圖的爬行(crawling)可以被禁止和/或反對(duì)。從而,對(duì)覆蓋圖成員信息的訪問可以被降低。任何合適的技術(shù)可以用來避免泄漏成員信息,諸如約束路由表中的條目。例如,帶有節(jié)點(diǎn)標(biāo)識(shí)符i的節(jié)點(diǎn)可能需要填充其路由表中r行c列的縫隙,因?yàn)樵摽p隙由于節(jié)點(diǎn)故障、由于另一節(jié)點(diǎn)而離開覆蓋圖、和/或節(jié)點(diǎn)正加入和初始化其路由表而變空。為填充該縫隙,節(jié)點(diǎn)可以向定義該空隙的約束的標(biāo)識(shí)符s路由一請(qǐng)求消息,該標(biāo)識(shí)符s是例如除了在r+1位值為c外與節(jié)點(diǎn)標(biāo)識(shí)符相等的標(biāo)識(shí)符。當(dāng)這樣一個(gè)請(qǐng)求被傳送到一節(jié)點(diǎn)時(shí),該接收節(jié)點(diǎn)可以核查在其路由表中和/或葉子集合中是否存在更接近標(biāo)識(shí)符s的節(jié)點(diǎn)。接收節(jié)點(diǎn)還可以核查標(biāo)識(shí)符s是否不代表請(qǐng)求者節(jié)點(diǎn)標(biāo)識(shí)符的有效點(diǎn)p。如果是,則該接收節(jié)點(diǎn)可以丟棄該請(qǐng)求、將該請(qǐng)求轉(zhuǎn)發(fā)給更近的節(jié)點(diǎn)、和/或采取其他任何合適的行動(dòng)。以這種方式,惡意節(jié)點(diǎn)僅能發(fā)現(xiàn)滿足路由表項(xiàng)約束的那些節(jié)點(diǎn)。在某些情況下,其他應(yīng)用程序可以被限制不能在支持警報(bào)分發(fā)的覆蓋圖之上運(yùn)行,因?yàn)樵谀承┣闆r下,該應(yīng)用程序可能會(huì)泄漏關(guān)于覆蓋圖成員的信息。
      另一替換和/或另外的安全措施可以在當(dāng)一節(jié)點(diǎn)被損壞時(shí),減少對(duì)覆蓋圖相鄰節(jié)點(diǎn)身份的暴露。例如,覆蓋圖可以運(yùn)行在操作系統(tǒng)內(nèi)核中、虛擬機(jī)監(jiān)控程序中、硬件芯片中等。
      另一替換或另外的安全措施可以減少對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)之間的消息話務(wù)擁塞,這可以減少對(duì)網(wǎng)絡(luò)的服務(wù)拒絕攻擊的出現(xiàn)和/或其效果。各種合適的機(jī)制的任何一種或多種可以用來減少網(wǎng)絡(luò)中的擁塞。例如,可以防止節(jié)點(diǎn)向覆蓋圖注入極大數(shù)量的消息。另外或作為選擇,覆蓋圖消息可以被簽署,且每個(gè)節(jié)點(diǎn)可以對(duì)它為覆蓋圖中由該消息的簽名標(biāo)識(shí)的其它節(jié)點(diǎn)處理的消息的速率強(qiáng)加限制。例如,鑒權(quán)機(jī)構(gòu)可以簽署包含每一節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符和公鑰的證書。當(dāng)發(fā)送節(jié)點(diǎn)發(fā)送一覆蓋圖消息時(shí),該節(jié)點(diǎn)可以使用其私鑰來簽署該消息并可以路由該消息。由鑒權(quán)機(jī)構(gòu)簽署的該節(jié)點(diǎn)的證書可以附加給該消息。路由該消息的每一節(jié)點(diǎn)可以驗(yàn)證該發(fā)送節(jié)點(diǎn)是該消息的來源(例如,使用證書來驗(yàn)證消息的簽名),且可以記錄它為特定節(jié)點(diǎn)路由的消息的數(shù)目(例如,在消息計(jì)數(shù)參數(shù)中)。消息計(jì)數(shù)參數(shù)可以與一預(yù)定閾值進(jìn)行比較,該閾值可限制從發(fā)送節(jié)點(diǎn)路由的消息的數(shù)目。在另一示例中,任何給定節(jié)點(diǎn)可以向網(wǎng)絡(luò)插入消息的速率可以通過在每一相鄰鏈接(例如,節(jié)點(diǎn)標(biāo)識(shí)符與本地節(jié)點(diǎn)標(biāo)識(shí)符類似的那些節(jié)點(diǎn))上應(yīng)用速率限制來界定。如果節(jié)點(diǎn)標(biāo)識(shí)符是由鑒權(quán)機(jī)構(gòu)分配的,那么可以限制更改節(jié)點(diǎn)的相鄰節(jié)點(diǎn)。
      有復(fù)原力的分發(fā)警報(bào)的分發(fā),例如,為警報(bào)標(biāo)識(shí)接收節(jié)點(diǎn)可以用任何合適的方式來確定。例如,如圖3所示,分發(fā)模塊370可以在生成警報(bào)時(shí)響應(yīng)于來自警報(bào)模塊350的輸入而被觸發(fā),和/或在驗(yàn)證所接收的警報(bào)時(shí)響應(yīng)從來自警報(bào)驗(yàn)證模塊360的輸入而被觸發(fā)。指示蠕蟲攻擊和/或程序易受攻擊性的警報(bào)的分發(fā),對(duì)阻斷該警報(bào)的傳播的一個(gè)或多個(gè)路由節(jié)點(diǎn)的企圖可以是有復(fù)原力的。阻斷節(jié)點(diǎn)可能是有目的地阻斷警報(bào)傳播的惡意節(jié)點(diǎn),或者該節(jié)點(diǎn)可能被損害而不能參與消息的路由,例如,該節(jié)點(diǎn)可能被蠕蟲感染。這樣,向?qū)Φ染W(wǎng)絡(luò)中的節(jié)點(diǎn)發(fā)送警報(bào)的分發(fā)方案可以經(jīng)由多條覆蓋圖路線向同一節(jié)點(diǎn)發(fā)送警報(bào)。更具體地,一節(jié)點(diǎn)可以接收多個(gè)警報(bào),其每一個(gè)始發(fā)于一不同節(jié)點(diǎn),和/或經(jīng)由不同的路由路徑發(fā)送。
      如果使用單條路徑,則該路徑被阻斷的概率可以被近似為P(block)=1-(1-f)pathlength(3)其中參數(shù)f是網(wǎng)絡(luò)中阻斷路由的節(jié)點(diǎn)的比例。從而,如果使用通向每個(gè)節(jié)點(diǎn)的多條獨(dú)立路徑來發(fā)送警報(bào),例如通過構(gòu)建多個(gè)獨(dú)立的多點(diǎn)傳播樹,那么至少有一條路徑僅含有誠實(shí)和/或有能力節(jié)點(diǎn)概率可以被近似為(clear)=1-binom(0:p,(1-f)log2bN)----(4)]]>其中N是網(wǎng)絡(luò)中節(jié)點(diǎn)的個(gè)數(shù), 是樹的深度,p是通向每個(gè)節(jié)點(diǎn)的獨(dú)立路徑數(shù)目,binom是p次嘗試中,0次成功路由的二項(xiàng)式分布,每次嘗試中路由成功的概率是 從而,為達(dá)到到達(dá)一給定節(jié)點(diǎn)的90%的概率,b=4且在含有100,000個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)中百分之五十的節(jié)點(diǎn)被損壞,大約需要選擇40條路經(jīng)。如果40條路徑用來把單個(gè)警報(bào)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)中的每一節(jié)點(diǎn),那么該消息成本近似為p*N的值。
      被選擇來路由消息的獨(dú)立路徑可以用任何合適的方式來選取。例如,可以選取隨機(jī)路徑。在另一示例中,每一節(jié)點(diǎn)可以向其路由表中的所有或部分條目發(fā)送警報(bào)。在b=l的對(duì)等網(wǎng)絡(luò)中,對(duì)所有路由表?xiàng)l目的完整路由表廣播可以有大致為 條消息的消息成本。該完整路由表廣播可能可以到達(dá)對(duì)其存在到警報(bào)來源的好路徑的每一節(jié)點(diǎn)。在另一示例中,接收節(jié)點(diǎn)可以由路由表中低于一預(yù)定層次的條目所標(biāo)識(shí)。作為選擇或另外地,發(fā)送警報(bào)的節(jié)點(diǎn)可以向在葉子集合中的每一條目發(fā)送警報(bào)。
      接收和證明警報(bào)的那些節(jié)點(diǎn)可以根據(jù)分發(fā)技術(shù)將警報(bào)轉(zhuǎn)發(fā)到其它節(jié)點(diǎn),例如,到路由表?xiàng)l目中的條目、到葉子集合中的條目等的多條隨機(jī)路徑。例如,如果一個(gè)節(jié)點(diǎn)將已證明的警報(bào)轉(zhuǎn)發(fā)給其路由表中的所有節(jié)點(diǎn),則每個(gè)接收節(jié)點(diǎn)可以從在其路由表中列出該接收節(jié)點(diǎn)的每一節(jié)點(diǎn)接收該警報(bào),這樣形成了到網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)的多條路徑。從而,該警報(bào)可以分發(fā)給在網(wǎng)絡(luò)中實(shí)質(zhì)上的所有節(jié)點(diǎn),且多個(gè)警報(bào)可以經(jīng)由不同的路徑路由給每個(gè)節(jié)點(diǎn),以減少警報(bào)的阻斷。
      另外,一節(jié)點(diǎn)可以在轉(zhuǎn)發(fā)警報(bào)之前驗(yàn)證該警報(bào)的來源和/或該警報(bào)的內(nèi)容,例如,程序中易受攻擊性的指示。如果警報(bào)的來源不能被驗(yàn)證,但是被發(fā)現(xiàn)是對(duì)一已被驗(yàn)證的易受攻擊性的描述,那么該節(jié)點(diǎn)可以轉(zhuǎn)發(fā)或不轉(zhuǎn)發(fā)該警報(bào)。如果警報(bào)的來源可以被驗(yàn)證,且被發(fā)現(xiàn)不是對(duì)易受攻擊性的描述,那么該節(jié)點(diǎn)可以丟棄該警報(bào)。
      節(jié)點(diǎn)可以將警報(bào)與已經(jīng)被轉(zhuǎn)發(fā)的警報(bào)作比較。如果該警報(bào)與先前轉(zhuǎn)發(fā)的警報(bào)描述相同的易受攻擊性,則該節(jié)點(diǎn)可以不轉(zhuǎn)發(fā)該警報(bào)。為減少不間斷地發(fā)送相同的警報(bào)消息,警報(bào)可以包含一警報(bào)標(biāo)識(shí)符,可檢查該警報(bào)標(biāo)識(shí)符以確定該警報(bào)是否為重復(fù)、指示轉(zhuǎn)發(fā)該警報(bào)的特定時(shí)間量的超時(shí)指示符、限制警報(bào)被轉(zhuǎn)發(fā)的次數(shù)的轉(zhuǎn)發(fā)次數(shù)計(jì)數(shù)器、或其它任何合適的指示符。
      當(dāng)一節(jié)點(diǎn)加入覆蓋圖,加入的節(jié)點(diǎn)可以請(qǐng)求覆蓋圖中的一個(gè)或多個(gè)節(jié)點(diǎn),諸如在其葉子集合和/或路由表中存在的節(jié)點(diǎn)轉(zhuǎn)發(fā)相關(guān)警報(bào)。該相關(guān)警報(bào)可以是由覆蓋圖中的節(jié)點(diǎn)存儲(chǔ)的任何合適的警報(bào),包括,例如,自從該加入節(jié)點(diǎn)最后一次斷開與覆蓋圖的連接后被證明的警報(bào)、在一預(yù)定時(shí)間段中的警報(bào)等。接收警報(bào)請(qǐng)求的節(jié)點(diǎn)可以返回全部或一部分所請(qǐng)求的警報(bào)。另外地或作為選擇,接收警報(bào)請(qǐng)求的節(jié)點(diǎn)可以發(fā)送它接收到的和/或存儲(chǔ)的警報(bào)的概述。加入的節(jié)點(diǎn)可以選擇在該概述中標(biāo)識(shí)的一部分警報(bào)并向該接收節(jié)點(diǎn)和/或網(wǎng)絡(luò)覆蓋圖中的其它節(jié)點(diǎn)請(qǐng)求那些特定警報(bào)。警報(bào)概述可以采用任何合適的形式。
      參考圖12所示的示例性對(duì)等網(wǎng)絡(luò),節(jié)點(diǎn)1202可以含有一包含節(jié)點(diǎn)1220、1222、1224、1226的條目的葉子集合1232。節(jié)點(diǎn)1202可以向節(jié)點(diǎn)1220、1222、1224、1226發(fā)送警報(bào),且這些節(jié)點(diǎn)的每一個(gè)可以向在其葉子集合中包括的節(jié)點(diǎn)轉(zhuǎn)發(fā)已證明的警報(bào)。例如,節(jié)點(diǎn)1222可以含有一包含節(jié)點(diǎn)1202、1220、1244、1246的葉子集合1242。以這種方式,節(jié)點(diǎn)1220可以接收來自節(jié)點(diǎn)1202和節(jié)點(diǎn)1222兩者的警報(bào)。而且,因?yàn)橄蛎總€(gè)后繼的葉子集合發(fā)送警報(bào),該警報(bào)在整個(gè)網(wǎng)絡(luò)上分發(fā)。
      而且,分發(fā)系統(tǒng)可以隨覆蓋圖網(wǎng)絡(luò)的增長收縮而自動(dòng)縮放。路由表和/或葉子集合分發(fā)技術(shù)可以允許對(duì)等網(wǎng)絡(luò)中的任何節(jié)點(diǎn)獨(dú)立地加入或離開蠕蟲遏制系統(tǒng)。而且,自證明警報(bào)的分發(fā)可以不要求伙伴間的廣泛協(xié)定。更具體地,每個(gè)節(jié)點(diǎn)不依賴于單個(gè)點(diǎn),例如,ISP或其它中央服務(wù)器,來通知和/或保護(hù)他們免于感染。
      由于蠕蟲遏制系統(tǒng)的檢測(cè)、警報(bào)證明、警報(bào)分發(fā)、和/或響應(yīng)模塊不依賴于單個(gè)中央處理器,因此沒有一個(gè)中央基礎(chǔ)結(jié)構(gòu)可以擔(dān)當(dāng)專用攻擊的目標(biāo)和/或成為單個(gè)點(diǎn)故障。在某些情況下,為進(jìn)一步分散蠕蟲遏制系統(tǒng)的基礎(chǔ)結(jié)構(gòu),作為遏制系統(tǒng)的一部分(例如,對(duì)等網(wǎng)絡(luò)中節(jié)點(diǎn)的葉子集合的一部分)的每個(gè)節(jié)點(diǎn)可以是可消耗的。以這種方式,遏制系統(tǒng)中的所有或至少一部分節(jié)點(diǎn)可以執(zhí)行相同類型的功能(盡管它們能夠,且可以不同地實(shí)現(xiàn))。
      其它分發(fā)或擴(kuò)散技術(shù)可以是適合的,諸如互聯(lián)網(wǎng)協(xié)議多點(diǎn)傳送和基于拉的機(jī)制。
      部署情形如上文所述,覆蓋圖網(wǎng)絡(luò)的一個(gè)或多個(gè)節(jié)點(diǎn)可以運(yùn)行檢測(cè)模塊以檢測(cè)蠕蟲攻擊和/或軟件程序中的易受攻擊性。檢測(cè)模塊可以由一個(gè)或多個(gè)專用計(jì)算設(shè)備的任一組合(例如,在蜜罐類型的部署中)、一個(gè)或多個(gè)空閑的計(jì)算設(shè)備(例如,作為屏幕保護(hù)類型的應(yīng)用程序的一部分)、以及作為正常生產(chǎn)部署的一部分的一個(gè)或多個(gè)節(jié)點(diǎn)來運(yùn)行。
      在蠕蟲傳播時(shí)用來廣播警報(bào)的覆蓋圖網(wǎng)絡(luò)可以被部署在整個(gè)因特網(wǎng)或其它通信網(wǎng)絡(luò)上、部署在單個(gè)企業(yè)局域網(wǎng)的節(jié)點(diǎn)上、部署在定義為特定用戶類(例如,軟件包的注冊(cè)用戶)的節(jié)點(diǎn)上等。
      如上文所述,警報(bào)消息可以在檢測(cè)到易受攻擊性或蠕蟲攻擊時(shí)自動(dòng)生成。此外,警報(bào)可以在接收警報(bào)消息和/或證明警報(bào)消息后根據(jù)一預(yù)定分發(fā)協(xié)議來自動(dòng)轉(zhuǎn)發(fā)。在其他情況下,手動(dòng)或人員交互可以提供監(jiān)督和/或授權(quán)來生成和/或轉(zhuǎn)發(fā)警報(bào)。
      如果網(wǎng)絡(luò)中的每一或至少一部分節(jié)點(diǎn)涉及遏制系統(tǒng)中的檢測(cè)、警報(bào)證明、和/或警報(bào)分發(fā),那么存在甚至在大規(guī)模攻擊發(fā)生前攻擊者滲透系統(tǒng)的可能性。假定系統(tǒng)中的任一節(jié)點(diǎn)可以是惡意的,且每個(gè)節(jié)點(diǎn)由一不同的實(shí)體所擁有,則節(jié)點(diǎn)之間不存在信任,即使節(jié)點(diǎn)具有由一鑒權(quán)機(jī)構(gòu)簽署的身份。然而,這些節(jié)點(diǎn)可以在阻止蠕蟲惡意利用未知的易受攻擊性的任務(wù)中相互合作。識(shí)別那些惡意節(jié)點(diǎn)可能引入可能被惡意節(jié)點(diǎn)所惡意利用的機(jī)制。從而,如上所述,遏制系統(tǒng)體系結(jié)構(gòu)可以被開發(fā)為容忍和/或設(shè)計(jì)圍繞著網(wǎng)絡(luò)中存在的惡意但未知的節(jié)點(diǎn)。
      在操作中,一蠕蟲遏制體系結(jié)構(gòu)可以提供對(duì)蠕蟲或程序易受攻擊性的檢測(cè)、警報(bào)生成、警報(bào)證明、警報(bào)分發(fā)和/或響應(yīng)。更具體地,在某些情況下,由遏制系統(tǒng)保護(hù)的網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)可以參與對(duì)攻擊或易受攻擊性的檢測(cè)、警報(bào)生成、警報(bào)證明、警報(bào)分發(fā)和/或響應(yīng)中的至少一項(xiàng)。例如,參考圖3,對(duì)等網(wǎng)絡(luò)310中的檢測(cè)節(jié)點(diǎn)可以包括檢測(cè)模塊340、警報(bào)模塊350、分發(fā)模塊370和響應(yīng)模塊380。如上文所述,檢測(cè)模塊可以諸如通過使用動(dòng)態(tài)數(shù)據(jù)流分析來檢測(cè)蠕蟲攻擊和/或軟件易受攻擊性。任何合適的運(yùn)行時(shí)分析系統(tǒng)可以用來跟蹤事件。
      當(dāng)一檢測(cè)到蠕蟲攻擊和/或程序易受攻擊性后,檢測(cè)模塊340可以與響應(yīng)模塊380通信以觸發(fā)一項(xiàng)或多項(xiàng)保護(hù)措施。為向未感染節(jié)點(diǎn)傳達(dá)所識(shí)別的蠕蟲和/或程序易受攻擊性,檢測(cè)節(jié)點(diǎn)310可以使用警報(bào)模塊350來生成警報(bào)消息330。如上文所述,警報(bào)消息可以是自證明的和/或可以包括易受攻擊程序指示符、易受攻擊性類型指示符、事件列表、一條或多條證實(shí)提示和響應(yīng)指示符中的一個(gè)或多個(gè)。警報(bào)模塊350可以與分發(fā)模塊370通信,以根據(jù)分發(fā)協(xié)議向網(wǎng)絡(luò)中的一個(gè)或多個(gè)節(jié)點(diǎn)發(fā)送警報(bào)消息330。對(duì)于上文所述的示例,警報(bào)消息可以依照網(wǎng)絡(luò)覆蓋圖協(xié)議被分發(fā)給所維護(hù)的路由表中所標(biāo)識(shí)的節(jié)點(diǎn)。另外地或作為選擇,警報(bào)消息可以依照對(duì)等覆蓋圖協(xié)議被分發(fā)給所維護(hù)的葉子集合中所標(biāo)識(shí)的所有節(jié)點(diǎn)。
      如圖3所示,警報(bào)消息330可以被發(fā)送給節(jié)點(diǎn)310的葉子集合中所標(biāo)識(shí)的接收節(jié)點(diǎn)320。該接收節(jié)點(diǎn)可以接收警報(bào)消息330,并使用警報(bào)驗(yàn)證模塊360來證明該警報(bào)消息。如果該警報(bào)被證明,則接收節(jié)點(diǎn)320可以使用響應(yīng)模塊380來觸發(fā)一項(xiàng)或多項(xiàng)保護(hù)措施。為通過通信網(wǎng)絡(luò)分發(fā)警報(bào)330,接收模塊320可以使用分發(fā)模塊370根據(jù)分發(fā)協(xié)議向網(wǎng)絡(luò)中的一個(gè)或多個(gè)節(jié)點(diǎn)轉(zhuǎn)發(fā)警報(bào)消息330。對(duì)于上文所述的示例,警報(bào)消息可以依照對(duì)等覆蓋圖協(xié)議被分發(fā)給所維護(hù)的路由表和/或葉子集合中所標(biāo)識(shí)的節(jié)點(diǎn)。
      在一實(shí)驗(yàn)中,在類似于SQL Slammer的蠕蟲攻擊下存活的節(jié)點(diǎn)的比例可以根據(jù)系統(tǒng)中檢測(cè)器的比率來確定。在一實(shí)驗(yàn)中,全體100,000個(gè)節(jié)點(diǎn)(例如,主機(jī)計(jì)算設(shè)備)是網(wǎng)絡(luò)的一部分,且10個(gè)節(jié)點(diǎn)被模擬為被感染的。此外,網(wǎng)絡(luò)中10%的節(jié)點(diǎn)被假定為惡意的,即使在蠕蟲攻擊之前。感染率β被估算約為0.117,這個(gè)數(shù)字被認(rèn)為接近因特網(wǎng)上所觀察到的SQL Slammer行為。該實(shí)驗(yàn)的示例性結(jié)果在圖13的圖1300中示出,檢測(cè)器的比例沿軸1302指示,存活節(jié)點(diǎn)的比例沿軸1304指示。圖13中的圖顯示,在網(wǎng)絡(luò)中,很小一部分檢測(cè)器節(jié)點(diǎn),例如0.001,可以是足夠的,以將蠕蟲感染限制在10%易受攻擊群體以下。
      參考所示的實(shí)施例描述和闡明了本發(fā)明的原理之后,可以認(rèn)識(shí)到,所示的實(shí)施例能夠在安排和細(xì)節(jié)上加以修改而不背離該原理。
      例如,一種方法可以包括在一接收計(jì)算設(shè)備處接收一含有程序標(biāo)識(shí)符和事件列表的自證明警報(bào),該程序標(biāo)識(shí)符標(biāo)識(shí)了含有所檢測(cè)到的易受攻擊性的程序,而該事件列表包含示出所檢測(cè)到的易受攻擊性的一個(gè)或多個(gè)非確定性事件;確定該接收計(jì)算設(shè)備是否包括含有所檢測(cè)到的易受攻擊性的程序;以及驗(yàn)證該事件列表示出了所檢測(cè)到的易受攻擊性。驗(yàn)證可以包括執(zhí)行程序中的事件列表。驗(yàn)證可以包括從程序指令中生成一邏輯安全條件;定義一定義在事件列表開始處的程序狀態(tài)的前置條件;定義一基于事件列表的易受攻擊謂詞;以及基于謂詞演算評(píng)估該邏輯安全條件、前置條件和易受攻擊謂詞。在該方法中,自證明警報(bào)可以包括一用于指示程序中檢測(cè)到的易受攻擊性的類型的易受攻擊性類型標(biāo)識(shí)符,且其中,驗(yàn)證包括引用該易受攻擊性類型標(biāo)識(shí)符。在該方法中,自證明警報(bào)可以包括提供事件列表如何示出所檢測(cè)到的易受攻擊性的指示的驗(yàn)證提示。驗(yàn)證該事件列表可以包括基于一條或多條驗(yàn)證提示修改事件列表,來觸發(fā)發(fā)信號(hào)通知成功驗(yàn)證的、裝載至程序的驗(yàn)證函數(shù)的執(zhí)行。在該方法中,事件列表可以用檢測(cè)感染嘗試的軟件或硬件探測(cè)從程序執(zhí)行期間記入日志的事件中導(dǎo)出。該方法還可以包括響應(yīng)于驗(yàn)證事件列表,將自證明警報(bào)轉(zhuǎn)發(fā)給至少一個(gè)其它節(jié)點(diǎn)。在轉(zhuǎn)發(fā)自證明警報(bào)之處,可以從覆蓋圖網(wǎng)絡(luò)中的相鄰節(jié)點(diǎn)集合中檢索至少一個(gè)其它節(jié)點(diǎn)的至少一個(gè)節(jié)點(diǎn)。在轉(zhuǎn)發(fā)自證明警報(bào)之處,至少一個(gè)其它節(jié)點(diǎn)的至少一個(gè)節(jié)點(diǎn)可以包括覆蓋圖網(wǎng)絡(luò)中的所有相鄰節(jié)點(diǎn)。該方法還可以包括基于事件列表生成補(bǔ)丁或過濾器以解決易受攻擊性。
      在另一示例中,在其上存儲(chǔ)有一自證明警報(bào)數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)可以包括第一數(shù)據(jù)字段,它包含表示標(biāo)識(shí)含有檢測(cè)到的對(duì)蠕蟲攻擊的易受攻擊性的程序標(biāo)識(shí)符的數(shù)據(jù);第二數(shù)據(jù)字段,它包含表示包含示出所檢測(cè)到的易受攻擊性的一個(gè)或多個(gè)非確定性事件的事件列表的數(shù)據(jù);以及第三數(shù)據(jù)字段,它包含表示指示在程序中檢測(cè)到的易受攻擊性的類型的易受攻擊性類型標(biāo)識(shí)符的數(shù)據(jù)。在該計(jì)算機(jī)可讀介質(zhì)中,易受攻擊性類型標(biāo)識(shí)符可以指示將程序的執(zhí)行重定向至任意代碼的能力、執(zhí)行任意代碼的能力、或向函數(shù)提供任意自變量的能力。該計(jì)算機(jī)可讀介質(zhì)還可以包括第四數(shù)據(jù)字段,它包含表示提供事件列表如何示出所檢測(cè)到的易受攻擊性的指示的一條或多條驗(yàn)證提示的數(shù)據(jù)。該一條或多條驗(yàn)證提示可以指示要被執(zhí)行的代碼的任意地址,或函數(shù)的任意自變量的事件列表中的事件和事件中的偏移量,取決于易受攻擊性的類型。該計(jì)算機(jī)可讀介質(zhì)還可以包括第五數(shù)據(jù)字段,它包含表示適用于解決所檢測(cè)到的易受攻擊性的補(bǔ)丁或過濾器中的至少一個(gè)的數(shù)據(jù)。
      在另一示例中,含有計(jì)算機(jī)可執(zhí)行組件的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)可以包括用于檢測(cè)蠕蟲攻擊的裝置、用于響應(yīng)于檢測(cè)到的蠕蟲生成自證明警報(bào)的裝置、用于將自證明警報(bào)分發(fā)到網(wǎng)絡(luò)覆蓋圖中至少一個(gè)其它節(jié)點(diǎn)的裝置。該計(jì)算機(jī)可讀介質(zhì)還可以包括結(jié)構(gòu)化網(wǎng)絡(luò)覆蓋圖的路由表和葉子集合中的至少一個(gè),其中,用于分發(fā)自證明警報(bào)的裝置訪問該路由表和葉子集合中的至少一個(gè)以確定至少一個(gè)其它節(jié)點(diǎn)。該計(jì)算機(jī)可讀介質(zhì)還可以包括用于減少對(duì)路由表中的條目的泄漏的裝置。用于生成自證明警報(bào)的裝置可以訪問一事件日志以確定示出可被蠕蟲攻擊惡意利用的程序中的易受攻擊性的至少一個(gè)非確定性事件。該計(jì)算機(jī)可讀介質(zhì)還可以包括用于確認(rèn)接收到的自證明警報(bào)的裝置,并且用于分發(fā)的裝置是由指示程序中的易受攻擊性和蠕蟲攻擊中的至少一個(gè)的接收到的自證明警報(bào)的驗(yàn)證所觸發(fā)的。
      在另一示例中,一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)含有計(jì)算機(jī)可讀指令,在這些指令被執(zhí)行時(shí),可以實(shí)現(xiàn)一種方法,該方法包含接收在計(jì)算系統(tǒng)的存儲(chǔ)器的第一部分中寫入或存儲(chǔ)所接收到的信息的指令;將第一臟指示符與該存儲(chǔ)器的第一部分相關(guān)聯(lián),如果接收到的信息是從一不可信來源或具有指示‘臟’臟指示符的存儲(chǔ)器部分中接收的,則該第一臟指示符指示‘臟’;接收將接收到的信息裝載至程序計(jì)數(shù)器或執(zhí)行接收到的信息的指令;以及如果第一臟指示符指示‘臟’,則提供對(duì)程序易受攻擊性的指示。裝載或執(zhí)行接收到的信息的接收到的指令可以包括移動(dòng)數(shù)據(jù)的指令、算術(shù)和邏輯指令、以及更改程序控制流的指令。提供對(duì)程序易受攻擊性的指示可以包括基于接收到的信息生成一補(bǔ)丁或過濾器。提供對(duì)程序易受攻擊性的指示可以包括向至少一個(gè)其它節(jié)點(diǎn)發(fā)送一自證明警報(bào)。該計(jì)算機(jī)可讀介質(zhì)還可以包含接收標(biāo)識(shí)覆蓋圖網(wǎng)絡(luò)中鄰近節(jié)點(diǎn)集合中的至少一個(gè)其它節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)符。該計(jì)算機(jī)可讀介質(zhì)還可以包含將一輸入事件標(biāo)識(shí)符與存儲(chǔ)器的第一部分相關(guān)聯(lián),該輸入事件標(biāo)識(shí)符標(biāo)識(shí)所接收信息的來源。第一臟指示符可以包括該輸入事件標(biāo)識(shí)符。該計(jì)算機(jī)可讀介質(zhì)還可以包含從接收到的信息計(jì)算一新數(shù)據(jù)、將該新數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的第二部分中、以及將第二臟指示符與該存儲(chǔ)器的第二部分相關(guān)聯(lián),如果接收到的信息是從一不可信來源或具有指示臟的臟指示符的存儲(chǔ)器部分中接收的,則第二臟指示符指示‘臟’。第二臟指示符可以包括一數(shù)據(jù)流圖,它指示從接收到的信息或從中接收信息的存儲(chǔ)器部分的臟指示符中的數(shù)據(jù)流圖中計(jì)算新數(shù)據(jù)的中至一個(gè)步驟。存儲(chǔ)器的第一部分可以包括由CPU寄存器、存儲(chǔ)器頁和該頁中的存儲(chǔ)器位置構(gòu)成的一組中的至少一個(gè)。存儲(chǔ)器的第一部分可以包括一存儲(chǔ)器位置,該存儲(chǔ)器位置是第一存儲(chǔ)器頁的一部分,該方法還包括基于第一臟指示符將一頁臟指示符與存儲(chǔ)器頁相關(guān)聯(lián)。接收將接收到的信息裝載至程序計(jì)數(shù)器或執(zhí)行該接收到的信息的指令可以包括接收?qǐng)?zhí)行該接收到信息的指令,如果第一臟指示符指示‘干凈’,那么檢查與存儲(chǔ)由接收到的信息引用的指令的存儲(chǔ)器的第三部分相關(guān)聯(lián)的第三臟指示符。該計(jì)算機(jī)可讀介質(zhì)還可以包括如果第三臟指示符指示‘臟’,則提供一程序易受攻擊性的指示。
      在又一示例中,一種方法可以包括維護(hù)跟蹤存儲(chǔ)的值的來源是不可信來源還是可信任來源的至少一個(gè)污染數(shù)據(jù)存儲(chǔ);在將存儲(chǔ)的值裝載至程序指針之前,檢查至少一個(gè)污染存儲(chǔ);如果至少一個(gè)污染數(shù)據(jù)存儲(chǔ)指示所存儲(chǔ)的值是來自一可信來源,則裝載所存儲(chǔ)的值;如果至少一個(gè)污染數(shù)據(jù)存儲(chǔ)指示所存儲(chǔ)的值是來自不可信任來源,則拒絕自動(dòng)裝載所存儲(chǔ)的值;以及響應(yīng)于拒絕自動(dòng)裝載所存儲(chǔ)的值,確定所存儲(chǔ)的值的存儲(chǔ)位置,并從至少一個(gè)污染數(shù)據(jù)存儲(chǔ)中確定所存儲(chǔ)的值的輸入源。至少一個(gè)污染數(shù)據(jù)存儲(chǔ)可以包括指示用于計(jì)算所存儲(chǔ)的值的一組步驟的數(shù)據(jù)流圖。確定輸入源可以包括確定所存儲(chǔ)的值的輸入源和該輸入源中的偏移量。該方法還可以包括如果至少一個(gè)污染數(shù)據(jù)存儲(chǔ)指示所存儲(chǔ)的值來自于一可信來源,則確定由所存儲(chǔ)的值所指向的指令是否來自于可信來源;以及僅當(dāng)所存儲(chǔ)的值和指令都來自于至少一個(gè)可信來源時(shí)執(zhí)行該指令。
      在又一示例中,含有計(jì)算機(jī)可執(zhí)行組件的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)可以包括用于使用動(dòng)態(tài)數(shù)據(jù)流分析來檢測(cè)蠕蟲攻擊的裝置;用于響應(yīng)于對(duì)蠕蟲攻擊的檢測(cè)生成警報(bào)的裝置;用于響應(yīng)于警報(bào)的生成分發(fā)警報(bào)的裝置。該計(jì)算機(jī)可讀介質(zhì)還可以包括用于基于檢測(cè)裝置的動(dòng)態(tài)數(shù)據(jù)流分析生成補(bǔ)丁或過濾器的裝置。用于生成警報(bào)的裝置可以包括用于至少分地基于檢測(cè)裝置的動(dòng)態(tài)數(shù)據(jù)流分析生成自證明警報(bào)的裝置。
      在再一示例中,一種方法可以包含檢索示出可被蠕蟲攻擊所惡意利用的程序易受攻擊性的第一執(zhí)行路徑;確定傳入消息中確定第一執(zhí)行路徑的至少一部分的至少一個(gè)字節(jié);確定所確定的字節(jié)上可以被測(cè)試以驗(yàn)證至少一個(gè)字節(jié)的存在的至少一個(gè)條件;使用至少一個(gè)條件來測(cè)試新消息的至少一部分以檢測(cè)蠕蟲攻擊的存在;基于該測(cè)試拒絕處理該新消息。第一執(zhí)行路徑可以從用來檢測(cè)易受攻擊性的事件日志中導(dǎo)出。該方法還可以包含從另一計(jì)算設(shè)備處接收一自證明警報(bào),且其中,檢索第一執(zhí)行路徑可以包括對(duì)該自證明警報(bào)進(jìn)行語法分析以檢索事件列表。確定至少一個(gè)條件可以包括當(dāng)臟存儲(chǔ)器部分用來控制流決策時(shí),記錄在來自該臟存儲(chǔ)器部分的數(shù)據(jù)計(jì)算的邏輯操作。該方法還可以包括將一過濾器條件初始化為‘真’,且其中,記錄包括根據(jù)過濾器條件的前一值和至少一個(gè)條件的邏輯AND運(yùn)算更新該過濾器條件。該方法還可以包括記錄含有臟存儲(chǔ)器部分的數(shù)據(jù)流圖的指令序列。該方法還可以包括將過濾器條件包含在一指示易受攻擊性的自證明警報(bào)中,并將該自證明警報(bào)發(fā)送給另一計(jì)算設(shè)備。第一執(zhí)行路徑可以包括非確定性事件的事件列表。
      在另一示例中,一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)含有計(jì)算機(jī)可讀指令,當(dāng)這些指令被執(zhí)行時(shí),可以實(shí)現(xiàn)一種方法,該方法包含將一過濾器條件初始化為‘真’;確定與含有將被裝載至程序計(jì)數(shù)器或?qū)⒈粓?zhí)行的數(shù)據(jù)的存儲(chǔ)器部分相關(guān)聯(lián)的臟指示符的值;接收?qǐng)?zhí)行條件控制轉(zhuǎn)移的指令;基于過濾器條件前一值和該臟指示符的所確定的值,更新該過濾器條件;以及將該過濾器條件應(yīng)用于傳入消息以阻斷惡意利用程序中的易受攻擊性的蠕蟲攻擊。該一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)還可以包括從一檢測(cè)模塊接收對(duì)易受攻擊性的指示。該一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)還可以包括從一自證明警報(bào)接收對(duì)易受攻擊性的指示。該一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)還可以包括將過濾器條件包含在一指示易受攻擊性的自證明警報(bào)中,并向另一計(jì)算設(shè)備發(fā)送該自證明警報(bào)。臟指示符可以包括包含用于計(jì)算包含在存儲(chǔ)器部分內(nèi)值的指令序列的數(shù)據(jù)流圖。
      在又一示例中,含有計(jì)算機(jī)可執(zhí)行組件的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)可以包括用于自動(dòng)生成示出程序中可被蠕蟲惡意利用的易受攻擊性的指令序列的裝置;以及用于基于該指令序列自動(dòng)生成對(duì)該易受攻擊性的解決方案的裝置。用于自動(dòng)生成指令序列的裝置可以包括用于檢測(cè)蠕蟲攻擊的裝置。用于自動(dòng)生成指令序列的裝置可以包括用于證明一接收到的自證明警報(bào)的裝置。用于自動(dòng)生成解決方案的裝置可以包括用于為惡意利用易受攻擊性的接收到的指令生成一過濾器的裝置。用于自動(dòng)生成解決方案的裝置可以包括生成對(duì)程序中的易受攻擊性的補(bǔ)丁的裝置。該一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)還可以包括用于生成含有該指令序列和解決方案的至少一部分的自證明警報(bào)的裝置。該一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)還可以包括用于向網(wǎng)絡(luò)覆蓋圖中的至少一個(gè)其它節(jié)點(diǎn)分發(fā)該自證明警報(bào)的裝置。
      鑒于可應(yīng)用本發(fā)明的原理的多種可能的實(shí)施例,應(yīng)該認(rèn)識(shí)到,這些詳細(xì)實(shí)施例僅僅是說明性的,且不應(yīng)該作為本發(fā)明的范圍的限制。相反,要求保護(hù)落入所附權(quán)利要求書及其等效技術(shù)方案的范圍和精神之內(nèi)的所有這些實(shí)施例作為本發(fā)明。
      權(quán)利要求
      1.一種方法,包括a)在一接收計(jì)算設(shè)備上接收一含有程序標(biāo)識(shí)符和事件列表的自證明警報(bào),所述程序標(biāo)識(shí)符標(biāo)識(shí)了含有所檢測(cè)到的易受攻擊性的程序,且所述事件列表包含示出所檢測(cè)到的易受攻擊性的一個(gè)或多個(gè)非確定性事件;b)確定所述接收計(jì)算設(shè)備是否包括含有所檢測(cè)到的易受攻擊性的程序;以及c)驗(yàn)證所述事件列表示出了所檢測(cè)到的易受攻擊性。
      2.如權(quán)利要求1所述的方法,其特征在于,驗(yàn)證包括執(zhí)行所述程序中的事件列表。
      3.如權(quán)利要求1所述的方法,其特征在于,驗(yàn)證包括從所述程序的指令中生成一邏輯安全條件;定義一定義所述程序在所述事件列表的開始處的狀態(tài)的前置條件;基于所述事件列表定義一易受攻擊謂詞;以及基于謂詞演算評(píng)估所述邏輯安全條件、前置條件和易受攻擊謂詞。
      4.如權(quán)利要求1所述的方法,其特征在于,所述自證明警報(bào)包括一用于指示所述程序中檢測(cè)到的易受攻擊性的類型的易受攻擊性類型標(biāo)識(shí)符,且其中,驗(yàn)證包括引用所述易受攻擊性類型標(biāo)識(shí)符。
      5.如權(quán)利要求1所述的方法,其特征在于,所述自證明警報(bào)包括提供所述事件列表如何示出所檢測(cè)到的易受攻擊性的指示的一條或多條驗(yàn)證提示。
      6.如權(quán)利要求1所述的方法,其特征在于,還包含接收在計(jì)算系統(tǒng)的存儲(chǔ)器的第一部分中寫入或存儲(chǔ)接收到的信息的指令;將第一臟指示符與所述存儲(chǔ)器的第一部分相關(guān)聯(lián),如果接收到的信息是從一不可信來源或具有指示‘臟’的臟指示符的存儲(chǔ)器部分中接收的,則所述第一臟指示符指示‘臟’;接收將接收到的信息裝載至程序計(jì)數(shù)器或執(zhí)行接收到信息的指令;以及如果所述第一臟指示符指示‘臟’,則生成指示程序易受攻擊性的自證明警報(bào),它含有程序標(biāo)識(shí)符和事件列表,所述事件序列指示在接收寫入或存儲(chǔ)指令、關(guān)聯(lián)第一臟指示符、以及接收裝載接收到的信息的指令的操作期間記入日志的一個(gè)或多個(gè)事件。
      7.如權(quán)利要求6所述的方法,其特征在于,還包含將一輸入事件標(biāo)識(shí)符與所述存儲(chǔ)器的第一部分相關(guān)聯(lián),所述輸入事件標(biāo)識(shí)符標(biāo)識(shí)了接收到信息的來源。
      8.如權(quán)利要求6所述的方法,其特征在于,還包含從接收到的信息計(jì)算一新數(shù)據(jù)、將所述新數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)器的第二部分中、以及將第二臟指示符與所述存儲(chǔ)器的第二部分關(guān)聯(lián),如果接收到的信息是從一不可信來源或具有指示臟的臟指示符的存儲(chǔ)器部分中接收的,則所述第二臟指示符指示‘臟’。
      9.如權(quán)利要求8所述的方法,其特征在于,所述第二臟指示符包括一數(shù)據(jù)流圖,它指示從接收到的信息或從其接收信息的存儲(chǔ)器部分的臟指示符中的數(shù)據(jù)流圖中計(jì)算新數(shù)據(jù)的至少一個(gè)步驟。
      10.如權(quán)利要求6所述的方法,其特征在于,接收將接收到的信息裝載至程序計(jì)數(shù)器或執(zhí)行接收到的信息的指令包括接收?qǐng)?zhí)行接收到的信息的指令,如果所述第一臟指示符指示‘干凈’,則所述方法還包括檢查與存儲(chǔ)由接收到的信息引用的指令的存儲(chǔ)器的第三部分相關(guān)聯(lián)的第三臟指示符。
      11.如權(quán)利要求1所述的方法,其特征在于,還包括響應(yīng)于驗(yàn)證所述事件列表,向網(wǎng)絡(luò)覆蓋圖中由節(jié)點(diǎn)標(biāo)識(shí)符標(biāo)識(shí)的至少一個(gè)相鄰節(jié)點(diǎn)轉(zhuǎn)發(fā)所述自證明警報(bào)。
      12.如權(quán)利要求1所述的方法,其特征在于,還包括基于所述事件列表生成補(bǔ)丁或過濾器的至少一個(gè)以解決所述易受攻擊性。
      13.一個(gè)或多個(gè)含有計(jì)算機(jī)可執(zhí)行組件的計(jì)算機(jī)可讀介質(zhì),包含a)用于使用動(dòng)態(tài)數(shù)據(jù)流分析來檢測(cè)對(duì)蠕蟲攻擊的易受攻擊性的裝置;b)用于響應(yīng)于一所檢測(cè)到的蠕蟲生成一自證明警報(bào)的裝置,所述自證明警報(bào)包含i)第一數(shù)據(jù)字段,它包含表示標(biāo)識(shí)含有所檢測(cè)到對(duì)蠕蟲攻擊的易受攻擊性的程序的標(biāo)識(shí)符的數(shù)據(jù);ii)第二數(shù)據(jù)字段,它包含表示包含示出所述易受攻擊性的一個(gè)或多個(gè)非確定性事件的事件列表的數(shù)據(jù);以及iii)第三數(shù)據(jù)字段,它包含表示用于指示在所述程序中檢測(cè)到的易受攻擊性的類型的易受攻擊性類型標(biāo)識(shí)符的數(shù)據(jù)。
      14.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述自證明警報(bào)還包括第四數(shù)據(jù)字段,它包含表示提供所述事件列表如何示出所述易受攻擊性的指示的一條或多條驗(yàn)證提示的數(shù)據(jù),所述驗(yàn)證提示指示將被執(zhí)行的代碼的任意地址、將被執(zhí)行的任意代碼或函數(shù)的任意自變量的事件列表中的事件和事件中的偏移量,取決于所述易受攻擊性類型。
      15.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述易受攻擊性類型指示將程序執(zhí)行重定向至任意代碼的能力、執(zhí)行任意代碼的能力、或?qū)瘮?shù)提供任意自變量的能力。
      16.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于向網(wǎng)絡(luò)覆蓋圖中的至少一個(gè)其它節(jié)點(diǎn)分發(fā)所述自證明警報(bào)的裝置。
      17.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,用于檢測(cè)的所述裝置創(chuàng)建一含有示出所述易受攻擊性的至少一個(gè)非確定性事件的事件日志。
      18.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于確認(rèn)接收到的自證明警報(bào)的裝置,包括使用所提供的提示修改所述事件列表,以觸發(fā)發(fā)信號(hào)通知成功驗(yàn)證的、裝載至程序的驗(yàn)證函數(shù)的執(zhí)行。
      19.一種方法,包括a)從一自證明警報(bào)中檢索第一執(zhí)行路徑,所述第一執(zhí)行路徑示出可由蠕蟲攻擊惡意利用的程序的易受攻擊性;b)確定傳入消息中確定所述第一執(zhí)行路徑的至少一部分的至少一個(gè)字節(jié);c)確定所確定的字節(jié)上可以被測(cè)試以驗(yàn)證所述至少一個(gè)字節(jié)的存在的至少一個(gè)條件;d)使用所述至少一個(gè)條件測(cè)試一新消息的至少一部分,以檢測(cè)蠕蟲攻擊的存在。e)基于所述測(cè)試拒絕處理所述新消息。
      20.如權(quán)利要求19所述的方法,其特征在于,確定至少一個(gè)條件包括當(dāng)臟存儲(chǔ)器部分在控制流決策中使用時(shí),記錄在來自該臟存儲(chǔ)器部分的數(shù)據(jù)上計(jì)算的邏輯操作。
      21.一個(gè)或多個(gè)含有計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)所述指令被執(zhí)行時(shí),實(shí)現(xiàn)一種方法,所述方法包括a)從一自證明警報(bào)中接收程序中對(duì)蠕蟲攻擊的易受攻擊性的指示;b)將一過濾器條件值初始化為‘真’;c)確定與含有將被裝載至程序計(jì)數(shù)器或?qū)⒈粓?zhí)行的數(shù)據(jù)的存儲(chǔ)器部分相關(guān)聯(lián)的臟指示符的值;d)接收?qǐng)?zhí)行條件控制轉(zhuǎn)移的指令;e)基于所述過濾器的前一值和所確定的所述臟指示符的值更新所述過濾器條件;以及f)將所述過濾器條件應(yīng)用于一傳入消息以阻斷惡意利用所述易受攻擊性的蠕蟲攻擊。
      22.如權(quán)利要求9所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述臟指示符包括一數(shù)據(jù)流圖,它包括用于計(jì)算包含在所述存儲(chǔ)器部分中的值的指令序列。
      全文摘要
      一種遏制系統(tǒng)可以包括生成和/或發(fā)送一警報(bào),作為安全共享關(guān)于已檢測(cè)到的蠕蟲的知識(shí)的基礎(chǔ)。警報(bào)可以含有證明給定程序含有易受攻擊性的信息。該警報(bào)可以是自證明的,這樣其真實(shí)性可以由一計(jì)算系統(tǒng)獨(dú)立地驗(yàn)證。
      文檔編號(hào)G06F21/56GK1725759SQ20051008752
      公開日2006年1月25日 申請(qǐng)日期2005年7月21日 優(yōu)先權(quán)日2004年7月21日
      發(fā)明者M·科斯塔, M·卡斯特羅, A·羅斯特隆, J·克勞克羅福特 申請(qǐng)人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1