亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

應用軟件安全漏洞檢測方法和系統(tǒng)與流程

文檔序號:11583401閱讀:218來源:國知局
應用軟件安全漏洞檢測方法和系統(tǒng)與流程

本發(fā)明涉及數(shù)據(jù)安全技術領域,尤其涉及一種應用軟件安全漏洞檢測方法和系統(tǒng)。



背景技術:

智能手機中安裝的應用軟件類型多樣,為人們的生活、娛樂、工作帶來了極大的便利。由于應用軟件可能涉及各用戶的隱私、財產安全,因此,應用軟件的安全性一直是人們關注的重點。

現(xiàn)有應用軟件安全漏洞檢測大部分是基于靜態(tài)的規(guī)則掃描和應用組件類的模糊測試實現(xiàn),如墨貝系統(tǒng)和drozer工具,是通過對應用軟件代碼的靜態(tài)掃描實現(xiàn)軟件安全性的檢測。這樣的檢測方法方案比較粗糙,僅僅是基于代碼文字的規(guī)則匹配,存在大量的誤報和漏報;另一方面,由于檢測的覆蓋面有限,并不能深入發(fā)現(xiàn)應用軟件的功能邏輯所存在的安全隱患。

因此,如何提高應用軟件的安全漏洞檢測效率成為了亟需解決的問題。



技術實現(xiàn)要素:

本發(fā)明的主要目的在于提供一種軟件安全漏洞檢測方法和系統(tǒng),旨在解決應用軟件的安全漏洞檢測效率低的技術問題。

為實現(xiàn)上述目的,本發(fā)明提供一種應用軟件安全漏洞檢測方法,所述應用軟件安全漏洞檢測方法包括以下步驟:

基于預先在應用軟件敏感調用點配置的插樁,采集所述應用軟件運行過程中流經所述敏感調用點的數(shù)據(jù)流信息;

根據(jù)所述數(shù)據(jù)流信息,判斷所述敏感調用點是否被污點數(shù)據(jù)污染;

若所述敏感調用點被污染,則根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點;

若成功查找到所述敏感調用點對應的外部輸入點,則確定所述外部輸入點為所述應用軟件的安全漏洞。

優(yōu)選地,所述根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點的步驟包括:

根據(jù)所述變量參數(shù),回溯查找輸出所述變量參數(shù)的前驅調用點;

若所述前驅調用點是基于函數(shù)調用輸出的返回值,則再次回溯查找返回所述前驅調用點實參的前驅調用點,確定源節(jié)點;

若所述源節(jié)點為外部輸入點,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;

若所述源節(jié)點為常量賦值,則停止回溯,確定未找到所述敏感調用點對應的外部輸入點。

優(yōu)選地,所述根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點的步驟還包括:

若所述前驅調用點將所述變量參數(shù)作為賦值輸出,則獲取所述變量參數(shù)對應的右值;

若所述右值為外部輸入點輸入的變量,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;

若所述右值為常量賦值,則停止回溯,確定未找到所述敏感調用點對應的外部輸入點。

優(yōu)選地,所述基于預先在應用軟件敏感調用點配置的插樁,采集所述應用軟件運行過程中流經所述敏感調用點的數(shù)據(jù)流信息的步驟之前,還包括:

當所述應用軟件運行時,在所述應用軟件的各外部輸入點輸入污點數(shù)據(jù)。

優(yōu)選地,所述確定所述外部輸入點為所述應用軟件的安全漏洞的步驟之后,還包括:

確定回溯找到所述外部輸入點的路徑為危險路徑。

此外,為實現(xiàn)上述目的,本發(fā)明還提供一種應用軟件安全漏洞檢測系統(tǒng),所述應用軟件安全漏洞檢測系統(tǒng)包括:

采集模塊,用于基于預先在應用軟件敏感調用點配置的插樁,采集所述應用軟件運行過程中流經所述敏感調用點的數(shù)據(jù)流信息;

判斷模塊,用于根據(jù)所述數(shù)據(jù)流信息,判斷所述敏感調用點是否被污點數(shù)據(jù)污染;

回溯模塊,用于若所述敏感調用點被污染,則根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點;

確定模塊,用于若成功查找到所述敏感調用點對應的外部輸入點,則確定所述外部輸入點為所述應用軟件的安全漏洞。

優(yōu)選地,所述回溯模塊還用于,

根據(jù)所述變量參數(shù),回溯查找輸出所述變量參數(shù)的前驅調用點;若所述前驅調用點是基于函數(shù)調用輸出的返回值,則再次回溯查找返回所述前驅調用點實參的前驅調用點,確定源節(jié)點;若所述源節(jié)點為外部輸入點,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;若所述源節(jié)點為常量賦值,則停止回溯,確定未找到所述敏感調用點對應的外部輸入點。

