專利名稱:用于開發(fā)中的安全漏洞響應(yīng)管理的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及計(jì)算機(jī)系統(tǒng),更具體地說,涉及在開發(fā)中檢測(cè)和管理程序代碼 中的安全漏洞(vulnerability)。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)中的安全性是一個(gè)正在受到關(guān)注的話題。由于更難以利用系統(tǒng) 和操作系統(tǒng)級(jí)別的安全漏洞,所以較容易的web應(yīng)用層已成為黑客的主要關(guān)注點(diǎn)。例如,順 序查詢語(yǔ)言(SQL)注入和跨站腳本(XSQ被視為少數(shù)幾種頭號(hào)威脅。以上討論的兩個(gè)安全 性漏洞通常是可以避免的。例如,如果開發(fā)人員使用預(yù)置語(yǔ)句,則可以阻止SQL注入。此外, 輸出轉(zhuǎn)義(output escaping)可有效地增強(qiáng)web應(yīng)用以保護(hù)它們免于XSS利用。Microsoft 已發(fā)布了安全性開發(fā)生命周期(SDL)以在該機(jī)制方面幫助開發(fā)人員。若干工具和方法也可用于發(fā)現(xiàn)代碼中的風(fēng)險(xiǎn)。IBM fciti0nalTMAppSCanTM通過模 仿攻擊web應(yīng)用來執(zhí)行動(dòng)態(tài)應(yīng)用安全性測(cè)試以便發(fā)現(xiàn)安全漏洞。此工具作用于內(nèi)置在可執(zhí) 行組件中以便測(cè)試的代碼并因而應(yīng)用于運(yùn)行時(shí)。其他方法使用靜態(tài)代碼安全性分析工具來 在應(yīng)用開發(fā)期間查找不安全的代碼模式(污染的執(zhí)行流),例如,使用白盒或灰盒方法來通 過代碼分析識(shí)別安全漏洞。可以在未完成構(gòu)建的情況下(例如,在開發(fā)期間)應(yīng)用這些靜 態(tài)分析工具。對(duì)程序中數(shù)據(jù)污染流的檢測(cè)相對(duì)較準(zhǔn)確,但即使如此,靜態(tài)分析仍無法準(zhǔn)確判 斷執(zhí)行流中是否存在已有的清理(sanitization)處理以及其有效程度。這些方法在準(zhǔn)確 性方面仍然具有限制并需要開發(fā)人員的檢查。當(dāng)前用于安全開發(fā)的典型操作是使用靜態(tài)分析和動(dòng)態(tài)測(cè)試工具來查找安全漏 洞,然后在諸如 IBM Rational ClearCase (CC)和 IBM Rational ClearQuest (CQ)之 類的缺陷(bug)控制系統(tǒng)中生成安全性票(ticket),并使編程人員修復(fù)代碼并關(guān)閉票;然 后一直等待直到測(cè)試階段,并且再次執(zhí)行整體安全性分析以查找漏洞。上述操作可存在若干限制。沿污染流可存在沖突的清理并且可在不同階段(輸入 階段、數(shù)據(jù)庫(kù)(DB)訪問階段,或頁(yè)面顯示階段)完成清理以修復(fù)安全性漏洞。通常,負(fù)責(zé)的 開發(fā)人員對(duì)于不同階段而言是不同的。假定兩個(gè)開發(fā)人員都熟悉安全性并使用HtmlEntity 轉(zhuǎn)義來防止XSS攻擊。則他們可能錯(cuò)誤地重復(fù)轉(zhuǎn)義,例如,一個(gè)開發(fā)人員將‘〈’轉(zhuǎn)義為 ‘< ;,并且數(shù)據(jù)被存入數(shù)據(jù)庫(kù),稍后,另一開發(fā)人員從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)并進(jìn)一步將‘< ;, 轉(zhuǎn)義為‘& ;It ; ’。動(dòng)態(tài)測(cè)試可發(fā)現(xiàn)此類情況,但是如上所述,其必須一直等待直到代碼 構(gòu)建。如上所述,漏洞位置和理想的清理代碼通常未位于一起。例如,當(dāng)用戶輸入被直接 用于連接SQL查詢并用于訪問數(shù)據(jù)庫(kù)(DB)時(shí),將出現(xiàn)SQL注入安全漏洞,但是有時(shí)清理位 置可能在接受用戶輸入的jsp頁(yè)面中。因此,檢查者難以將清理代碼與CQ中的安全性票相 關(guān)聯(lián)。由于初級(jí)的開發(fā)人員可能經(jīng)常重復(fù)犯同樣的錯(cuò)誤,所以類似的安全漏洞模式經(jīng)常 發(fā)生。反復(fù)修復(fù)類似漏洞會(huì)導(dǎo)致重復(fù)的工作。此外,修補(bǔ)漏洞會(huì)花費(fèi)更多的時(shí)間。例如,在每次測(cè)試反復(fù)中執(zhí)行安全性檢查和修補(bǔ)漏洞的效率將低于在開發(fā)期間執(zhí)行所述操作。后者 可幫助開發(fā)人員更準(zhǔn)確地進(jìn)行判斷,因?yàn)殚_發(fā)人員更了解代碼結(jié)構(gòu)和漏洞修補(bǔ)上下文。進(jìn) 而,執(zhí)行清理的代碼可因某些非安全性原因(方法名稱、功能性等)而改變,這意味著安全 漏洞會(huì)重新出現(xiàn),并且需要重新檢查漏洞。
發(fā)明內(nèi)容
提供了一種用于開發(fā)中的安全漏洞響應(yīng)管理的方法和系統(tǒng)。在一個(gè)方面中,所述 方法可包括檢測(cè)匹配安全漏洞模式的代碼實(shí)例,以及生成與所述代碼實(shí)例關(guān)聯(lián)的一個(gè)或多 個(gè)提示以響應(yīng)所述檢測(cè)。所述方法還可包括檢索對(duì)匹配安全漏洞模式的代碼實(shí)例的操作響 應(yīng),以及將所檢索的操作響應(yīng)與所述代碼實(shí)例關(guān)聯(lián)。在一個(gè)方面中,用于開發(fā)中的安全漏洞響應(yīng)管理的系統(tǒng)可包括處理器;以及可 操作以檢測(cè)匹配安全漏洞模式的代碼實(shí)例的模塊。所述模塊還可操作以生成與所述代碼實(shí) 例關(guān)聯(lián)的一個(gè)或多個(gè)提示以響應(yīng)檢測(cè)到匹配安全漏洞模式的代碼實(shí)例。所述模塊還可操作 以檢索對(duì)匹配安全漏洞模式的代碼實(shí)例的操作響應(yīng),以及將所檢索的操作響應(yīng)與所述代碼 實(shí)例關(guān)聯(lián)。以下參考附圖詳細(xì)描述了各種實(shí)施例的進(jìn)一步的特性以及結(jié)構(gòu)和操作。在附圖 中,相同的標(biāo)號(hào)指示相同的或功能類似的元素。
圖1是示出本發(fā)明的一個(gè)實(shí)施例中的管理安全漏洞的方法和清理方法的流程圖;圖2示出了與樣例模式關(guān)聯(lián)的知識(shí)的實(shí)例,借助所述模式,本發(fā)明的系統(tǒng)和方法 可導(dǎo)出與計(jì)算機(jī)程序或代碼中暴露的潛在安全漏洞有關(guān)的提示;圖3示出了本發(fā)明一個(gè)實(shí)施例中的呈現(xiàn)代碼中發(fā)現(xiàn)的潛在安全漏洞和可能的修 復(fù)的用戶接口屏幕快照;圖4示出了系統(tǒng)如何在代碼重寫期間維護(hù)安全性檢查信息;圖5示出了其中可實(shí)現(xiàn)或執(zhí)行本發(fā)明的系統(tǒng)和方法的計(jì)算機(jī)系統(tǒng)的實(shí)例;以及圖6示出根據(jù)本發(fā)明實(shí)施例的用于開發(fā)中的安全漏洞響應(yīng)管理的系統(tǒng)框圖。
具體實(shí)施例方式在一個(gè)方面中,本發(fā)明提供了 一種通過檢查來自現(xiàn)有漏洞和/或可參照的數(shù)據(jù)安 全清理代碼的提示來幫助開發(fā)人員編寫安全代碼的系統(tǒng)和方法。根據(jù)本發(fā)明實(shí)施例的方法 包括步驟檢測(cè)匹配安全漏洞模式的代碼實(shí)例;使用處理器生成與所述代碼實(shí)例關(guān)聯(lián)的一 個(gè)或多個(gè)提示以響應(yīng)所述檢測(cè);檢索對(duì)匹配安全漏洞模式的代碼實(shí)例的操作響應(yīng);以及將 所檢索的操作響應(yīng)與所述代碼實(shí)例關(guān)聯(lián)。其中所述檢索步驟可進(jìn)一步包括接收與所述操作響應(yīng)相關(guān)的上下文;存儲(chǔ)所述 上下文與所述操作響應(yīng)的關(guān)聯(lián)、所述代碼實(shí)例的位置和所述上下文;以及響應(yīng)于所述上下 文被更改,重新評(píng)估所述上下文與所述操作響應(yīng)的關(guān)聯(lián)并提醒修改所述操作響應(yīng)。其中所 述上下文可包括將修補(bǔ)安全漏洞的一個(gè)或多個(gè)位置。此處的漏洞或安全性漏洞指可由不適當(dāng)?shù)拇a編程導(dǎo)致的應(yīng)用安全漏洞,其會(huì)受到攻擊者的利用。此處的提示指從先前的最佳實(shí)踐推斷出的安全性編程知識(shí)。作為 一個(gè)實(shí)例,對(duì)于· jsp頁(yè)面(例如圖3所示)中的<%= display content 部分,如 果display content直接來自用戶輸入“Userlnput”,則可能具有跨站腳本漏洞。在此 類實(shí)例情況中的最佳實(shí)踐將是在作為display content之前驗(yàn)證herhput,如<% = IsSafe(Userlnput) % >。例如,本發(fā)明的系統(tǒng)和方法可跟蹤和分析開發(fā)中的代碼修改。開發(fā)中的分析指在 代碼開發(fā)期間(即,在編寫代碼期間)執(zhí)行分析,而不是在開發(fā)代碼之后執(zhí)行分析。本發(fā)明 的系統(tǒng)和方法可提供已發(fā)現(xiàn)漏洞(即,代碼中的潛在安全漏洞)和對(duì)應(yīng)清理位置的開發(fā)中 的管理。本發(fā)明的系統(tǒng)和方法還可借助積累的知識(shí)生成自適應(yīng)提示以協(xié)助開發(fā)人員修復(fù)未 來漏洞。自適應(yīng)提示指基于上下文的提示,其例子包括與提示關(guān)聯(lián)代碼的代碼相似性、作者 關(guān)系以及項(xiàng)目關(guān)系,執(zhí)行鏈中的其他節(jié)點(diǎn)的任何已有修復(fù)等。與僅檢測(cè)安全漏洞并完全依 靠開發(fā)人員修復(fù)漏洞和關(guān)閉安全漏洞票的傳統(tǒng)工具相比,本發(fā)明的系統(tǒng)和方法不僅可以檢 測(cè)安全漏洞,而且還在代碼上下文中將其與數(shù)據(jù)清理操作關(guān)聯(lián)。利用此知識(shí),在一個(gè)實(shí)施例 中,本發(fā)明的系統(tǒng)和方法可發(fā)展其能力并在開發(fā)生命周期內(nèi)生成提示。本發(fā)明的系統(tǒng)和方 法還可提供檢查和培訓(xùn)功能,使得開發(fā)人員可在代碼開發(fā)期間學(xué)習(xí)其他開發(fā)人員的已有最 佳實(shí)踐。圖1是示出本發(fā)明的一個(gè)實(shí)施例中的管理安全漏洞的方法和清理方法的流程圖。 在102,在一個(gè)實(shí)施例中,系統(tǒng)從代碼發(fā)現(xiàn)潛在的安全漏洞。所述發(fā)現(xiàn)可基于動(dòng)態(tài)和/或靜 態(tài)分析工具內(nèi)的預(yù)定模式??梢砸哉齽t表達(dá)式描述模式。還可以例如通過靜態(tài)分析識(shí)別安 全漏洞的執(zhí)行流。在104,借助樣例模式所表示的已有知識(shí),系統(tǒng)推斷其在判斷所報(bào)告的安全漏洞中 可向開發(fā)人員提供何種提示,例如,使用窗口顯示相應(yīng)的代碼片段。在106,基于步驟104的決策,系統(tǒng)提示開發(fā)人員采取操作,并呈現(xiàn)知識(shí)的提示???在執(zhí)行流視圖中顯示提示以更好地將編程人員導(dǎo)航到安全漏洞匯點(diǎn)(sink)和修補(bǔ)方法。 可能存在多個(gè)開發(fā)人員,考慮可沿執(zhí)行流在各個(gè)階段執(zhí)行漏洞修補(bǔ)。在此情況下,使得開發(fā) 人員能夠與其他開發(fā)人員的操作同步以避免沖突的清理。例如,對(duì)于同步,開發(fā)人員可檢查 其他開發(fā)人員是否已修復(fù)執(zhí)行鏈中的同一漏洞并且決定所述開發(fā)人員是否應(yīng)采取操作來 執(zhí)行修復(fù)。例如,如果一個(gè)開發(fā)人員在將用戶輸入存入數(shù)據(jù)庫(kù)時(shí)已編碼用戶輸入以避免跨 站腳本攻擊,則使用該用戶輸入用于網(wǎng)頁(yè)顯示的UI開發(fā)人員不應(yīng)重復(fù)編碼該用戶輸入??上蜷_發(fā)人員提示的操作包括但不限于以下操作。開發(fā)人員可例如通過輸入適當(dāng) 的輸入或響應(yīng)來澄清漏洞(即,代碼中識(shí)別的安全漏洞)是誤警。開發(fā)人員可確認(rèn)其是漏 洞,但已被修復(fù),例如,向系統(tǒng)指出清理代碼(多個(gè))的位置統(tǒng)一資源標(biāo)識(shí)符(URI)。開發(fā)人 員可確認(rèn)其是漏洞并通過進(jìn)行到步驟108來修復(fù)漏洞。在108,如果適用,系統(tǒng)允許編程人員修復(fù)漏洞并向系統(tǒng)指出清理代碼的位置 URI,例如,“file input, jsp, method :sanitizeSQL (),hashvalue,,。系統(tǒng)還可記錄 method 的名稱并定期驗(yàn)證該名稱的一致性。另一方法是以結(jié)構(gòu)化的方式存儲(chǔ)代碼,這可有助于存 儲(chǔ)準(zhǔn)確的漏洞和/或清理代碼位置。系統(tǒng)然后存儲(chǔ)當(dāng)前漏洞與清理代碼的位置的關(guān)聯(lián)。開 發(fā)人員等還可決定取消操作決策。在110,安全性專家和/或作者等可決定是否將此漏洞修補(bǔ)情況添加到樣例模式中以便生成用于未來開發(fā)人員的提示。如果要存儲(chǔ)該情況,系統(tǒng)在112存儲(chǔ)該模式用于未 來的提示推斷。如果不存儲(chǔ)該情況,方法可進(jìn)行到步驟104,在步驟104,可從代碼導(dǎo)出更多 提示。如果沒有更多要提供的提示或開發(fā)階段完成,或者用戶退出過程,則方法停止。結(jié)合以上描述,為了開發(fā)中的安全漏洞響應(yīng)管理,可將所述操作響應(yīng)與所述安全 漏洞模式之間的關(guān)聯(lián)存儲(chǔ)在數(shù)據(jù)庫(kù)中。所述操作響應(yīng)可包括不執(zhí)行任何操作、將代碼添加 到所述代碼實(shí)例、以及修改所述代碼實(shí)例中的至少一個(gè)。可使用所述代碼的靜態(tài)分析完成 所述檢測(cè)。圖2示出了與樣例模式關(guān)聯(lián)的知識(shí)推導(dǎo)的實(shí)例,借助所述模式,本發(fā)明的系統(tǒng)和 方法可導(dǎo)出與計(jì)算機(jī)程序或代碼中暴露的潛在安全漏洞有關(guān)的提示。在圖2示出的情況 中,易受攻擊的執(zhí)行流與已有的清理后的流重疊。每個(gè)路徑都具有包括若干階段的執(zhí)行流。 簡(jiǎn)要地說,執(zhí)行流可以指通過整個(gè)程序或部分程序的流。先前的清理方法(例如,帶有相應(yīng) 代碼)可被建議給同一階段中的對(duì)應(yīng)位置作為提示。圖2中顯示的實(shí)例示出了 web程序中 的執(zhí)行流路徑,包括輸入階段、數(shù)據(jù)庫(kù)(DB)訪問階段,以及網(wǎng)頁(yè)顯示階段。先前存儲(chǔ)或保存 的代碼包括輸入階段代碼202、DB訪問階段代碼204、以及網(wǎng)頁(yè)顯示階段代碼206。處于開 發(fā)和監(jiān)視下的當(dāng)前代碼包括輸入階段代碼208、同一 DB訪問階段代碼204、以及同一瀏覽器 端網(wǎng)頁(yè)展示階段代碼206。在先前存儲(chǔ)或保存的代碼中,如在210所示執(zhí)行清理,清理202 與204之間的代碼。由于從階段代碼208收集的用戶輸入將被提供給重疊的執(zhí)行流中的同 一目的地代碼204或由其使用,所以本發(fā)明的系統(tǒng)和方法可決定建議相同的清理方法210 以便修復(fù)代碼208到204中的安全漏洞。因此,要執(zhí)行的清理212可以與210相同。另一知識(shí)推導(dǎo)實(shí)例可以是其中易受攻擊的代碼的語(yǔ)法或類型等與樣例模式相同 的情況。例如,兩者都使用污染的輸入連接SQL查詢。在此情況下,可在執(zhí)行流視圖中顯示 先前的安全漏洞情況和匹配當(dāng)前情況的清理代碼。例如,以下實(shí)例顯示了所存儲(chǔ)的安全漏 洞情況(先前的安全漏洞情況)及其清理位置Stored :“SELECT*FR0M users WHERE login =,,'+formusr+' "ANDpassword =,,'+formpwd+' “”;Current "SELECT*FR0M id WHERE LOGIN = " '+userinput+' “,,;知識(shí)推導(dǎo)的再一實(shí)例可以是其中沿所述流已存在已有清理的情況。系統(tǒng)可被配置 為是否再次詢問開發(fā)人員。對(duì)于某些情況,如果安全性專家希望檢查清理的有效性,則其可 選擇顯示已有的清理。另一實(shí)例情形可以是其中負(fù)責(zé)執(zhí)行流中的其他階段的另一開發(fā)人員 可能希望檢查清理中是否存在任何沖突的情況。例如,系統(tǒng)可被配置為默認(rèn)僅向相關(guān)編程 人員(例如,在同一執(zhí)行流中)顯示清理,但是如果例如安全性專家正在執(zhí)行代碼檢查,則 該安全性專家也可選擇查看清理,即使該安全性專家并未與作者相關(guān)或關(guān)聯(lián)??梢砸云渌绞綄?dǎo)出代碼中的潛在安全漏洞。例如,可以使用加強(qiáng)學(xué)習(xí)來訓(xùn)練最 佳導(dǎo)出策略。負(fù)責(zé)該提示(即,代碼中暴露的潛在安全漏洞)中的漏洞修補(bǔ)代碼的作者可 被顯示給開發(fā)人員作為參考??蓮脑纯刂苹蛉毕莞櫹到y(tǒng)檢索作者信息。如果存在許多 提示情況,則系統(tǒng)可根據(jù)作者的安全性聲望、提示情況的相關(guān)性、執(zhí)行流的關(guān)系等將這些提 示情況按照優(yōu)先順序排列。即,可將所述一個(gè)或多個(gè)提示按照優(yōu)先順序排列。可根據(jù)加強(qiáng) 學(xué)習(xí)算法、作者聲望或它們的組合中的一個(gè)或多個(gè)來按照優(yōu)先順序排列所述一個(gè)或多個(gè)提 示??墒褂眉訌?qiáng)學(xué)習(xí)算法識(shí)別所述一個(gè)或多個(gè)提示。
在另一個(gè)方面中,可提供協(xié)作開發(fā)環(huán)境內(nèi)的社會(huì)聲望系統(tǒng)。例如,系統(tǒng)可累積不同 開發(fā)人員執(zhí)行的活動(dòng)的歷史并得到開發(fā)人員的聲望。如果樣例模式的作者與當(dāng)前開發(fā)人員 相同(這指示同一人員的重復(fù)編碼風(fēng)格),則還可以增加指示同一人員的重復(fù)編碼風(fēng)格的 優(yōu)先級(jí)。圖3示出了本發(fā)明一個(gè)實(shí)施例中的呈現(xiàn)代碼中發(fā)現(xiàn)的潛在安全漏洞和可能的修 復(fù)的用戶接口屏幕快照。本發(fā)明的系統(tǒng)和方法可以與諸如Eclipse 工具之類的開發(fā)環(huán)境 工具302或另一集成開發(fā)環(huán)境(IDE)工具一起工作。在編程人員等正在例如通過工具302 的編輯器308開發(fā)代碼時(shí),可以彈出對(duì)話310或類似窗口,其顯示代碼306中暴露的潛在安 全漏洞,以及用戶可響應(yīng)于代碼中的安全漏洞的提示而選擇的操作項(xiàng)目304。所述提示可包 括作為先前開發(fā)人員的輸入的結(jié)果而存儲(chǔ)的信息。所述提示可被提供為使能導(dǎo)航到所關(guān)聯(lián) 代碼的超鏈接點(diǎn)擊。從所述代碼實(shí)例和先前存儲(chǔ)的樣例代碼中的執(zhí)行流信息導(dǎo)出所述一個(gè) 或多個(gè)提示。圖4示出了系統(tǒng)如何在代碼重寫期間維護(hù)安全性檢查信息。當(dāng)代碼片段402被復(fù) 制和/或粘貼到另一程序404時(shí),某些相關(guān)的安全性檢查信息406也可被傳輸?shù)叫碌某绦?404以用于潛在安全性提示生成。圖6示出根據(jù)本發(fā)明實(shí)施例的用于開發(fā)中的安全漏洞響應(yīng)管理的系統(tǒng)框圖600, 該系統(tǒng)中包括檢測(cè)模塊601,可操作以檢測(cè)匹配安全漏洞模式的代碼實(shí)例;提示生成模塊 602,可操作以生成與所述代碼實(shí)例關(guān)聯(lián)的一個(gè)或多個(gè)提示以響應(yīng)檢測(cè)到匹配安全漏洞模 式的代碼實(shí)例;操作響應(yīng)檢索模塊,可操作以檢索對(duì)匹配安全漏洞模式的代碼實(shí)例的操作 響應(yīng);以及關(guān)聯(lián)模塊,可操作以將所檢索的操作響應(yīng)與所述代碼實(shí)例關(guān)聯(lián)。本發(fā)明的實(shí)施例的系統(tǒng)還包括數(shù)據(jù)庫(kù),其可操作以存儲(chǔ)所述操作響應(yīng)與所述安全 漏洞模式之間的關(guān)聯(lián)??蛇x地,還可包括用戶接口模塊,其可操作以作為使能導(dǎo)航到所關(guān) 聯(lián)代碼的超鏈接點(diǎn)擊來提供所述一個(gè)或多個(gè)提示。所述操作響應(yīng)檢索模塊還可操作以接收 與所述操作響應(yīng)相關(guān)的上下文,存儲(chǔ)所述上下文與所述操作響應(yīng)的關(guān)聯(lián)、所述代碼實(shí)例的 位置、和所述上下文,以及響應(yīng)于所述上下文被更改,重新評(píng)估所述關(guān)聯(lián),并且所述用戶接 口模塊還可操作以提供修改所述操作響應(yīng)的提醒。其中所述上下文包括將修補(bǔ)安全漏洞的一個(gè)或多個(gè)位置。該系統(tǒng)還包括提示導(dǎo)出 模塊,可操作以從所述代碼實(shí)例和先前存儲(chǔ)的樣例代碼中的執(zhí)行流信息導(dǎo)出所述一個(gè)或多 個(gè)提示。如本領(lǐng)域技術(shù)人員將理解的,本發(fā)明的各方面可以被體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī) 程序產(chǎn)品。相應(yīng)地,本發(fā)明的各方面可采取完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、 駐留軟件、微代碼等)或組合此處可全部被統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”的硬件和軟件 方面的實(shí)施例的形式。此外,本發(fā)明的各方面可以采取包含在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì) 中的計(jì)算機(jī)程序產(chǎn)品的形式,所述計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀程序代碼??梢允褂靡环N或多種計(jì)算機(jī)可讀介質(zhì)的任意組合。所述計(jì)算機(jī)可讀介質(zhì)可以是計(jì) 算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是,例如但不限于, 電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或它們的任意適當(dāng)組合。計(jì)算機(jī)可讀存 儲(chǔ)介質(zhì)的更具體的實(shí)例(非窮舉列表)包括以下內(nèi)容具有一條或多條連線的電連接、可 移動(dòng)計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦寫可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、可移動(dòng)光盤-只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備或它們 的任意適當(dāng)組合。在此文檔的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何能夠包含或存儲(chǔ) 由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備有關(guān)的程序的有形介質(zhì)。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以包括其中包含計(jì)算機(jī)可讀程序代碼(例如,在基帶中或 作為載波的一部分)的傳播數(shù)據(jù)信號(hào)。此類傳播信號(hào)可采取多種形式中的任何形式,包括 但不限于電-磁、光或它們的任意適當(dāng)組合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以是任何不是計(jì)算機(jī) 可讀存儲(chǔ)介質(zhì)并且可傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系 統(tǒng)、裝置或設(shè)備有關(guān)的程序的計(jì)算機(jī)可讀介質(zhì)??梢允褂萌魏芜m當(dāng)?shù)慕橘|(zhì)(包括但不限于無線、有線、光纜、射頻等或它們的任意 適當(dāng)組合)來傳輸計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼。用于執(zhí)行本發(fā)明的各方面的操作的計(jì)算機(jī)程序代碼可以以一種或多種編程語(yǔ)言 的任意組合來編寫,包括面向?qū)ο蟮木幊陶Z(yǔ)言(如Java、Smalltalk, C++等)和傳統(tǒng)的過 程編程語(yǔ)言(如“C”編程語(yǔ)言或類似編程語(yǔ)言)。所述程序代碼可以完全地在用戶計(jì)算機(jī) 上、部分地在用戶計(jì)算機(jī)上、作為單獨(dú)的軟件包、部分地在用戶計(jì)算機(jī)上并部分地在遠(yuǎn)程計(jì) 算機(jī)上或完全地在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行。在后者的情況中,所述遠(yuǎn)程計(jì)算機(jī)可以通過任何類 型的網(wǎng)絡(luò)(包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))與所述用戶計(jì)算機(jī)相連,或者可以進(jìn)行與外 部計(jì)算機(jī)的連接(例如,利用因特網(wǎng)服務(wù)提供商并通過因特網(wǎng))。參考根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或 方塊圖在下面描述了本發(fā)明的各方面。將理解,所述流程圖和/或方塊圖的每個(gè)方塊以及 所述流程圖和/或方塊圖中的方塊的組合可以由計(jì)算機(jī)程序指令來實(shí)現(xiàn)。這些計(jì)算機(jī)程序 指令可以被提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生一 種機(jī)器,以便通過所述計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的所述指令將創(chuàng)建 用于實(shí)現(xiàn)所述流程圖和/或方塊圖方塊(多個(gè))中指定的功能/操作的裝置。這些計(jì)算機(jī)程序指令也可以被存儲(chǔ)在能夠引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝 置或其他設(shè)備以特定方式執(zhí)行功能的計(jì)算機(jī)可讀介質(zhì)中,以便存儲(chǔ)在所述計(jì)算機(jī)可讀介質(zhì) 中的所述指令將產(chǎn)生一件包括實(shí)現(xiàn)在所述流程圖和/或方塊圖方塊(多個(gè))中指定的功能 /操作的指令的制品。所述計(jì)算機(jī)程序指令還可以被加載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置或其他 設(shè)備上以導(dǎo)致將在所述計(jì)算機(jī)或其他可編程裝置或其他設(shè)備上執(zhí)行一系列的操作步驟以 產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,以便在所述計(jì)算機(jī)或其他可編程裝置上執(zhí)行的所述指令將提供用 于實(shí)現(xiàn)在所述流程圖和/或方塊圖方塊(多個(gè))中指定的功能/操作的過程。附圖中的流程圖和方塊圖示出了根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī) 程序產(chǎn)品的可能實(shí)現(xiàn)的體系結(jié)構(gòu)、功能和操作。在此方面,所述流程圖或方塊圖中的每個(gè)方 塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實(shí)現(xiàn)指定的邏輯功能(多個(gè))的一 個(gè)或多個(gè)可執(zhí)行指令。還應(yīng)指出,在某些備選實(shí)施方式中,在方塊中說明的功能可以不按圖中說明的順 序發(fā)生。例如,示出為連續(xù)的兩個(gè)方塊可以實(shí)際上被基本同時(shí)地執(zhí)行,或者某些時(shí)候,取決 于所涉及的功能,可以以相反的順序執(zhí)行所述方塊。還將指出,所述方塊圖和/或流程圖的 每個(gè)方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執(zhí)行指定功能或操作的基于硬件的專用系統(tǒng)或?qū)S糜布陀?jì)算機(jī)指令的組合來實(shí)現(xiàn)?,F(xiàn)在參考圖5,本發(fā)明的系統(tǒng)和方法可在包括處理單元2的計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)或 執(zhí)行,所述處理單元2容納一個(gè)或多個(gè)處理器或核心、存儲(chǔ)器和其他系統(tǒng)組件(未在圖中明 確示出),后者實(shí)現(xiàn)計(jì)算機(jī)處理系統(tǒng)或可執(zhí)行計(jì)算機(jī)程序產(chǎn)品的計(jì)算機(jī)。所述計(jì)算機(jī)程序產(chǎn) 品可包括介質(zhì),例如硬盤、諸如光盤的壓縮存儲(chǔ)介質(zhì),或其他存儲(chǔ)設(shè)備,后者可由處理單元2 通過任何本領(lǐng)域技術(shù)人員公知或?qū)⒐募夹g(shù)讀取,以便將所述計(jì)算機(jī)程序產(chǎn)品提供給處 理系統(tǒng)以供執(zhí)行。所述計(jì)算機(jī)程序產(chǎn)品可包括允許實(shí)現(xiàn)此處所述的方法的所有相應(yīng)特征,并且當(dāng)被 加載到計(jì)算機(jī)系統(tǒng)中時(shí),其能夠?qū)崿F(xiàn)這些方法。當(dāng)前上下文中的計(jì)算機(jī)程序、軟件程序、程 序或軟件是指一組指令的以任何語(yǔ)言、代碼或符號(hào)表示的任何表達(dá),旨在使具有信息處理 能力的系統(tǒng)直接執(zhí)行特定的功能,或者執(zhí)行以下兩者之一或全部后執(zhí)行特定的功能a)轉(zhuǎn) 換為另一種語(yǔ)言、代碼或符號(hào);和/或b)以不同的材料形式再現(xiàn)。實(shí)現(xiàn)本發(fā)明的系統(tǒng)和方法的計(jì)算機(jī)處理系統(tǒng)還可包括諸如監(jiān)視器或顯示屏4之 類的顯示設(shè)備,以便呈現(xiàn)輸出顯示并提供用戶可通過其輸入數(shù)據(jù)并與處理系統(tǒng)交互(例 如,與諸如鍵盤6和鼠標(biāo)設(shè)備8或指點(diǎn)設(shè)備之類的輸入設(shè)備協(xié)作)的顯示。所述計(jì)算機(jī)處 理系統(tǒng)還可直接或經(jīng)由遠(yuǎn)程連接被連接或耦合到一個(gè)或多個(gè)外圍設(shè)備(如打印機(jī)10、掃描 儀(未示出)、揚(yáng)聲器)和任何其他設(shè)備。所述計(jì)算機(jī)處理系統(tǒng)還可經(jīng)由本地以太網(wǎng)、廣域 網(wǎng)連接、因特網(wǎng)等中的任意一個(gè)或多個(gè)或經(jīng)由任何其他連接不同的計(jì)算系統(tǒng)并允許它們彼 此通信的聯(lián)網(wǎng)技術(shù)被連接或耦合到一個(gè)或多個(gè)其他處理系統(tǒng)(如服務(wù)器10、其他遠(yuǎn)程計(jì)算 機(jī)處理系統(tǒng)14、網(wǎng)絡(luò)存儲(chǔ)設(shè)備12)。可以以分布方式在不同的處理系統(tǒng)(例如,2,14,16)上 或在任何單個(gè)平臺(tái)上實(shí)現(xiàn)或執(zhí)行本發(fā)明的系統(tǒng)和方法的各種功能和模塊,例如,訪問在網(wǎng) 絡(luò)上本地存儲(chǔ)的或以分布方式存儲(chǔ)的數(shù)據(jù)。在此使用的術(shù)語(yǔ)只是為了描述特定實(shí)施例并且并非旨在限制本發(fā)明。如在此使用 的,單數(shù)形式“一”、“一個(gè)”和“該”旨在同樣包括復(fù)數(shù)形式,除非上下文明確地另有所指。還 將理解,當(dāng)在此說明書中使用時(shí),術(shù)語(yǔ)“包括”和/或“包含”指定了聲明的特征、整數(shù)、步驟、 操作、元素和/或組件的存在,但是并不排除一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元素、 組件和/或其組的存在或增加。相應(yīng)的結(jié)構(gòu)、材料、動(dòng)作以及所有裝置或步驟的等同物加上以下權(quán)利要求中的功 能元素旨在包括任何用于結(jié)合具體要求保護(hù)的其他元素執(zhí)行功能的結(jié)構(gòu)、材料或動(dòng)作。出 于示例和說明目的給出了對(duì)本發(fā)明的描述,但是所述描述并非旨在是窮舉的或是將本發(fā)明 限于所公開的形式。對(duì)于本領(lǐng)域中的技術(shù)人員而言,在不偏離本發(fā)明的范圍和精神的情況 下,許多修改和變化都將是顯而易見的。實(shí)施例的選擇和描述是為了最佳地解釋本發(fā)明的 原理、實(shí)際應(yīng)用,并且當(dāng)適合于所構(gòu)想的特定使用時(shí),使得本領(lǐng)域的其他技術(shù)人員能夠理解 本發(fā)明的具有各種修改的各種實(shí)施例。本發(fā)明的各個(gè)方面可以被體現(xiàn)為計(jì)算機(jī)或機(jī)器可用或可讀介質(zhì)內(nèi)包含的程序、軟 件或計(jì)算機(jī)程序指令,后者當(dāng)在計(jì)算機(jī)、處理器和/或機(jī)器上執(zhí)行時(shí),將導(dǎo)致所述計(jì)算機(jī)或 機(jī)器執(zhí)行所述方法的步驟。還提供了可由機(jī)器讀取并有形地體現(xiàn)指令程序的程序存儲(chǔ)設(shè) 備,所述指令可由機(jī)器執(zhí)行以實(shí)現(xiàn)本發(fā)明中所述的各種功能和方法。本發(fā)明的系統(tǒng)和方法可在通用計(jì)算機(jī)或?qū)S糜?jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)和運(yùn)行。所述計(jì)算機(jī)系統(tǒng)可以是任何類型的公知或?qū)⒐南到y(tǒng),并且典型地可包括處理器、存儲(chǔ)器設(shè)備、存 儲(chǔ)設(shè)備、輸入/輸出設(shè)備、內(nèi)部總線,和/或用于結(jié)合通信硬件和軟件與其他計(jì)算機(jī)系統(tǒng)通 信的通信接口等。如本申請(qǐng)中可使用的術(shù)語(yǔ)“計(jì)算機(jī)系統(tǒng)”和“計(jì)算機(jī)網(wǎng)絡(luò)”可包括固定和/或便攜 式計(jì)算機(jī)硬件、軟件、外圍設(shè)備和存儲(chǔ)設(shè)備的各種組合。所述計(jì)算機(jī)系統(tǒng)可包括多個(gè)聯(lián)網(wǎng)的 或以其他方式鏈接以協(xié)作執(zhí)行的單獨(dú)組件,或可包括一個(gè)或多個(gè)獨(dú)立組件。本申請(qǐng)的計(jì)算 機(jī)系統(tǒng)的硬件和軟件組件可包括并且可包括在諸如桌面計(jì)算機(jī)、膝上型計(jì)算機(jī)、服務(wù)器之 類的固定和便攜式設(shè)備內(nèi)。模塊可以是設(shè)備、軟件、程序或系統(tǒng)的實(shí)現(xiàn)某種“功能”的組件, 其可以體現(xiàn)為軟件、硬件、固件、電子電路等。上述實(shí)施例是示例性實(shí)例并且不應(yīng)理解為本發(fā)明限于這些特定實(shí)施例。因此,在 不脫離如所附權(quán)利要求中限定的本發(fā)明的精神和范圍的情況下,本領(lǐng)域技術(shù)人員可實(shí)現(xiàn)各 種更改和修改。
權(quán)利要求
1.一種用于開發(fā)中的安全漏洞響應(yīng)管理的方法,包括 檢測(cè)匹配安全漏洞模式的代碼實(shí)例;生成與所述代碼實(shí)例關(guān)聯(lián)的一個(gè)或多個(gè)提示以響應(yīng)所述檢測(cè); 檢索對(duì)匹配安全漏洞模式的代碼實(shí)例的操作響應(yīng);以及 將所檢索的操作響應(yīng)與所述代碼實(shí)例關(guān)聯(lián)。
2.如權(quán)利要求1中所述的方法,還包括將所述操作響應(yīng)與所述安全漏洞模式之間的關(guān)聯(lián)存儲(chǔ)在數(shù)據(jù)庫(kù)中。
3.如權(quán)利要求1中所述的方法,其中所述操作響應(yīng)包括不執(zhí)行任何操作、將代碼添加 到所述代碼實(shí)例、以及修改所述代碼實(shí)例中的至少一個(gè)。
4.如權(quán)利要求1中所述的方法,其中使用所述代碼的靜態(tài)分析完成所述檢測(cè)。
5.如權(quán)利要求1中所述的方法,其中將所述一個(gè)或多個(gè)提示按照優(yōu)先順序排列。
6.如權(quán)利要求1中所述的方法,其中所述一個(gè)或多個(gè)提示包括作為先前開發(fā)人員的輸 入的結(jié)果而存儲(chǔ)的信息。
7.如權(quán)利要求1中所述的方法,其中所述一個(gè)或多個(gè)提示可被提供為使能導(dǎo)航到所關(guān) 聯(lián)代碼的超鏈接點(diǎn)擊。
8.如權(quán)利要求1中所述的方法,其中所述檢索步驟進(jìn)一步包括 接收與所述操作響應(yīng)相關(guān)的上下文;存儲(chǔ)所述上下文與所述操作響應(yīng)的關(guān)聯(lián)、所述代碼實(shí)例的位置和所述上下文;以及 響應(yīng)于所述上下文被更改,重新評(píng)估所述上下文與所述操作響應(yīng)的關(guān)聯(lián)并提醒修改所 述操作響應(yīng)。
9.如權(quán)利要求8中所述的方法,其中所述上下文包括將修補(bǔ)安全漏洞的一個(gè)或多個(gè)位置。
10.如權(quán)利要求1中所述的方法,還包括從所述代碼實(shí)例和先前存儲(chǔ)的樣例代碼中的執(zhí)行流信息導(dǎo)出所述一個(gè)或多個(gè)提示。
11.如權(quán)利要求1中所述的方法,其中根據(jù)加強(qiáng)學(xué)習(xí)算法、作者聲望或它們的組合中的 一個(gè)或多個(gè)來按照優(yōu)先順序排列所述一個(gè)或多個(gè)提示。
12.如權(quán)利要求1中所述的方法,其中使用加強(qiáng)學(xué)習(xí)算法識(shí)別所述一個(gè)或多個(gè)提示。
13.一種用于開發(fā)中的安全漏洞響應(yīng)管理的系統(tǒng),包括 檢測(cè)模塊,可操作以檢測(cè)匹配安全漏洞模式的代碼實(shí)例;提示生成模塊,可操作以生成與所述代碼實(shí)例關(guān)聯(lián)的一個(gè)或多個(gè)提示以響應(yīng)檢測(cè)到匹 配安全漏洞模式的代碼實(shí)例;檢索模塊,可操作以檢索對(duì)匹配安全漏洞模式的代碼實(shí)例的操作響應(yīng);以及 關(guān)聯(lián)模塊,可操作以將所檢索的操作響應(yīng)與所述代碼實(shí)例關(guān)聯(lián)。
14.如權(quán)利要求13中所述的系統(tǒng),還包括數(shù)據(jù)庫(kù),其可操作以存儲(chǔ)所述操作響應(yīng)與所述安全漏洞模式之間的關(guān)聯(lián)。
15.如權(quán)利要求13中所述的系統(tǒng),還包括用戶接口模塊,其可操作以作為使能導(dǎo)航到 所關(guān)聯(lián)代碼的超鏈接點(diǎn)擊來提供所述一個(gè)或多個(gè)提示。
16.如權(quán)利要求15中所述的系統(tǒng),其中所述檢索模塊還可操作以接收與所述操作響應(yīng) 相關(guān)的上下文,存儲(chǔ)所述上下文與所述操作響應(yīng)的關(guān)聯(lián)、所述代碼實(shí)例的位置、和所述上下文,以及響應(yīng)于所述上下文被更改,重新評(píng)估所述關(guān)聯(lián),并且所述用戶接口模塊還可操作以 提供修改所述操作響應(yīng)的提醒。
17.如權(quán)利要求16中所述的系統(tǒng),其中所述上下文包括將修補(bǔ)安全漏洞的一個(gè)或多個(gè)位置。
18.如權(quán)利要求13中所述的系統(tǒng),還包括提示導(dǎo)出模塊,可操作以從所述代碼實(shí)例和 先前存儲(chǔ)的樣例代碼中的執(zhí)行流信息導(dǎo)出所述一個(gè)或多個(gè)提示。
全文摘要
本發(fā)明涉及一種用于開發(fā)中的安全漏洞響應(yīng)管理的方法和系統(tǒng)。在一個(gè)方面中,開發(fā)中的安全漏洞響應(yīng)管理可包括以下操作檢測(cè)匹配安全漏洞模式的代碼實(shí)例;生成與所述代碼實(shí)例關(guān)聯(lián)的一個(gè)或多個(gè)提示以響應(yīng)所述檢測(cè);檢索對(duì)匹配安全漏洞模式的代碼實(shí)例的操作響應(yīng);以及將所檢索的操作響應(yīng)與所述代碼實(shí)例關(guān)聯(lián)。
文檔編號(hào)G06F21/00GK102141956SQ201010104980
公開日2011年8月3日 申請(qǐng)日期2010年1月29日 優(yōu)先權(quán)日2010年1月29日
發(fā)明者F·德科凱拉爾, P·K·馬爾金, 吉濵佐知子, 寺口正羲, 張煜, 楊順祥, 浦本直彥, 羅琳 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司