《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于污點(diǎn)分析的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)*
基于污點(diǎn)分析的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)*
網(wǎng)絡(luò)安全與數(shù)據(jù)治理 11期
羅治祥1,,向棲2,李樂(lè)言1,,3
(1工業(yè)和信息化部電子第五研究所,,廣東廣州511370,;2東北大學(xué)軟件學(xué)院,,遼寧沈陽(yáng)110819,;3智能產(chǎn)品質(zhì)量評(píng)價(jià)與可靠性保障技術(shù)工業(yè)和信息化部重點(diǎn)實(shí)驗(yàn)室,,廣東廣州511370)
摘要: 針對(duì)現(xiàn)階段二進(jìn)制程序的靜態(tài)分析多依賴于人工經(jīng)驗(yàn)規(guī)則導(dǎo)致的低效率問(wèn)題,,以及大多數(shù)二進(jìn)制程序漏洞掃描檢測(cè)系統(tǒng)性能和可擴(kuò)展性較低的問(wèn)題,,設(shè)計(jì)并且實(shí)現(xiàn)了一個(gè)簡(jiǎn)易版的基于污點(diǎn)分析的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)。與現(xiàn)有的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)相比,,本文設(shè)計(jì)的系統(tǒng)改進(jìn)了Java指針?lè)治鲋刑岢龅乃惴?,使得分析過(guò)程的數(shù)據(jù)抽象部分和指針?lè)治霾糠值玫搅朔蛛x,進(jìn)一步簡(jiǎn)化了污點(diǎn)分析,提高了分析的性能和可擴(kuò)展性,。此外,,將漏洞模式單獨(dú)抽離出來(lái),能夠更加方便地進(jìn)行漏洞模式的自定義,。
中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:ADOI:10.19358/j.issn.2097-1788.2023.11.001
引用格式:羅治祥,向棲,李樂(lè)言.基于污點(diǎn)分析的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].網(wǎng)絡(luò)安全與數(shù)據(jù)治理,,2023,42(11):1-7.
Design and implementation of binary program vulnerability detection
Luo Zhixiang1,,Xiang Qi2,Li Leyan1,3
(1Fifth Research Institute of Ministry of Industry and Information Technology, Guangzhou 511370, China;2Software College,,Northeastern University,Shenyang 110819,,China,;3Key Laboratory of Intelligent Product Quality Evaluation and Reliability Assurance Technology, Ministry of Industry and Information Technology, Guangzhou 511370, China)
Abstract: Given the inefficiencies associated with the heavy reliance on manual heuristic rules for static analysis of binary programs at the current stage, and the low performance and scalability of existing binary program vulnerability scanning systems, this paper has designed and implemented a vulnerability detection system for binary programs based on taint analysis. Compared to the existing binary program vulnerability detection systems, the system designed in this paper improves the algorithm proposed in the Java pointer analysis, allowing the data abstraction and pointer analysis portions of the process to be separated. This further simplifies the taint analysis, enhancing its performance and scalability. Additionally, this paper extracts vulnerability patterns separately, making it much easier to customize vulnerability patterns.
Key words : static analysis of binary programs; pointer analysis; taint analysis; vulnerability patterns

0引言

近年來(lái),隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,,軟件行業(yè)迅速發(fā)展,,軟件的體量、種類(lèi)不斷增大,。同時(shí),,由于程序代碼編寫(xiě)不規(guī)范,編寫(xiě)過(guò)程存在疏忽,,或者缺乏軟件安全方面的意識(shí)等,,導(dǎo)致軟件的安全性承受巨大威脅。針對(duì)這一現(xiàn)狀,,構(gòu)建漏洞檢測(cè)系統(tǒng)對(duì)軟件進(jìn)行安全檢測(cè)是最行之有效的辦法之一,,可在一定程度上發(fā)現(xiàn)并且及時(shí)消除潛在的漏洞。