優(yōu)選地,所述回溯模塊還用于,

若所述前驅調用點將所述變量參數(shù)作為賦值輸出,則獲取所述變量參數(shù)對應的右值;若所述右值為外部輸入點輸入的變量,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;若所述右值為常量賦值,則停止回溯,確定未找到所述敏感調用點對應的外部輸入點。

優(yōu)選地,所述應用軟件安全漏洞檢測系統(tǒng)還包括:

污點模塊,用于當所述應用軟件運行時,在所述應用軟件的各外部輸入點輸入污點數(shù)據(jù)。

優(yōu)選地,所述確定模塊還用于,

確定回溯找到所述外部輸入點的路徑為危險路徑。

本發(fā)明實施例提出的一種應用軟件安全漏洞檢測方法和系統(tǒng),通過基于預先在應用軟件敏感調用點配置的插樁,采集應用軟件運行過程中流經敏感調用點的數(shù)據(jù)流信息,進行動態(tài)的數(shù)據(jù)采集,模擬應用軟件實際運行的狀態(tài),相對于靜態(tài)數(shù)據(jù)來說采集的數(shù)據(jù)更具有真實性,能夠更好的進行應用軟件的安全性檢測,提高安全漏洞檢測效率;然后,根據(jù)流經敏感調用點的數(shù)據(jù)流信息,判斷敏感調用點是否被污點數(shù)據(jù)污染;若敏感調用點被污染,則敏感調用點可能被外部輸入點關聯(lián)調用,影響應用軟件安全,此時,根據(jù)敏感調用點的變量參數(shù),回溯查找敏感調用點對應的外部輸入點,也即查找更夠調用敏感調用點的外部輸入點;若成功查找到敏感調用點對應的外部輸入點,則確定此找到的外部輸入點為應用軟件的安全漏洞,會給應用軟件帶來風險。本發(fā)明中基于應用軟件運行過程中的關鍵調用和數(shù)據(jù)處理操作的實時監(jiān)控輸出,通過離線自動污點數(shù)據(jù)傳播分析,檢測應用潛在的安全漏洞。通過采用動態(tài)插樁和離線數(shù)據(jù)流分析動靜態(tài)結合的檢測技術,能夠覆蓋應用軟件更深層次功能和邏輯檢查,不存在漏報,且采集的數(shù)據(jù)來自實際運行過程,真實有效,不存在誤報,大大提高了應用軟件的安全漏洞檢測效率。

附圖說明

圖1為本發(fā)明應用軟件安全漏洞檢測方法第一實施例的流程示意圖;

圖2為圖1中根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點的步驟的細化流程示意圖;

圖3為圖1中根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點的步驟的細化流程示意圖;

圖4為本發(fā)明應用軟件安全漏洞檢測方法第二實施例的流程示意圖;

圖5為本發(fā)明應用軟件安全漏洞檢測方法第三實施例的流程示意圖;

圖6為本發(fā)明應用軟件安全漏洞檢測系統(tǒng)第一實施例的功能模塊示意圖;

圖7為本發(fā)明應用軟件安全漏洞檢測系統(tǒng)第二實施例的功能模塊示意圖。

本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結合實施例,參照附圖做進一步說明。

具體實施方式

應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

參照圖1,本發(fā)明應用軟件安全漏洞檢測方法第一實施例提供一種應用軟件安全漏洞檢測方法,所述應用軟件安全漏洞檢測方法包括:

步驟s10、基于預先在應用軟件敏感調用點配置的插樁,采集所述應用軟件運行過程中流經所述敏感調用點的數(shù)據(jù)流信息。

本發(fā)明通過在應用軟件的函數(shù)敏感調用點配置插樁,在程序運行時,獲取流經插樁點(也即敏感調用點)的數(shù)據(jù)流,用于檢測敏感調用點是否安全,從而進行數(shù)據(jù)回溯。由于采集的數(shù)據(jù)是應用軟件真實運行過程中的數(shù)據(jù),因此真實有效,降低了漏洞漏報和誤報的概率,提高了應用軟件的安全漏洞檢測效率。

具體的,作為一種實施方式,首先,在不破壞待檢測應用軟件的程序原有邏輯完整性的前提下,在待檢測應用軟件需檢測的敏感調用點配置插樁,以采集應用軟件的運行時的關鍵調用數(shù)據(jù)。

在配置程序插樁后,啟動待檢測的應用軟件,獲取插樁采集的流經敏感調用點的數(shù)據(jù)流信息。

插樁采集的數(shù)據(jù)流信息包括應用軟件運行過程中,調用此敏感調用點時傳遞給此敏感調用點的參數(shù),以及敏感調用點根據(jù)傳遞的參數(shù)執(zhí)行函數(shù)調用后輸出的返回值等信息。

