經(jīng)由靜態(tài)分析和虛擬補丁校正工作流安全漏洞的制作方法
【專利摘要】可以靜態(tài)分析計算機程序以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序。可以生成虛擬補丁。當由處理器執(zhí)行時,虛擬補丁可以追蹤從客戶端到計算機程序的web服務調(diào)用,以及確定從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關。如果確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關,則生成警告。
【專利說明】經(jīng)由靜態(tài)分析和虛擬補丁校正工作流安全漏洞
【技術(shù)領域】
[0001 ] 在此描述的布置涉及校正工作流漏洞。
【背景技術(shù)】
[0002]虛擬補丁是處理web應用中的安全漏洞的普遍手段。當發(fā)現(xiàn)新的漏洞時,開發(fā)者可以通過發(fā)布安全補丁來響應于該漏洞。這出于開發(fā)修復、測試修復和安裝所需的時間量,該時間量可能相當長。同時,補丁在漏洞存在時確保軟件系統(tǒng)的安全。此外,虛擬補丁允許管理者審查、測試和計劃官方補丁更新,而不使系統(tǒng)在中間時段處于風險。
[0003]與傳統(tǒng)補丁不同,虛擬補丁允許在不改變應用的程序代碼、其庫、操作系統(tǒng)或甚至其運行的系統(tǒng)的情況下,為該應用打補丁。虛擬補丁的目的是通過控制向應用的輸入或來自應用的輸出來修復問題。實現(xiàn)虛擬補丁的通常方法是在應用前放置某種類型的代理或內(nèi)嵌包操縱器,以控制來自應用的輸入或輸出。
【發(fā)明內(nèi)容】
[0004]在本說明書中公開的一個或多個實施例涉及校正工作流安全漏洞。
[0005]實施例可以包括一種用于校正工作流安全漏洞的方法。該方法可以包括經(jīng)由第一處理器靜態(tài)分析計算機程序的客戶端側(cè)代碼以確定意圖通過計算機程序?qū)崿F(xiàn)客戶端側(cè)工作流的順序。基于靜態(tài)分析,可以生成虛擬補丁。虛擬補丁當由第一處理器或第二處理器執(zhí)行時可以被配置為執(zhí)行可執(zhí)行操作。可執(zhí)行操作可以包括追蹤從客戶端到計算機程序的web服務調(diào)用,并確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)客戶端側(cè)工作流的順序關聯(lián)。可執(zhí)行操作還可以包括響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關而生成警告。所述方法還包括配置要應用于托管計算機程序的處理系統(tǒng)的虛擬補丁。
[0006]另一實施例可以包括一種用于校正工作流安全漏洞的方法。所述方法可以包括經(jīng)由由處理器執(zhí)行的虛擬補丁追蹤從客戶端到計算機程序的web服務調(diào)用。關于從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關可以做出確定。響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關,可以生成指示從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關的
敬生
目口 ο
[0007]另一實施例可以包括一種具有第一處理器的系統(tǒng)。第一處理器可以被配置為啟動可執(zhí)行的操作??蓤?zhí)行的操作可以包括靜態(tài)分析計算機程序的客戶端側(cè)代碼以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序。基于靜態(tài)分析,可以生成虛擬補丁。虛擬補丁可以被配置為當由第一處理器或第二處理器執(zhí)行時執(zhí)行可執(zhí)行的操作??蓤?zhí)行的操作可以包括追蹤從客戶端到計算機程序的web服務調(diào)用,并確定從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關??蓤?zhí)行的操作還可以包括,響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關而生成警告。虛擬補丁可以被配置為應用于托管計算機程序的處理系統(tǒng)。
[0008]另一實施例可以包括一種用于校正工作流安全漏洞的計算機程序產(chǎn)品。計算機程序產(chǎn)品可以包括具有在其上存儲的程序代碼的計算機可讀存儲介質(zhì),當執(zhí)行所述程序代碼時,其配置第一處理器以執(zhí)行可執(zhí)行的程序??蓤?zhí)行的程序可以包括靜態(tài)分析計算機程序的客戶端側(cè)代碼以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序?;陟o態(tài)分析,可以生成虛擬補丁。虛擬補丁可以被配置為當由第一處理器或第二處理器執(zhí)行時執(zhí)行可執(zhí)行的操作??蓤?zhí)行的操作可以包括追蹤從客戶端到計算機程序的web服務調(diào)用,并確定從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關??蓤?zhí)行的操作還可以包括,響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關而生成警告。虛擬補丁可以被配置為應用于托管計算機程序的處理系統(tǒng)。
【專利附圖】
【附圖說明】
[0009]圖1是圖示根據(jù)在本說明書內(nèi)公開的實施例的校正工作流安全漏洞的方法的流程圖。
[0010]圖2是圖示根據(jù)在本說明書內(nèi)公開的實施例的請求通過計算機程序執(zhí)行的示例的一系列操作的流程圖。
[0011]圖3是圖示根據(jù)在本說明書內(nèi)公開的實施例的校正工作流安全漏洞的方法的流程圖。
[0012]圖4是圖示根據(jù)在本說明書內(nèi)公開的另一實施例的校正工作流安全漏洞的方法的流程圖。
[0013]圖5是圖示根據(jù)在本說明書內(nèi)公開的實施例的校正工作流安全漏洞的處理系統(tǒng)的框圖。
【具體實施方式】
[0014]所屬【技術(shù)領域】的技術(shù)人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各個方面還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。
[0015]可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、固態(tài)硬盤(SSD)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(⑶-ROM)、數(shù)字通用光盤(DVD)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0016]計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0017]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0018]可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向?qū)ο蟮某绦蛟O計語言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設計語言一諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。
[0019]下面將參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以通過計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0020]也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令使得計算機、其它可編程數(shù)據(jù)處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)0
[0021]計算機程序指令還可以被加載到計算機、其他可編程數(shù)據(jù)處理裝置、或其他設備上,以使得在計算機、其他可編程數(shù)據(jù)處理裝置、或其他設備上執(zhí)行一系列可操作的步驟,以產(chǎn)生計算機實現(xiàn)的過程,使得在計算機、其他可編程數(shù)據(jù)處理裝置上執(zhí)行的指令提供用于實現(xiàn)在流程圖和/或一個或多個方框中規(guī)定的功能/動作的過程。
[0022]為了圖示的簡單和清楚,圖中示出的元件不一定按比列繪制。例如,為了清楚可以相對于其他元件夸大元件中的一些的尺寸。此外,如認為合適,在圖中重復參考標號以指示對應的、類似的或相同的特征。
[0023]在此描述的布置涉及校正工作流安全漏洞,例如使用靜態(tài)分析和虛擬補丁。靜態(tài)分析可以應用于計算機程序以分析計算機程序的客戶端側(cè)代碼以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序。基于靜態(tài)分析,可以生成虛擬補丁,并將該虛擬補丁應用于監(jiān)視到計算機程序的web服務調(diào)用。在利用客戶端設備(下文中的“客戶端”)建立客戶端會話期間,可以追蹤從客戶端到計算機程序的web服務調(diào)用。對于每個客戶端會話,虛擬補丁可以確定從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關。響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關的虛擬補丁,虛擬補丁可以生成指示該情況的警告。通過使用虛擬補丁以該方式驗證web服務調(diào)用,通過將虛擬補丁應用于控制對計算機程序的輸入和/或來自計算機程序的輸出可以容易地更新計算機程序,而不需要更新計算機程序中的其他代碼。因此,可以快速部署虛擬補丁,而不需要對計算機程序執(zhí)行大量測試。
[0024]如在此使用的,術(shù)語“虛擬補丁”意指應用于監(jiān)視到計算機程序的服務調(diào)用的應用、模塊或功能,并且當安裝該虛擬補丁時不改變計算機程序的程序代碼或其庫。例如,虛擬補丁可以安裝到或應用于web應用防火墻以執(zhí)行一個或多個特定功能,并且可以在任何點處移除虛擬補丁,而不需要改變計算機程序中的代碼以補償虛擬補丁的移除。這就是說,虛擬補丁可以被應用于解決一個或多個特定安全漏洞,并且當移除虛擬補丁時,可以更新計算機程序的代碼以解決先前由虛擬補丁解決的一個或多個特定安全漏洞。因此,虛擬補丁可以用作臨時修復,雖然這不一定發(fā)生。
[0025]圖1是圖示根據(jù)在本說明書內(nèi)公開的一個實施例的校正工作流安全漏洞的方法的流程圖100。服務器105 (例如,web服務器)、或其他適當?shù)奶幚硐到y(tǒng)可以托管計算機程序110,例如web應用。可以通過安全分析應用120分析計算機程序110以確定在計算機程序110的客戶端側(cè)代碼115中是否存在一個或多個潛在的安全漏洞。如在此使用的,術(shù)語“客戶端側(cè)代碼”意指被配置為在客戶端會話期間向客戶端提供的計算機程序的代碼。在圖示中,可以在計算機程序110的web頁面中包含客戶端側(cè)代碼115,該計算機程序110的web頁面被配置為用于向訪問計算機程序110的客戶端呈現(xiàn)。如果客戶端側(cè)代碼115容易被客戶端側(cè)用戶惡意使用,則客戶端側(cè)代碼115中存在安全漏洞。
[0026]表I提供可能容易被惡意使用的客戶端側(cè)代碼115的示例:
[0027]表I
[0028]
【權(quán)利要求】
1.一種用于校正工作流安全漏洞的方法,所述方法包括: 經(jīng)由第一處理器靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序;以及 基于靜態(tài)分析,生成虛擬補丁,所述虛擬補丁配置為當由第一處理器或第二處理器執(zhí)行時執(zhí)行可執(zhí)行操作,所述可執(zhí)行操作包括: 追蹤從客戶端到計算機程序的web服務調(diào)用; 確定從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序關聯(lián);以及 響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關,生成警告;以及 配置要應用于托管計算機程序的處理系統(tǒng)的虛擬補丁。
2.如權(quán)利要求1所述的方法,還包括: 靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定在計算機程序的客戶端側(cè)代碼中是否存在至少一個安全漏洞; 其中響應于確定在計算機程序的客戶端側(cè)代碼中存在至少一個安全漏洞,靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序。
3.如權(quán)利要求1所述的方法,其中靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序,包括:· 對配置為用于經(jīng)由客戶端設備通過計算機程序呈現(xiàn)的web頁面執(zhí)行靜態(tài)分析。
4.如權(quán)利要求1所述的方法,其中靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序,包括: 識別客戶端側(cè)工作流的候選近似的安全集。
5.如權(quán)利要求4所述的方法,還包括: 自動綜合記錄敏感執(zhí)行路徑的元數(shù)據(jù),并在虛擬補丁中包括所述元數(shù)據(jù)。
6.如權(quán)利要求1所述的方法,還包括: 將虛擬補丁應用于托管計算機程序的系統(tǒng); 在客戶端會話期間,經(jīng)由由第一處理器或第二處理器執(zhí)行虛擬補丁: 追蹤從客戶端到計算機程序的web服務調(diào)用; 確定從客戶端的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關;以及 響應于確定從客戶端的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關,生成指示從客戶端的web服務調(diào)用與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關的警告。
7.如權(quán)利要求6所述的方法,還包括: 響應于生成警告,使客戶端會話無效。
8.如權(quán)利要求7所述的方法,其中使客戶端會話無效,包括: 阻礙在客戶端會話中生成的web服務調(diào)用通信到計算機程序。
9.如權(quán)利要求7所述的方法,其中使客戶端會話無效,包括: 終止客戶端會話。
10.一種用于校正工作流安全漏洞的方法,所述方法包括: 經(jīng)由由處理器執(zhí)行的虛擬補丁: 追蹤從客戶端到計算機程序的Web服務調(diào)用; 確定從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關;以及 響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關,生成指示從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關的警告。
11.如權(quán)利要求10所述的方法,還包括: 響應于生成警告,使客戶端會話無效。
12.如權(quán)利要求10所述的方法,其中使客戶端會話無效,包括: 阻礙在客戶端會話中生成的web服務調(diào)用通信到計算機程序。
13.如權(quán)利要求10所述的方法, 其中使客戶端會話無效,包括: 終止客戶端會話。
14.一種系統(tǒng),包括: 第一處理器,其被配置為啟動可執(zhí)行操作,所述可執(zhí)行操作包括: 靜態(tài)分析計算機程序的客戶端側(cè)代碼以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序;以及 基于靜態(tài)分析,生成虛擬補丁,所述虛擬補丁配置為當由第一處理器或第二處理器執(zhí)行時執(zhí)行可執(zhí)行操作,所述可執(zhí)行操作包括: 追蹤從客戶端到計算機程序的web服務調(diào)用; 確定從客戶端到計算機程序的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關;以及 響應于確定從客戶端到計算機程序的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關,生成警告;以及配置要應用于托管計算機程序的處理系統(tǒng)的虛擬補丁。
15.如權(quán)利要求14所述的系統(tǒng),其中處理器進一步配置為啟動可執(zhí)行操作,包括: 靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定在計算機程序的客戶端側(cè)代碼中是否存在至少一個安全漏洞; 其中響應于確定在計算機程序的客戶端側(cè)代碼中存在至少一個安全漏洞,靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序。
16.如權(quán)利要求14所述的系統(tǒng),其中靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序,包括: 對配置為用于經(jīng)由客戶端設備通過計算機程序呈現(xiàn)的web頁面執(zhí)行靜態(tài)分析。
17.如權(quán)利要求14所述的系統(tǒng),其中靜態(tài)分析計算機程序的客戶端側(cè)代碼,以確定意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序,包括: 識別客戶端側(cè)工作流的候選近似的安全集。
18.如權(quán)利要求17所述的系統(tǒng),其中處理器進一步配置為啟動可執(zhí)行操作,包括: 自動綜合記錄敏感執(zhí)行路徑的元數(shù)據(jù),并在虛擬補丁中包括所述元數(shù)據(jù)。
19.如權(quán)利要求14所述的系統(tǒng),其中處理器進一步配置為啟動可執(zhí)行操作,包括: 將虛擬補丁應用于托管計算機程序的系統(tǒng); 在客戶端會話期間: 追蹤從客戶端到計算機程序的web服務調(diào)用; 確定從客戶端的web服務調(diào)用的順序是否與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序相關;以及 響應于確定從客戶端的web服務調(diào)用的順序與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關,生成指示從客戶端的web服務調(diào)用與意圖通過計算機程序?qū)崿F(xiàn)的客戶端側(cè)工作流的順序不相關的警告。
20.如權(quán)利要求19所述的系統(tǒng),其中處理器進一步配置為啟動可執(zhí)行操作,包括: 響應于生成警告,使客戶端會話無效。
21.如權(quán)利要求20所述的系統(tǒng),其中使客戶端會話無效,包括: 阻礙在客戶端會話中生成的web服務調(diào)用通信到計算機程序。
22.如權(quán)利要求20所述的方法,其中使客戶端會話無效,包括: 終止客戶端會話。
【文檔編號】G06F21/00GK103714293SQ201310447653
【公開日】2014年4月9日 申請日期:2013年9月25日 優(yōu)先權(quán)日:2012年9月28日
【發(fā)明者】E.貝斯克羅夫尼, O.特里普 申請人:國際商業(yè)機器公司