軟件的安全檢測(cè)方法通??梢苑譃閯?dòng)態(tài)測(cè)試[1]和靜態(tài)分析[2]兩大類(lèi),,靜態(tài)分析這一方法相較于動(dòng)態(tài)測(cè)試具有更高的覆蓋率以及性能效率。現(xiàn)有的靜態(tài)分析方案大多都基于源碼級(jí)別[3]進(jìn)行分析,,雖然可以在比較高的程度上滿足軟件安全需要,,但是在許多真實(shí)的安全測(cè)試場(chǎng)景中,,需要分析對(duì)象大多屬于常見(jiàn)的二進(jìn)制文件,,比如商業(yè)軟件、車(chē)機(jī)固件,、嵌入式系統(tǒng)固件等,。此時(shí)安全研究人員難以獲得相應(yīng)的源代碼,源碼級(jí)靜態(tài)分析方案不再適用?,F(xiàn)今商業(yè)化的二進(jìn)制程序漏洞分析系統(tǒng)基本不具備可二次開(kāi)發(fā)的擴(kuò)展性,,而開(kāi)源的二進(jìn)制程序漏洞分析系統(tǒng),比如 angr[4] 、 BAP[5] ,、 BinAbsInspector等優(yōu)秀的靜態(tài)分析工具存在一些適用性問(wèn)題,。其中,angr 和 BAP 正逐步發(fā)展為通用分析框架,,而不僅僅專注于二進(jìn)制漏洞掃描,,這使得內(nèi)部分析算法變得復(fù)雜,不便于后續(xù)的擴(kuò)展和優(yōu)化,。BinAbsInspector是基于Ghidra的插件,,使用Java編寫(xiě)開(kāi)發(fā),提供的API比較有限,,在可擴(kuò)展性上有所欠缺,,普通的二進(jìn)制安全研究員無(wú)法有效地基于該工具進(jìn)行自定義開(kāi)發(fā)。因此,,構(gòu)建一款在性能和可擴(kuò)展性上較為突出,,同時(shí)也滿足于真實(shí)場(chǎng)景需要的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)刻不容緩。

針對(duì)上述問(wèn)題,,Tan[6]等基于Java提出了一種較為簡(jiǎn)易的指針?lè)治?/a>[7]算法,,該算法在使用Datalog[8]引擎支撐之后,在構(gòu)建好的程序抽象數(shù)據(jù)上進(jìn)行分析,,使得性能得到較大的提升,。對(duì)于獲取二進(jìn)制程序抽象數(shù)據(jù)而言,普遍的做法是反編譯[9]二進(jìn)制程序生成IR中間表示,,進(jìn)一步對(duì)其進(jìn)行優(yōu)化和轉(zhuǎn)換得到其AST語(yǔ)法樹(shù),,最后依據(jù)AST語(yǔ)法樹(shù)得到程序抽象數(shù)據(jù),比較好的工具有IDA Pro,、Ghidra,、Binary Ninja等。本文設(shè)計(jì)系統(tǒng)選取了IDA Pro進(jìn)行程序抽象數(shù)據(jù)獲取,,使用IDA Pro特有的IDAPython,,從原生角度適配了IDA Pro提供各項(xiàng)API接口,從可擴(kuò)展性上兼具了Python腳本跨平臺(tái),、易擴(kuò)展等優(yōu)點(diǎn);從性能方面,,Python庫(kù)中的pyDatalog可以替代常見(jiàn)的Datalog引擎,且性能方面相差無(wú)幾,。


文章詳細(xì)內(nèi)容下載請(qǐng)點(diǎn)擊:基于污點(diǎn)分析的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)AET-電子技術(shù)應(yīng)用-最豐富的電子設(shè)計(jì)資源平臺(tái) (chinaaet.com)


作者信息:

羅治祥1,,向棲2,李樂(lè)言1,,3

(1工業(yè)和信息化部電子第五研究所,,廣東廣州511370,;2東北大學(xué)軟件學(xué)院,遼寧沈陽(yáng)110819,;3智能產(chǎn)品質(zhì)量評(píng)價(jià)與可靠性保障技術(shù)工業(yè)和信息化部重點(diǎn)實(shí)驗(yàn)室,,廣東廣州511370)



此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。