需要說明的是,敏感調用點是應用軟件中的關鍵調用點,或是安全性要求要高的調用點,可以由測試人員人為確定需檢測的敏感調用點,在需檢測的各敏感調用點配置插樁。

步驟s20、根據(jù)所述數(shù)據(jù)流信息,判斷所述敏感調用點是否被污點數(shù)據(jù)污染。

需要說明的是,在通過外部輸入點向應用軟件輸入污點數(shù)據(jù)后,污點數(shù)據(jù)會在應用軟件運行的過程中,傳遞污染關聯(lián)的參數(shù),關聯(lián)參數(shù)會被打上污染標簽。

則,若流經敏感調用點的參數(shù)攜帶有污點標簽,則可以判定此敏感調用點被污點數(shù)據(jù)污染,也即,外部輸入點輸入的數(shù)據(jù)能夠影響、控制此敏感調用點,存在風險。

步驟s30、若所述敏感調用點被污染,則根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點。

若敏感調用點被污染,則首先需要確定敏感調用點的變量參數(shù),例如,敏感調用點使用形參執(zhí)行函數(shù)輸出返回值,則敏感調用點的形參即為變量參數(shù),需要追蹤傳遞給敏感調用點、對形參賦值的實參。

然后,根據(jù)插樁采集的數(shù)據(jù)流信息中傳遞給此敏感調用點的實參,進行數(shù)據(jù)回溯,查找此變量參數(shù)數(shù)值的來源,以獲取影響此變量參數(shù)的值的調用點,直至查找到的能夠影響此變量參數(shù)的值的調用點為源節(jié)點,例如常量賦值、外部輸入點等時,停止數(shù)據(jù)回溯。

需要說明的是,源節(jié)點的參數(shù)不再受應用軟件內部其他調用點的影響。

若能夠影響此變量參數(shù)的值的調用點的源節(jié)點為外部輸入點,則確定此外部輸入點為敏感調用點對應的外部輸入點,此外部輸入點輸入的數(shù)據(jù)能夠影響、控制敏感調用點,給應用軟件造成風險。

作為一種實施方式,參照圖2,所述根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點的步驟包括:

步驟s31、根據(jù)所述變量參數(shù),回溯查找輸出所述變量參數(shù)的前驅調用點;

步驟s32、若所述前驅調用點是基于函數(shù)調用輸出的返回值,則再次回溯查找返回所述前驅調用點實參的前驅調用點,確定源節(jié)點;

步驟s33、若所述源節(jié)點為外部輸入點,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;

步驟s34、若所述源節(jié)點為常量賦值,則停止回溯,確定未找到所述敏感調用點對應的外部輸入點。

例如,主函數(shù)調用當前敏感調用點時,傳遞給敏感調用點的參數(shù)為a,敏感調用點根據(jù)a執(zhí)行函數(shù)調用后會對應輸出返回值,則確定敏感調用點的形參為變量參數(shù)。

然后,根據(jù)傳遞給敏感調用點的參數(shù)a,查找應用軟件中返回或輸出a的前驅調用點,也即查找將a作為返回值輸出且執(zhí)行順序早于敏感調用點的調用點。

需要說明的是,前驅調用點在應用軟件的各調用點執(zhí)行順序中,早于對比調用點執(zhí)行函數(shù)調用。例如上述“查找輸出a的前驅調用點”中,前驅調用點的函數(shù)執(zhí)行順序應當早于當前敏感調用點。

若前驅調用點1輸出的返回值為a,則判斷前驅調用點1輸出的參數(shù)是否為外部輸入點輸入的變量。

若前驅調用點1輸出的參數(shù)是外部輸入點輸入的變量,也即a是由前驅調用點1根據(jù)外部輸入點輸入的變量對應輸出的,則可以確認此外部輸入點為數(shù)據(jù)流的源節(jié)點,也就是當前敏感調用點對應的外部輸入點。

若前驅調用點1是根據(jù)輸入的實參b,執(zhí)行函數(shù)調用運算得到a,則根據(jù)b繼續(xù)查找返回b的前驅調用點,也即查找將b作為返回值輸出,且執(zhí)行順序早于前驅調用點1的調用點,以此類推,直至找到數(shù)據(jù)流的源節(jié)點。

若源節(jié)點為外部輸入點,則可以確定找到源節(jié)點為敏感調用點對應的外部輸入點。

若源節(jié)點為常量賦值,則可以確定未回溯到外部輸入點,當前敏感調用點安全,停止回溯。

進一步地,若找到多個輸出所述變量參數(shù)且執(zhí)行順序先于所述敏感調用點的調用點,則確定所述多個調用點中執(zhí)行順序最接所述近敏感調用點的為所述前驅調用點。

