可被集成到軟件應用20中,以使得成功的掃描(其中未發(fā)現(xiàn)利用)與正確運行的應用20的組成部分;
?SVM僅需要掃描以它被集成到的軟件應用為目標的利用,而非掃描能夠以通常的計算機裝置為目標的所有利用。
[0042]如以上所討論的,系統(tǒng)證實模塊50被緊密地集成到軟件應用20中,以使得難以避開由SVM執(zhí)行的掃描。例如,能夠以許多方式實現(xiàn)這一點:
(a)在部署之前或在運行時間期間的某個時間,但在由SVM執(zhí)行的掃描之前,將軟件應用20起作用所需的數(shù)據(jù)或對于軟件應用20起作用關鍵的數(shù)據(jù)進行加密,然后作為成功掃描的結果解密該數(shù)據(jù);
(b)通過將由SVM執(zhí)行的掃描集成到由軟件應用20進行的過程調用中,尤其是集成到調用依賴庫60的那些過程調用中,從而使得失敗的掃描將會阻止執(zhí)行或完成過程調用,以使得關鍵數(shù)據(jù)不被傳遞給那些過程調用;
(c)通過在軟件應用20自身內使用模糊化技術(諸如,控制流平化和傳統(tǒng)防篡改檢查); (d)通過將防調試技術集成到軟件應用20中;
(e)通過SVM從一個或多個特許過程或信任的執(zhí)行環(huán)境執(zhí)行至少一些掃描。
[0043]通過SVM 50掃描利用,成功掃描(未檢測到利用的掃描)能夠因此導致加密數(shù)據(jù)變?yōu)榉羌用芑虺晒Φ剡M行功能調用。以這種方式,如果攻擊者使軟件應用20跳過由SVM執(zhí)行的掃描,則加密數(shù)據(jù)將不會變?yōu)榉羌用芑蛘邔⒉粫?zhí)行功能調用,并且軟件應用將會因此無法正確地運行。
[0044]SVM 50能夠在它的用于檢測利用的掃描期間使用許多不同技術,例如與在現(xiàn)有技術病毒掃描器中發(fā)現(xiàn)的技術類似的技術。能夠針對特定字節(jié)模式掃描磁盤和存儲器上的文件。與軟件應用20相關的文件(包括數(shù)據(jù)文件以及系統(tǒng)文件和依賴庫文件)能夠被掃描。應用二進制代碼以及在腳本環(huán)境(諸如,JavaScript)中運行的代碼能夠被掃描和保護。能夠通過該掃描來監(jiān)測系統(tǒng)屬性(諸如,CPU性能模式、磁盤使用模式和網(wǎng)絡帶寬使用)。系統(tǒng)調用模式能夠被用于尋找由攻擊表現(xiàn)出的特定特征。關于已知的良好的庫的統(tǒng)計數(shù)據(jù)(諸如,尺寸、字節(jié)模式或部分簽名)能夠被用于幫助增加關于掃描的準確性。
[0045]上述任何一個特定類型的信息可能不單獨引起對利用的準確檢測,但不同信息類型可被組合使用以提高準確性。ESF 30內所包含的特定簽名可包括用于積極識別的許多條件。能夠使用各種條件,諸如AND (例如,A AND B必須為真)、OR(例如,A OR B必須為真)、Ν0Τ(例如,A AND B但NOT C必須為真)、選擇(例如,A、B、C、D、E中的3個或更多個必須為真)或浮點值(例如,超過一個月的A的20%+B的35%+卡埃方(C)的10%必須小于1.0)。SVM應該被用于在軟件應用20的啟動期間或之后并且在尤其是對依賴或外部庫的重要過程調用之前的某個時間進行掃描。
[0046]簽名可能需要在超過一個地方(例如,在第一文件中以及在第二過程調用中的字節(jié)序列)進行測試或檢查以使攻擊者更加難以避開掃描。需要注意的是,許多利用能夠在軟件應用20已運行一些時間之后被啟動,因此,重要的是,隨著應用運行定期地執(zhí)行利用掃描??勺罴训卦诙鄠€線程中執(zhí)行這種掃描以使攻擊者和利用更加難以檢測掃描的定時并且使攻擊者或利用更加難以停止該掃描。當文件或庫已被成功地掃描時,可計算并且存儲文件或庫的簽名或哈希(hash),以使得在獲得新的ESF或簽名或哈希改變的時間之前,在文件或庫上可以不需要進一步掃描。
[0047]例如,通過破壞系統(tǒng)調用或文件訪問,攻擊者可試圖破壞SVM在它的掃描期間搜集信息的機制。為了消除這種可能性,SVM可將它搜集信息的方式隨機化。SVM還可搜集系統(tǒng)的已知的并且不可變的屬性。如果這些屬性被改變或不正確,則SVM可以能夠推導出它是攻擊或利用自身的目標。
[0048]雖然利用簽名文件30包含定義可在掃描期間檢測到的利用的簽名(諸如,針對搜索什么字節(jié)模式以及在哪里的指令),但它還可包含指定何時產(chǎn)生和/或遞送利用簽名文件30的時間信息。利用簽名文件30的例子被圖示在圖4中。ESF 30包含在圖4的實施例中被加密的利用簽名32、指示何時產(chǎn)生或遞送ESF的時間戳33和SVM 50能夠用來證實ESF 30的數(shù)字簽名34。
[0049]SVM可證實ESF 30是最新的或者它滿足一個或多個時間約束。例如,SVM可能需要ESF必須已在某個時間段內(例如,不超過一個星期前)被創(chuàng)建或遞送,并且如果ESF未在某個時間段內被創(chuàng)建或遞送,則軟件應用20可停止全功能運行,直至獲取滿足相同或不同時間約束的新的ESF。對于確保以下情況而言這種機制可能至關重要:當由攻擊發(fā)現(xiàn)組70識別出新的利用時,將會要求所有用戶在合理的時間段內獲得更新的ESF,更新的ESF具有用于識別新的利用的簽名。同時,針對具有舊的ESF的用戶,新的利用可以是有效的。攻擊者能夠篡改計算機裝置10中的相關時鐘,因此允許使用舊的ESF,并且為了避免這一點,計算機裝置10可包括安全時鐘以阻止時鐘反轉或系統(tǒng)時鐘篡改。
[0050]利用簽名文件優(yōu)選地也受到保護以免被發(fā)現(xiàn),從而禁止攻擊者獲得關于他們的利用如何被發(fā)現(xiàn)并且掃描的有價值的信息,因為這種信息能夠被用于快速地適應于制造不太能被SVM檢測到的新的利用。通過使用密鑰以某種方式將文件加密并且在應用內使用處于變換狀態(tài)下的文件,能夠執(zhí)行對ESF 30的保護。ESF優(yōu)選地也受到保護以免被篡改,否則攻擊者能夠例如進行改變,從而使得ESF搜索錯誤的簽名,或者他們能夠改變時間信息,因此允許使用舊的ESF。通過使用加密安全方法(諸如,使用數(shù)字簽名34,例如RSA簽名)以數(shù)字方式對文件進行簽名并且要求SVM證實簽名34,ESF能夠受到保護以免被篡改。另外,通過把SVM布置為僅將時間戳33的某些值視為有效,例如通過可被特定數(shù)字除盡,或通過成為某個預定義數(shù)學級數(shù)的最接近的值,能夠實現(xiàn)篡改保護,從而使得在允許范圍之外的值將會暗示ESF是不可信的并且應該被拒絕。
[0051]為了提高SVM在執(zhí)行掃描時的通用性,ESF可包含例如具有共享庫或動態(tài)鏈接庫形式的代碼,該代碼包含可由一些簽名32參考的例程。以這種方式,如果集成到SVM中的已有掃描技術不足以正確地識別利用,則能夠分發(fā)新的技術或對已有技術的修改作為ESF的一部分。這種代碼優(yōu)選地被以數(shù)字方式簽名并且受到保護以確保攻擊者不能使用這個功能對代碼進行修改或執(zhí)行他們自己的代碼或分析利用如何被檢測到。
[0052]軟件應用20優(yōu)選地包括用于頻繁地獲得最新利用簽名文件以使得能夠在利用影響實現(xiàn)軟件應用20的計算機裝置10的用戶群的大部分之前停止利用的方法。實現(xiàn)這一點的一種方式是使用互聯(lián)網(wǎng)連接將ESF從ESF源35遞送給軟件應用20,其中軟件應用要求它足夠頻繁地訪問互聯(lián)網(wǎng)。能夠使用主控更新的利用簽名文件的服務器(諸如,HTTP服務器)實現(xiàn)ESF源35,并且能夠需要軟件應用從服務器牽拉更新的ESF。另外,更新的ESF能夠被廣播到部署在用戶群的許多計算機裝置上的軟件應用的實例。可布置軟件應用20,從而使得如果它未能獲得被視為足夠新的ESF,則應用將會停止執(zhí)行它的主要功能,直至應用已能夠連接到ESF源35以獲得更新的ESF。為了在特定計算機裝置10上使ESF變得過時的可能性最小化,應用應該被布置為即使當前ESF未被視為太久也頻繁地試圖獲得較新的ESF文件。
[0053]當計算機裝置10請求利用簽名文件30時,ESF源35可返回包括對應時間戳的最新ESF版本。利用發(fā)現(xiàn)組70能夠保持ESF源35以在發(fā)現(xiàn)新的利用時保持最新的ESF。自動化腳本能夠由ESF源用于寫入同時期的時間戳33并且以數(shù)字方式對從利用發(fā)現(xiàn)組70遞送的最新ESF進行簽名。必須足夠頻繁地完成這種時間戳和數(shù)字簽名,以使得新的利用簽名被快速地遞送給計算機裝置。然而,必須小心使每個新更新的ESF足夠不同于以前的版本,以使得收集更新的ESF文件的攻擊者由于作為時間戳33的兩個特定版本之間的唯一或唯一顯著差異而不能獲得信息。為了幫助避免這種風險,某種隨機性(諸如,插入到ESF中的偽隨機值、ESF的隨機布局或插入到ESF中的隨機密鑰)可被用于減少對加密密鑰和ESF的其它方面的成功的嚴酷攻擊的風險。
[0054]攻擊發(fā)現(xiàn)組70能夠包括針對發(fā)布的關于利用的信息定期地掃描互聯(lián)網(wǎng)的一組人,和/或能夠包括執(zhí)行相同或類似功能的一系列自動化工具。當已發(fā)現(xiàn)利用時,針對能夠被用于檢測該利用的簽名和模式分析該利用。重要的是,當產(chǎn)生簽名時,它正確地識別利用并且不會導致許多誤報,誤報將會導致軟件應用的用戶的挫折和差的體驗。當已構造新的簽名時,ESF在ESF源被更新以包括新的簽名。需要注意的是,雖然一些利用可以超過一個不同軟件應用20為目標,但ESF 30優(yōu)選地僅包含以對應軟件應用20為目標的利用的簽名。
[0055]雖然在上述實施例中SVM 50被部署在軟件應用10的安全內核中,但在其它實施例中,類似SVM 150能夠被與軟件應用20分開地部署并且被用于保護一個或多個軟件應用120、120’、120",如圖5中所示。即使所述多個軟件應用120、120’、120〃中的兩個或更多個軟件應用由各自不同方開發(fā),也可實現(xiàn)這一點。通過以如下這種方式加密任何這種應用(或任何這種應用的部分)能夠保護任何這種應用:僅外部SVM 150能夠執(zhí)行需要的解密。在能夠運行任何這種軟件應用之前,SVM 150將會證實應用120、120’、120〃未被篡改并且沒有已知利用當前被部署在計算機裝置10上,例如沒有依賴庫60、60’、60〃被已知利用改變。如果通過掃描而發(fā)現(xiàn)計算機裝置20已沒有利用,則軟件應用