[發(fā)明專利]一種基于中間語言分析的控制流完整性保護(hù)方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 201711236825.3 | 申請日: | 2017-11-30 |
| 公開(公告)號: | CN107908955B | 公開(公告)日: | 2019-11-12 |
| 發(fā)明(設(shè)計(jì))人: | 金海;羌衛(wèi)中;王世振 | 申請(專利權(quán))人: | 華中科技大學(xué) |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52;G06F21/55;G06F8/41;G06F8/53 |
| 代理公司: | 華中科技大學(xué)專利中心 42201 | 代理人: | 廖盈春;李智 |
| 地址: | 430074 湖北*** | 國省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 中間 語言 分析 控制 完整性 保護(hù) 方法 系統(tǒng) | ||
本發(fā)明公開了一種基于中間語言分析的控制流完整性保護(hù)方法及系統(tǒng),包括:將源代碼翻譯成LLVM中間語言;將二進(jìn)制程序反匯編成LLVM中間語言,LLVM中間語言生成的二進(jìn)制程序被執(zhí)行時(shí)的跳轉(zhuǎn)信息對應(yīng)基于LLVM中間語言分析生成的控制流;基于LLVM中間語言中函數(shù)的信息,生成調(diào)用點(diǎn)哈希值和被調(diào)用點(diǎn)的哈希值,調(diào)用點(diǎn)的哈希值和被調(diào)用點(diǎn)的哈希值相同;將LLVM中間語言匯編為匯編代碼,并將調(diào)用點(diǎn)哈希值和被調(diào)用點(diǎn)的哈希值插入?yún)R編代碼,生成可執(zhí)行程序,調(diào)用點(diǎn)哈希值和被調(diào)用點(diǎn)的哈希值用于在可執(zhí)行程序運(yùn)行時(shí)檢查其是否受到攻擊;當(dāng)可執(zhí)行程序受到攻擊時(shí),調(diào)用點(diǎn)哈希值和被調(diào)用點(diǎn)的哈希值不匹配,控制流不完整,停止運(yùn)行可執(zhí)行程序。本發(fā)明可以保證控制流的完整性。
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地,涉及一種基于中間語言分析的控制流完整性保護(hù)方法及系統(tǒng)。
背景技術(shù)
緩沖區(qū)溢出漏洞一直是計(jì)算機(jī)軟件存在的問題。通過利用緩沖區(qū)溢出漏洞,攻擊者能對內(nèi)存任意讀寫,從而修改代碼指針,最終劫持控制流以完成攻擊意圖。控制流劫持攻擊和防御是近幾年學(xué)術(shù)研究的熱點(diǎn)。為了保護(hù)內(nèi)存安全,學(xué)術(shù)和工業(yè)界不斷研究并部署有效的保護(hù)措施。已有很多保護(hù)措施被廣泛采納,如DEP(Data Execution Prevention)、ASLR(Address Space Layout Randomization)、GS/SSP(Stack Smashing Protector)和SafeSEH(Safe Structured Exception Handling)。但仍有多項(xiàng)攻擊技術(shù),可以繞過以上這些保護(hù)措施。為此,控制流完整性的概念被提出。控制流完整性保護(hù)不直接保護(hù)內(nèi)存安全,而是檢查控制流是否被劫持,從而判斷是否受到攻擊。控制流完整性保護(hù)方案通常會在程序運(yùn)行之前為程序生成一個(gè)控制流圖,在程序運(yùn)行時(shí)利用已生成的控制流圖來監(jiān)控程序的行為,以確保程序控制流符合控制流圖。當(dāng)發(fā)現(xiàn)程序控制流不符合控制流圖時(shí),通常的做法就是發(fā)出警告并終止程序。
傳統(tǒng)上,控制流劫持攻擊以ret指令、間接jmp指令和間接call指令為目標(biāo)控制程序指針。目前,越來越多的攻擊者開始使用C++應(yīng)用中的虛調(diào)用作為攻擊目標(biāo)。在針對Chrome的攻擊中,80%的攻擊利用user-after-free漏洞和虛函數(shù)調(diào)用;并且,Chrome中91.8%的間接調(diào)用為虛函數(shù)調(diào)用。50%的針對Window7的攻擊利用user-after-free漏洞和虛函數(shù)調(diào)用。新的攻擊方式COOP可以繞過沒有考慮C++語義的防護(hù)手段,通過修改虛表指針(vptr)在不改變原有控制流的情況下構(gòu)建攻擊。
針對虛表劫持攻擊,學(xué)術(shù)界分別提出了針對二進(jìn)制程序和源代碼的解決方案。源代碼層的解決方案,通過分析源代碼可以獲取類繼承結(jié)構(gòu)的信息,在函數(shù)的調(diào)用點(diǎn)和被調(diào)用點(diǎn)插入由函數(shù)名、參數(shù)列表、修飾符和類型信息編碼生成的哈希值,在函數(shù)調(diào)用時(shí)通過匹配函數(shù)的哈希值來判斷調(diào)用的合法性。基于源代碼的解決方案無法應(yīng)用于缺少源代碼的二進(jìn)制應(yīng)用程序。基于二進(jìn)制的解決方案,通過數(shù)據(jù)流可控制流分析,分析出虛表和類繼承結(jié)構(gòu),虛函數(shù)被調(diào)用時(shí),判斷虛表指針是否指向正確的虛表。缺點(diǎn)是無法從二進(jìn)制完全恢復(fù)出所有虛表。另一種基于二進(jìn)制的解決方案,通過分析匯編代碼,確定函數(shù)調(diào)用點(diǎn)和被調(diào)用點(diǎn)的參數(shù)比較來判斷是否受到續(xù)表劫持攻擊。這兩種方案的都屬于粗粒度的解決方案。
綜上所述,現(xiàn)有的針虛表劫持攻擊的控制流完整性保護(hù)方法存在以下不足:源代碼層的解決方案無法對二進(jìn)制應(yīng)用程序進(jìn)行保護(hù),二進(jìn)制層的解決方案粒度太大,可能會到精心設(shè)計(jì)的虛表劫持攻擊的威脅。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于解決現(xiàn)有的針虛表劫持攻擊的控制流完整性保護(hù)方法存在以下不足:源代碼層的解決方案無法對二進(jìn)制應(yīng)用程序進(jìn)行保護(hù),二進(jìn)制層的解決方案粒度太大,可能會到精心設(shè)計(jì)的虛表劫持攻擊的威脅的技術(shù)問題。
為實(shí)現(xiàn)上述目的,第一方面,本發(fā)明提供一種基于中間語言分析的控制流完整性保護(hù)方法,包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華中科技大學(xué),未經(jīng)華中科技大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711236825.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過限制訪問計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過限制訪問或處理程序或過程
- 自動檢測文件中搭配錯誤的系統(tǒng)和方法
- 網(wǎng)絡(luò)連接裝置及網(wǎng)絡(luò)連接裝置的語言環(huán)境設(shè)定方法
- 一種口語評測方法及裝置
- 一種語言設(shè)置方法及移動終端
- 一種語言文本加載方法和裝置
- 一種語言交流人工智能系統(tǒng)及其語言處理方法
- 語言序列標(biāo)注方法、裝置存儲介質(zhì)及計(jì)算機(jī)設(shè)備
- 一種基于語言包實(shí)現(xiàn)繼電保護(hù)裝置多語言版本方法及裝置
- 一種應(yīng)用軟件的多語言核對方法及系統(tǒng)
- 多語言字幕顯示方法、裝置、終端設(shè)備及存儲介質(zhì)