在根據(jù)變量參數(shù)進行數(shù)據(jù)回溯時,可能會遇到多個調用點輸出參數(shù)均為此變量參數(shù),此時,首先根據(jù)各調用點的執(zhí)行順序,篩選出執(zhí)行順序先于敏感調用點的調用點,也可稱為執(zhí)行順序早于敏感調用點的調用點。

若篩選后,得到的調用點只有一個,則就可以確定此調用點為當前查找的、用于進一步進行數(shù)據(jù)回溯前驅調用點;若篩選后,得到的調用點有多個,則此時根據(jù)這多個調用點的執(zhí)行順序,確定執(zhí)行順序最晚、但早于敏感調用點的調用點為當前查找的、用于進一步進行數(shù)據(jù)回溯前驅調用點,也即確定執(zhí)行順序最接近敏感調用點的為前驅調用點。

例如,若輸出a的調用點包括調用點2、調用點3,則獲取調用點2、調用點3的執(zhí)行順序。若調用點2先于調用點3執(zhí)行,敏感調用點晚于調用點3執(zhí)行,則調用點3的執(zhí)行順序更加接近敏感調用點,確定調用點3為前驅調用點;若調用點3先于調用點2執(zhí)行,敏感調用點晚于調用點2執(zhí)行,則調用點2的執(zhí)行順序更加接近敏感調用點,確定調用點2為前驅調用點。

同理,在后續(xù)回溯數(shù)據(jù)時,若遇到多個調用點輸出的參數(shù)均為當前回溯的參數(shù)、無法確定前驅調用點的情況時,選取執(zhí)行順序早于當前調用點、且最接近當前調用點的為前驅調用點,繼續(xù)進行數(shù)據(jù)回溯。

由此,在有多個調用點輸出變量參數(shù)時,可以唯一確定前驅調用點,實現(xiàn)了通過調用點時序,進行數(shù)據(jù)回溯和外部輸入點的查找。

進一步地,作為另一種實施方式,參照圖3,所述根據(jù)所述數(shù)據(jù)流信息中傳遞給所述敏感調用點的參數(shù),回溯查找所述敏感調用點對應的外部輸入點的步驟,還包括:

步驟s35、若所述前驅調用點將所述變量參數(shù)作為賦值輸出,則獲取所述變量參數(shù)對應的右值;

步驟s36、若所述右值為外部輸入點輸入的變量,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;

步驟s37、若所述右值為常量賦值,則停止回溯,確定未找到所述敏感調用點對應的外部輸入點。

若敏感調用點的變量參數(shù)值是由前驅參數(shù)的賦值決定的,也即傳遞給敏感調用點、對變量參數(shù)進行賦值的參數(shù)是前驅調用點的賦值,則回溯對應的右值,也即對傳遞給敏感調用點的變量參數(shù)進行賦值的右值。

若此右值是外部輸入點輸入的變量,也即前驅調用點是根據(jù)外部輸入點輸入的變量對輸出的參數(shù)進行賦值的,則可以確定此外部輸入點為敏感調用點對應的外部輸入點。

若右值為常量賦值,則可以確定當前數(shù)據(jù)鏈安全,未回溯到外部輸入點,停止回溯。

由此,實現(xiàn)了對函數(shù)調用和賦值的數(shù)據(jù)追蹤,保障了回溯調用點的完整性和準確性。

步驟s40、若成功查找到所述敏感調用點對應的外部輸入點,則確定所述外部輸入點為所述應用軟件的安全漏洞。

若成功回溯數(shù)據(jù)找到敏感調用點對應的外部輸入點,則找到的外部輸入點可能會被利用輸入數(shù)據(jù),調用此敏感調用點,給應用軟件帶來安全隱患。

由此,可以確定此外部輸入點為應用軟件的安全漏洞,進行漏洞上報。

在本實施例中,基于預先在應用軟件敏感調用點配置的插樁,采集應用軟件運行過程中流經敏感調用點的數(shù)據(jù)流信息,進行動態(tài)的數(shù)據(jù)采集,模擬應用軟件實際運行的狀態(tài),相對于靜態(tài)數(shù)據(jù)來說采集的數(shù)據(jù)更具有真實性,能夠更好的進行應用軟件的安全性檢測,提高安全漏洞檢測效率;然后,根據(jù)流經敏感調用點的數(shù)據(jù)流信息,判斷敏感調用點是否被污點數(shù)據(jù)污染;若敏感調用點被污染,則敏感調用點可能被外部輸入點關聯(lián)調用,影響應用軟件安全,此時,根據(jù)敏感調用點的變量參數(shù),回溯查找敏感調用點對應的外部輸入點,也即查找更夠調用敏感調用點的外部輸入點;若成功查找到敏感調用點對應的外部輸入點,則確定此找到的外部輸入點為應用軟件的安全漏洞,會給應用軟件帶來風險。本實施例中基于應用軟件運行過程中的關鍵調用和數(shù)據(jù)處理操作的實時監(jiān)控輸出,通過離線自動污點數(shù)據(jù)傳播分析,檢測應用潛在的安全漏洞。通過采用動態(tài)插樁和離線數(shù)據(jù)流分析動靜態(tài)結合的檢測技術,能夠覆蓋應用軟件更深層次功能和邏輯檢查,不存在漏報,且采集的數(shù)據(jù)來自實際運行過程,真實有效,不存在誤報,大大提高了應用軟件的安全漏洞檢測效率。

