基于指令集隨機(jī)化的抗代碼注入攻擊方法
發(fā)布時(shí)間:2021-06-25 11:19
代碼注入攻擊是應(yīng)用程序面臨的一種主要安全威脅,尤其是Web應(yīng)用程序,該種攻擊源于攻擊者能夠利用應(yīng)用程序存在的漏洞/后門,向服務(wù)器端注入惡意程序并執(zhí)行,或者利用應(yīng)用程序?qū)τ脩糨斎氲膮?shù)缺乏驗(yàn)證和過濾,造成輸入作為惡意程序執(zhí)行,從而達(dá)到攻擊目的。源程序分析和輸入規(guī)則匹配等現(xiàn)有防御方法在面對(duì)代碼注入攻擊時(shí)都存在著固有缺陷,為了提高Web應(yīng)用程序?qū)τ诖a注入攻擊的防御性,提出一種基于指令集隨機(jī)化的抗代碼注入方法,該防御方法不依賴于攻擊者采用何種攻擊方式,能夠抵御未知的代碼注入攻擊;谠摷夹g(shù)及動(dòng)態(tài)、冗余構(gòu)造方法,設(shè)計(jì)一套原型系統(tǒng),采用廣義隨機(jī)Petri網(wǎng)(Generalized Stochastic PetriNet,GSPN)建模計(jì)算,攻擊者即使在獲得隨機(jī)化方法先驗(yàn)知識(shí)的情況下也極難突破系統(tǒng)的防御機(jī)制。盡管該方法需要對(duì)應(yīng)用程序源代碼進(jìn)行隨機(jī)化變換,但處理過程是完全自動(dòng)化和具有普適性的,通過實(shí)驗(yàn)和現(xiàn)網(wǎng)測(cè)試表明該方法能夠有效抵御大部分代碼注入攻擊,實(shí)現(xiàn)了對(duì)攻擊的主動(dòng)防御。
【文章來源】:信息安全學(xué)報(bào). 2020,5(04)CSCD
【文章頁數(shù)】:14 頁
【部分圖文】:
Zend虛擬機(jī)中代碼執(zhí)行過程Figure4CodeexecutionprocessinZendvirtualmachine
鬯??;PHP程序若執(zhí)行include()、require()等具有PHP程序調(diào)用功能的函數(shù),重復(fù)步驟③;PHP程序若執(zhí)行mysqli_query()、oci_execute()等具有數(shù)據(jù)庫(kù)操作功能的函數(shù),則進(jìn)行步驟④,數(shù)據(jù)庫(kù)完成操作后將結(jié)果返回至PHP解釋器,如步驟⑤所示;PHP程序若執(zhí)行exec()、system()等具有系統(tǒng)命令執(zhí)行功能的函數(shù),則進(jìn)行步驟⑥,操作系統(tǒng)完成調(diào)用后將結(jié)果返回至PHP解釋器,如步驟⑦所示;最終服務(wù)器端通過HTTP協(xié)議將結(jié)果返回至客戶端,如步驟⑧所示。圖1Alexa排名前100萬網(wǎng)站類型統(tǒng)計(jì)Figure1TypeStatisticsbyAlexaTop1MillionWebsite圖1給出了W3Techs根據(jù)Alexa排名前100萬網(wǎng)站的類型統(tǒng)計(jì),PHP網(wǎng)站數(shù)量占比達(dá)到78.8%,排名首位,PHP語言已然成為目前全球范圍內(nèi)應(yīng)用最廣泛的服務(wù)器端編程語言。因此,接下來將以PHP應(yīng)用程序?yàn)榇斫榻B代碼注入攻擊的過程和特點(diǎn)。攻擊者向服務(wù)器端注入惡意程序并執(zhí)行,或者輸入惡意的數(shù)據(jù)作為程序執(zhí)行,從而實(shí)現(xiàn)注入攻擊目的。針對(duì)Web應(yīng)用程序的注入型攻擊,代碼注入攻擊通常發(fā)生在步驟②;命令注入攻擊通常發(fā)生在步驟④;而SQL注入攻擊通常發(fā)生在步驟⑥,其中相較于命令注入攻擊和SQL注入攻擊而言,代碼注入攻擊不需要獲得相關(guān)操作系統(tǒng)、數(shù)據(jù)庫(kù)的先驗(yàn)知識(shí),攻擊方式較為多樣,攻擊范圍更為廣泛。表1給出了PHP應(yīng)用程序中代碼注入攻擊普遍利用的函數(shù)和關(guān)鍵字,這些函數(shù)和關(guān)鍵字具備代碼執(zhí)行或者接收函數(shù)回調(diào)的功能。2.2主要防御方法目前,代碼注入攻擊的安全防護(hù)方法主要源于程序分析和輸入規(guī)則匹配兩種技術(shù)思路
32JournalofCyberSecurity信息安全學(xué)報(bào),2020年7月,第5卷,第4期圖2典型Web應(yīng)用架構(gòu)Figure2TypicalWebapplicationarchitecture表1PHP代碼注入攻擊常利用的函數(shù)和關(guān)鍵字Table1FunctionsandkeywordscommonlyusedinPHPcode-injectionattacks具有代碼執(zhí)行功能的函數(shù)或關(guān)鍵字函數(shù)或關(guān)鍵字注入位置函數(shù)或關(guān)鍵字注入位置eval0assert0preg_replace(‘/.*/e’,...)1create_function1include0include_once0require0require_once0具有函數(shù)回調(diào)功能的函數(shù)或關(guān)鍵字函數(shù)或關(guān)鍵字回調(diào)位置函數(shù)或關(guān)鍵字回調(diào)位置ob_start0array_diff_uassoc–1array_diff_ukey–1array_filter1array_intersect_uassoc–1array_intersect_ukey–1array_map0array_reduce1array_udiff_assoc–1set_exception_handler0array_udiff–1array_uintersect_assoc–1sqlite_create_function2array_uintersect–1array_walk_recursive1array_walk1assert_options1uasort1uksort1usort1preg_replace_callback1spl_autoload_register0iterator_apply1call_user_func0call_user_func_array0register_shutdown_function0register_tick_function0set_error_handler0確定不同變量對(duì)于應(yīng)用程序的作用,避免不規(guī)范的變量設(shè)置造成的注入攻擊,更復(fù)雜地能夠構(gòu)造參數(shù)集合進(jìn)行變量賦值,并跟蹤執(zhí)行路徑來檢查應(yīng)用程序在邏輯層面的注入漏洞,例如動(dòng)態(tài)符號(hào)執(zhí)行、動(dòng)態(tài)污點(diǎn)分析等技術(shù)方法。程序分析方法對(duì)于代碼注入攻擊能夠起到一定的防御作用,但是隨著應(yīng)用程序越來越復(fù)雜,該方法將面臨著以下問題:(1)靜態(tài)源程序分析結(jié)果無法阻止攻擊發(fā)生,若禁用危險(xiǎn)的函數(shù)和關(guān)鍵字,將會(huì)影響程序
【參考文獻(xiàn)】:
期刊論文
[1]進(jìn)程控制流劫持攻擊與防御技術(shù)綜述[J]. 王豐峰,張濤,徐偉光,孫蒙. 網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2019(06)
[2]運(yùn)行時(shí)代碼隨機(jī)化防御代碼復(fù)用攻擊[J]. 張貴民,李清寶,曾光裕,趙宇韜. 軟件學(xué)報(bào). 2019(09)
[3]基于GSPN的擬態(tài)DNS構(gòu)造策略研究[J]. 任權(quán),鄔江興,賀磊. 信息安全學(xué)報(bào). 2019(02)
[4]基于擬態(tài)防御架構(gòu)的多余度裁決建模與風(fēng)險(xiǎn)分析[J]. 李衛(wèi)超,張錚,王立群,鄔江興. 信息安全學(xué)報(bào). 2018(05)
[5]代碼復(fù)用對(duì)抗技術(shù)研究進(jìn)展[J]. 喬向東,郭戎瀟,趙勇. 網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2018(03)
[6]應(yīng)用于動(dòng)態(tài)異構(gòu)web服務(wù)器的相似度求解方法[J]. 馬博林,張錚,劉健雄. 計(jì)算機(jī)工程與設(shè)計(jì). 2018(01)
[7]基于硬件的動(dòng)態(tài)指令集隨機(jī)化框架的設(shè)計(jì)與實(shí)現(xiàn)[J]. 杜三,舒輝,康緋. 網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2017(11)
[8]內(nèi)存數(shù)據(jù)污染攻擊和防御綜述[J]. 馬夢(mèng)雨,陳李維,孟丹. 信息安全學(xué)報(bào). 2017(04)
[9]基于軟硬件多樣性的主動(dòng)防御技術(shù)[J]. 仝青,張錚,鄔江興. 信息安全學(xué)報(bào). 2017(01)
[10]web服務(wù)器擬態(tài)防御原理驗(yàn)證系統(tǒng)測(cè)試與分析[J]. 張錚,馬博林,鄔江興. 信息安全學(xué)報(bào). 2017(01)
本文編號(hào):3249118
【文章來源】:信息安全學(xué)報(bào). 2020,5(04)CSCD
【文章頁數(shù)】:14 頁
【部分圖文】:
Zend虛擬機(jī)中代碼執(zhí)行過程Figure4CodeexecutionprocessinZendvirtualmachine
鬯??;PHP程序若執(zhí)行include()、require()等具有PHP程序調(diào)用功能的函數(shù),重復(fù)步驟③;PHP程序若執(zhí)行mysqli_query()、oci_execute()等具有數(shù)據(jù)庫(kù)操作功能的函數(shù),則進(jìn)行步驟④,數(shù)據(jù)庫(kù)完成操作后將結(jié)果返回至PHP解釋器,如步驟⑤所示;PHP程序若執(zhí)行exec()、system()等具有系統(tǒng)命令執(zhí)行功能的函數(shù),則進(jìn)行步驟⑥,操作系統(tǒng)完成調(diào)用后將結(jié)果返回至PHP解釋器,如步驟⑦所示;最終服務(wù)器端通過HTTP協(xié)議將結(jié)果返回至客戶端,如步驟⑧所示。圖1Alexa排名前100萬網(wǎng)站類型統(tǒng)計(jì)Figure1TypeStatisticsbyAlexaTop1MillionWebsite圖1給出了W3Techs根據(jù)Alexa排名前100萬網(wǎng)站的類型統(tǒng)計(jì),PHP網(wǎng)站數(shù)量占比達(dá)到78.8%,排名首位,PHP語言已然成為目前全球范圍內(nèi)應(yīng)用最廣泛的服務(wù)器端編程語言。因此,接下來將以PHP應(yīng)用程序?yàn)榇斫榻B代碼注入攻擊的過程和特點(diǎn)。攻擊者向服務(wù)器端注入惡意程序并執(zhí)行,或者輸入惡意的數(shù)據(jù)作為程序執(zhí)行,從而實(shí)現(xiàn)注入攻擊目的。針對(duì)Web應(yīng)用程序的注入型攻擊,代碼注入攻擊通常發(fā)生在步驟②;命令注入攻擊通常發(fā)生在步驟④;而SQL注入攻擊通常發(fā)生在步驟⑥,其中相較于命令注入攻擊和SQL注入攻擊而言,代碼注入攻擊不需要獲得相關(guān)操作系統(tǒng)、數(shù)據(jù)庫(kù)的先驗(yàn)知識(shí),攻擊方式較為多樣,攻擊范圍更為廣泛。表1給出了PHP應(yīng)用程序中代碼注入攻擊普遍利用的函數(shù)和關(guān)鍵字,這些函數(shù)和關(guān)鍵字具備代碼執(zhí)行或者接收函數(shù)回調(diào)的功能。2.2主要防御方法目前,代碼注入攻擊的安全防護(hù)方法主要源于程序分析和輸入規(guī)則匹配兩種技術(shù)思路
32JournalofCyberSecurity信息安全學(xué)報(bào),2020年7月,第5卷,第4期圖2典型Web應(yīng)用架構(gòu)Figure2TypicalWebapplicationarchitecture表1PHP代碼注入攻擊常利用的函數(shù)和關(guān)鍵字Table1FunctionsandkeywordscommonlyusedinPHPcode-injectionattacks具有代碼執(zhí)行功能的函數(shù)或關(guān)鍵字函數(shù)或關(guān)鍵字注入位置函數(shù)或關(guān)鍵字注入位置eval0assert0preg_replace(‘/.*/e’,...)1create_function1include0include_once0require0require_once0具有函數(shù)回調(diào)功能的函數(shù)或關(guān)鍵字函數(shù)或關(guān)鍵字回調(diào)位置函數(shù)或關(guān)鍵字回調(diào)位置ob_start0array_diff_uassoc–1array_diff_ukey–1array_filter1array_intersect_uassoc–1array_intersect_ukey–1array_map0array_reduce1array_udiff_assoc–1set_exception_handler0array_udiff–1array_uintersect_assoc–1sqlite_create_function2array_uintersect–1array_walk_recursive1array_walk1assert_options1uasort1uksort1usort1preg_replace_callback1spl_autoload_register0iterator_apply1call_user_func0call_user_func_array0register_shutdown_function0register_tick_function0set_error_handler0確定不同變量對(duì)于應(yīng)用程序的作用,避免不規(guī)范的變量設(shè)置造成的注入攻擊,更復(fù)雜地能夠構(gòu)造參數(shù)集合進(jìn)行變量賦值,并跟蹤執(zhí)行路徑來檢查應(yīng)用程序在邏輯層面的注入漏洞,例如動(dòng)態(tài)符號(hào)執(zhí)行、動(dòng)態(tài)污點(diǎn)分析等技術(shù)方法。程序分析方法對(duì)于代碼注入攻擊能夠起到一定的防御作用,但是隨著應(yīng)用程序越來越復(fù)雜,該方法將面臨著以下問題:(1)靜態(tài)源程序分析結(jié)果無法阻止攻擊發(fā)生,若禁用危險(xiǎn)的函數(shù)和關(guān)鍵字,將會(huì)影響程序
【參考文獻(xiàn)】:
期刊論文
[1]進(jìn)程控制流劫持攻擊與防御技術(shù)綜述[J]. 王豐峰,張濤,徐偉光,孫蒙. 網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2019(06)
[2]運(yùn)行時(shí)代碼隨機(jī)化防御代碼復(fù)用攻擊[J]. 張貴民,李清寶,曾光裕,趙宇韜. 軟件學(xué)報(bào). 2019(09)
[3]基于GSPN的擬態(tài)DNS構(gòu)造策略研究[J]. 任權(quán),鄔江興,賀磊. 信息安全學(xué)報(bào). 2019(02)
[4]基于擬態(tài)防御架構(gòu)的多余度裁決建模與風(fēng)險(xiǎn)分析[J]. 李衛(wèi)超,張錚,王立群,鄔江興. 信息安全學(xué)報(bào). 2018(05)
[5]代碼復(fù)用對(duì)抗技術(shù)研究進(jìn)展[J]. 喬向東,郭戎瀟,趙勇. 網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2018(03)
[6]應(yīng)用于動(dòng)態(tài)異構(gòu)web服務(wù)器的相似度求解方法[J]. 馬博林,張錚,劉健雄. 計(jì)算機(jī)工程與設(shè)計(jì). 2018(01)
[7]基于硬件的動(dòng)態(tài)指令集隨機(jī)化框架的設(shè)計(jì)與實(shí)現(xiàn)[J]. 杜三,舒輝,康緋. 網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2017(11)
[8]內(nèi)存數(shù)據(jù)污染攻擊和防御綜述[J]. 馬夢(mèng)雨,陳李維,孟丹. 信息安全學(xué)報(bào). 2017(04)
[9]基于軟硬件多樣性的主動(dòng)防御技術(shù)[J]. 仝青,張錚,鄔江興. 信息安全學(xué)報(bào). 2017(01)
[10]web服務(wù)器擬態(tài)防御原理驗(yàn)證系統(tǒng)測(cè)試與分析[J]. 張錚,馬博林,鄔江興. 信息安全學(xué)報(bào). 2017(01)
本文編號(hào):3249118
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/3249118.html
最近更新
教材專著