進一步地,參照圖4,本發(fā)明應用軟件安全漏洞檢測方法第二實施例提供一種應用軟件安全漏洞檢測方法,基于上述本發(fā)明應用軟件安全漏洞檢測方法第一實施例,所述步驟s10之前,還包括:

步驟s50、當所述應用軟件運行時,在所述應用軟件的各外部輸入點輸入污點數(shù)據(jù)。

當應用軟件的敏感調用點已經配置好插樁,啟動運行時,或在應用軟件運行的過程中,通過應用軟件的各個外部輸入點,向應用軟件中輸入帶有污染標簽的污點數(shù)據(jù)。

污點數(shù)據(jù)再被輸入應用軟件后,跟隨各調用點的調用,通過賦值、函數(shù)調用等方式,污染關聯(lián)的參數(shù)。若被污染的參數(shù)流經調用點,則可認為此調用點被污點。

若應用軟件運行的過程中敏感調用點被污染,則可以確定外部輸入點輸入的污點數(shù)據(jù)的關聯(lián)參數(shù)能夠流經此敏感調用點進行函數(shù)調用,也即此敏感調用點能夠被外部輸入點調用,存在安全漏洞。然后,根據(jù)敏感調用點的數(shù)據(jù)流進行數(shù)據(jù)回溯,查找能夠調用敏感調用點的外部輸入點,此能夠調用敏感調用點的外部輸入點即為應用軟件的安全漏洞。

在本實施例中,當所述應用軟件運行時,在應用軟件的各外部輸入點輸入污點數(shù)據(jù),用以檢測敏感調用點是否被感染,從而根據(jù)被感染的敏感調用點查找對應的安全漏洞,實現(xiàn)了對應用軟件漏洞的檢測。本實施例通過向各外部輸入點輸入污點數(shù)據(jù),使應用軟件運行起來,能夠快速、準確的標記出存在被外部輸入點調用風險的敏感調用點,進而提高風險調用點的準確率,實現(xiàn)對應用軟件深層邏輯的檢測,減少漏洞的誤報和漏報,提高漏洞檢測的效率。

進一步地,參照圖5,本發(fā)明應用軟件安全漏洞檢測方法第三實施例提供一種應用軟件安全漏洞檢測方法,基于上述本發(fā)明應用軟件安全漏洞檢測方法第一實施例或第二實施例(本實施例以上述本發(fā)明應用軟件安全漏洞檢測方法第一實施例為例),所述步驟s40之后,還包括:

步驟s60、確定回溯找到所述外部輸入點的路徑為危險路徑。

當成功找到敏感調用點對應的外部輸入點時,將找到外部輸入點的路徑信息提取出來,得到從外部輸入點輸入的污點數(shù)據(jù)流向敏感調用點的路徑,以及路徑上被感染的各調用點。

然后,標記此路徑為危險路徑,便于研發(fā)人員了解敏感調用點的具體風險,以提高應用軟件的完全性。

在本實施例中,確定回溯找到敏感調用點對應外部輸入點的路徑為危險路徑,以便于研發(fā)人員進行進一步地漏洞原因分析、提升應用軟件的安全性。

參照圖6,本發(fā)明應用軟件安全漏洞檢測系統(tǒng)第一實施例提供一種應用軟件安全漏洞檢測系統(tǒng),所述應用軟件安全漏洞檢測系統(tǒng)包括:

采集模塊10,用于基于預先在應用軟件敏感調用點配置的插樁,采集所述應用軟件運行過程中流經所述敏感調用點的數(shù)據(jù)流信息。

本發(fā)明通過在應用軟件的函數(shù)敏感調用點配置插樁,在程序運行時,獲取流經插樁點(也即敏感調用點)的數(shù)據(jù)流,用于檢測敏感調用點是否安全,從而進行數(shù)據(jù)回溯。由于采集的數(shù)據(jù)是應用軟件真實運行過程中的數(shù)據(jù),因此真實有效,降低了漏洞漏報和誤報的概率,提高了應用軟件的安全漏洞檢測效率。

具體的,作為一種實施方式,首先,在不破壞待檢測應用軟件的程序原有邏輯完整性的前提下,在待檢測應用軟件需檢測的敏感調用點配置插樁,以采集應用軟件的運行時的關鍵調用數(shù)據(jù)。

在配置程序插樁后,啟動待檢測的應用軟件,采集模塊10獲取插樁采集的流經敏感調用點的數(shù)據(jù)流信息。

插樁采集的數(shù)據(jù)流信息包括應用軟件運行過程中,調用此敏感調用點時傳遞給此敏感調用點的參數(shù),以及敏感調用點根據(jù)傳遞的參數(shù)執(zhí)行函數(shù)調用后輸出的返回值等信息。

需要說明的是,敏感調用點是應用軟件中的關鍵調用點,或是安全性要求要高的調用點,可以由測試人員人為確定需檢測的敏感調用點,在需檢測的各敏感調用點配置插樁。

判斷模塊20,用于根據(jù)所述數(shù)據(jù)流信息,判斷所述敏感調用點是否被污點數(shù)據(jù)污染。

需要說明的是,在通過外部輸入點向應用軟件輸入污點數(shù)據(jù)后,污點數(shù)據(jù)會在應用軟件運行的過程中,傳遞污染關聯(lián)的參數(shù),關聯(lián)參數(shù)會被打上污染標簽。

則,若流經敏感調用點的參數(shù)攜帶有污點標簽,則判斷模塊20可以判定此敏感調用點被污點數(shù)據(jù)污染,也即,外部輸入點輸入的數(shù)據(jù)能夠影響、控制此敏感調用點,存在風險。

回溯模塊30,用于若所述敏感調用點被污染,則根據(jù)所述敏感調用點的變量參數(shù),回溯查找所述敏感調用點對應的外部輸入點。

若敏感調用點被污染,則回溯模塊30首先需要確定敏感調用點的變量參數(shù),例如,敏感調用點使用形參執(zhí)行函數(shù)輸出返回值,則敏感調用點的形參即為變量參數(shù),需要追蹤傳遞給敏感調用點、對形參賦值的實參。

然后,根據(jù)插樁采集的數(shù)據(jù)流信息中傳遞給此敏感調用點的實參,進行數(shù)據(jù)回溯,查找此變量參數(shù)數(shù)值的來源,以獲取影響此變量參數(shù)的值的調用點,直至查找到的能夠影響此變量參數(shù)的值的調用點為源節(jié)點,例如常量賦值、外部輸入點等時,停止數(shù)據(jù)回溯。

需要說明的是,源節(jié)點的參數(shù)不再受應用軟件內部其他調用點的影響。

若能夠影響此變量參數(shù)的值的調用點的源節(jié)點為外部輸入點,則回溯模塊30確定此外部輸入點為敏感調用點對應的外部輸入點,此外部輸入點輸入的數(shù)據(jù)能夠影響、控制敏感調用點,給應用軟件造成風險。

作為一種實施方式,所述回溯模塊30還用于,

根據(jù)所述變量參數(shù),回溯查找輸出所述變量參數(shù)的前驅調用點;若所述前驅調用點是基于函數(shù)調用輸出的返回值,則再次回溯查找返回所述前驅調用點實參的前驅調用點,確定源節(jié)點;若所述源節(jié)點為外部輸入點,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;若所述源節(jié)點為常量賦值,則停止回溯根據(jù),確定未找到所述敏感調用點對應的外部輸入點。

例如,主函數(shù)調用當前敏感調用點時,傳遞給敏感調用點的參數(shù)為a,敏感調用點根據(jù)a執(zhí)行函數(shù)調用后會對應輸出返回值,則回溯模塊30確定敏感調用點的形參為變量參數(shù)。

然后,回溯模塊30根據(jù)傳遞給敏感調用點的參數(shù)a,查找應用軟件中返回或輸出a的前驅調用點,也即查找將a作為返回值輸出且執(zhí)行順序早于敏感調用點的調用點。

需要說明的是,前驅調用點在應用軟件的各調用點執(zhí)行順序中,早于對比調用點執(zhí)行函數(shù)調用。例如上述“查找輸出a的前驅調用點”中,前驅調用點的函數(shù)執(zhí)行順序應當早于當前敏感調用點。

若前驅調用點1輸出的返回值為a,則回溯模塊30判斷前驅調用點1輸出的參數(shù)是否為外部輸入點輸入的變量。

若前驅調用點1輸出的參數(shù)是外部輸入點輸入的變量,也即a是由前驅調用點1根據(jù)外部輸入點輸入的變量對應輸出的,則回溯模塊30可以確認此外部輸入點為數(shù)據(jù)流的源節(jié)點,也就是當前敏感調用點對應的外部輸入點。

若前驅調用點1是根據(jù)輸入的實參b,執(zhí)行函數(shù)調用運算得到a,則根據(jù)b繼續(xù)查找返回b的前驅調用點,也即查找將b作為返回值輸出,且執(zhí)行順序早于前驅調用點1的調用點,以此類推,直至找到數(shù)據(jù)流的源節(jié)點。

若源節(jié)點為外部輸入點,則回溯模塊30可以確定找到源節(jié)點為敏感調用點對應的外部輸入點。

若源節(jié)點為常量賦值,則回溯模塊30可以確定未回溯到外部輸入點,當前敏感調用點安全,停止回溯。

進一步地,若回溯模塊30找到多個輸出所述變量參數(shù)且執(zhí)行順序先于所述敏感調用點的調用點,則確定所述多個調用點中執(zhí)行順序最接所述近敏感調用點的為所述前驅調用點。

回溯模塊30在根據(jù)變量參數(shù)進行數(shù)據(jù)回溯時,可能會遇到多個調用點輸出參數(shù)均為此變量參數(shù),此時,回溯模塊30首先根據(jù)各調用點的執(zhí)行順序,篩選出執(zhí)行順序先于敏感調用點的調用點,也可稱為執(zhí)行順序早于敏感調用點的調用點。

若篩選后,得到的調用點只有一個,則回溯模塊30就可以確定此調用點為當前查找的、用于進一步進行數(shù)據(jù)回溯前驅調用點;若篩選后,得到的調用點有多個,則此時回溯模塊30根據(jù)這多個調用點的執(zhí)行順序,確定執(zhí)行順序最晚、但早于敏感調用點的調用點為當前查找的、用于進一步進行數(shù)據(jù)回溯前驅調用點,也即確定執(zhí)行順序最接近敏感調用點的為前驅調用點。

例如,若輸出a的調用點包括調用點2、調用點3,則獲取調用點2、調用點3的執(zhí)行順序。若調用點2先于調用點3執(zhí)行,敏感調用點晚于調用點3執(zhí)行,則調用點3的執(zhí)行順序更加接近敏感調用點,確定調用點3為前驅調用點;若調用點3先于調用點2執(zhí)行,敏感調用點晚于調用點2執(zhí)行,則調用點2的執(zhí)行順序更加接近敏感調用點,確定調用點2為前驅調用點。

同理,在后續(xù)回溯數(shù)據(jù)時,若遇到多個調用點輸出的參數(shù)均為當前回溯的參數(shù)、無法確定前驅調用點的情況時,選取執(zhí)行順序早于當前調用點、且最接近當前調用點的為前驅調用點,繼續(xù)進行數(shù)據(jù)回溯。

由此,在有多個調用點輸出變量參數(shù)時,回溯模塊30可以唯一確定前驅調用點,實現(xiàn)了通過調用點時序,進行數(shù)據(jù)回溯和外部輸入點的查找。

進一步地,作為另一種實施方式,所述回溯模塊30還用于,

若所述前驅調用點將所述變量參數(shù)作為賦值輸出,則獲取所述變量參數(shù)對應的右值;若所述右值為外部輸入點輸入的變量,則確定所述外部輸入點為所述敏感調用點對應的外部輸入點;若所述右值為常量賦值,則停止回溯,確定未找到所述敏感調用點對應的外部輸入點。

若敏感調用點的變量參數(shù)值是由前驅參數(shù)的賦值決定的,也即傳遞給敏感調用點、對變量參數(shù)進行賦值的參數(shù)是前驅調用點的賦值,則回溯模塊30回溯對應的右值,也即對傳遞給敏感調用點的變量參數(shù)進行賦值的右值。

若此右值是外部輸入點輸入的變量,也即前驅調用點是根據(jù)外部輸入點輸入的變量對輸出的參數(shù)進行賦值的,則可以確定此外部輸入點為敏感調用點對應的外部輸入點。

若右值為常量賦值,則回溯模塊30可以確定當前數(shù)據(jù)鏈安全,未回溯到外部輸入點,停止回溯。

由此,回溯模塊30實現(xiàn)了對函數(shù)調用和賦值的數(shù)據(jù)追蹤,保障了回溯調用點的完整性和準確性。

確定模塊40,用于若成功查找到所述敏感調用點對應的外部輸入點,則確定所述外部輸入點為所述應用軟件的安全漏洞。

若成功回溯數(shù)據(jù)找到敏感調用點對應的外部輸入點,則找到的外部輸入點可能會被利用輸入數(shù)據(jù),調用此敏感調用點,給應用軟件帶來安全隱患。

由此,確定模塊40可以確定此外部輸入點為應用軟件的安全漏洞,進行漏洞上報。

在本實施例中,采集模塊10基于預先在應用軟件敏感調用點配置的插樁,采集應用軟件運行過程中流經敏感調用點的數(shù)據(jù)流信息,進行動態(tài)的數(shù)據(jù)采集,模擬應用軟件實際運行的狀態(tài),相對于靜態(tài)數(shù)據(jù)來說采集的數(shù)據(jù)更具有真實性,能夠更好的進行應用軟件的安全性檢測,提高安全漏洞檢測效率;然后,判斷模塊20根據(jù)流經敏感調用點的數(shù)據(jù)流信息,判斷敏感調用點是否被污點數(shù)據(jù)污染;若敏感調用點被污染,則敏感調用點可能被外部輸入點關聯(lián)調用,影響應用軟件安全,此時,回溯模塊30根據(jù)敏感調用點的變量參數(shù),回溯查找敏感調用點對應的外部輸入點,也即查找更夠調用敏感調用點的外部輸入點;若成功查找到敏感調用點對應的外部輸入點,則確定模塊40確定此找到的外部輸入點為應用軟件的安全漏洞,會給應用軟件帶來風險。本實施例中基于應用軟件運行過程中的關鍵調用和數(shù)據(jù)處理操作的實時監(jiān)控輸出,通過離線自動污點數(shù)據(jù)傳播分析,檢測應用潛在的安全漏洞。通過采用動態(tài)插樁和離線數(shù)據(jù)流分析動靜態(tài)結合的檢測技術,能夠覆蓋應用軟件更深層次功能和邏輯檢查,不存在漏報,且采集的數(shù)據(jù)來自實際運行過程,真實有效,不存在誤報,大大提高了應用軟件的安全漏洞檢測效率。

進一步地,參照圖7,本發(fā)明應用軟件安全漏洞檢測系統(tǒng)第二實施例提供一種應用軟件安全漏洞檢測系統(tǒng),基于上述本發(fā)明應用軟件安全漏洞檢測系統(tǒng)第一實施例,所述應用軟件安全漏洞檢測系統(tǒng)還包括:

污點模塊50,用于當所述應用軟件運行時,在所述應用軟件的各外部輸入點輸入污點數(shù)據(jù)。

當應用軟件的敏感調用點已經配置好插樁,啟動運行時,或在應用軟件運行的過程中,污點模塊50通過應用軟件的各個外部輸入點,向應用軟件中輸入帶有污染標簽的污點數(shù)據(jù)。

污點數(shù)據(jù)再被輸入應用軟件后,跟隨各調用點的調用,通過賦值、函數(shù)調用等方式,污染關聯(lián)的參數(shù)。若被污染的參數(shù)流經調用點,則可認為此調用點被污點。

若應用軟件運行的過程中敏感調用點被污染,則可以確定外部輸入點輸入的污點數(shù)據(jù)的關聯(lián)參數(shù)能夠流經此敏感調用點進行函數(shù)調用,也即此敏感調用點能夠被外部輸入點調用,存在安全漏洞。然后,回溯???0根據(jù)敏感調用點的數(shù)據(jù)流進行數(shù)據(jù)回溯,查找能夠調用敏感調用點的外部輸入點,此能夠調用敏感調用點的外部輸入點即為應用軟件的安全漏洞。

在本實施例中,當所述應用軟件運行時,污點模塊50在應用軟件的各外部輸入點輸入污點數(shù)據(jù),用以檢測敏感調用點是否被感染,從而根據(jù)被感染的敏感調用點查找對應的安全漏洞,實現(xiàn)了對應用軟件漏洞的檢測。本實施例通過向各外部輸入點輸入污點數(shù)據(jù),使應用軟件運行起來,能夠快速、準確的標記出存在被外部輸入點調用風險的敏感調用點,進而提高風險調用點的準確率,實現(xiàn)對應用軟件深層邏輯的檢測,減少漏洞的誤報和漏報,提高漏洞檢測的效率。

進一步地,本發(fā)明應用軟件安全漏洞檢測系統(tǒng)第三實施例提供一種應用軟件安全漏洞檢測系統(tǒng),基于上述本發(fā)明應用軟件安全漏洞檢測系統(tǒng)第一實施例、第二實施例,所述確定模塊40還用于,

確定回溯找到所述外部輸入點的路徑為危險路徑。

當成功找到敏感調用點對應的外部輸入點時,確定模塊40將找到外部輸入點的路徑信息提取出來,得到從外部輸入點輸入的污點數(shù)據(jù)流向敏感調用點的路徑,以及路徑上被感染的各調用點。

然后,確定模塊40標記此路徑為危險路徑,便于研發(fā)人員了解敏感調用點的具體風險,以提高應用軟件的完全性。

在本實施例中,確定模塊40確定回溯找到敏感調用點對應外部輸入點的路徑為危險路徑,以便于研發(fā)人員進行進一步地漏洞原因分析、提升應用軟件的安全性。

以上僅為本發(fā)明的可選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1