引用格式:羅治祥,向棲,李樂言.基于污點(diǎn)分析的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].網(wǎng)絡(luò)安全與數(shù)據(jù)治理,2023,42(11):1-7.
0引言
近年來,隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,軟件行業(yè)迅速發(fā)展,軟件的體量、種類不斷增大。同時(shí),由于程序代碼編寫不規(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]兩大類,靜態(tài)分析這一方法相較于動(dòng)態(tài)測(cè)試具有更高的覆蓋率以及性能效率?,F(xiàn)有的靜態(tài)分析方案大多都基于源碼級(jí)別[3]進(jìn)行分析,雖然可以在比較高的程度上滿足軟件安全需要,但是在許多真實(shí)的安全測(cè)試場(chǎng)景中,需要分析對(duì)象大多屬于常見的二進(jìn)制文件,比如商業(yè)軟件、車機(jī)固件、嵌入式系統(tǒng)固件等。此時(shí)安全研究人員難以獲得相應(yīng)的源代碼,源碼級(jí)靜態(tài)分析方案不再適用?,F(xiàn)今商業(yè)化的二進(jìn)制程序漏洞分析系統(tǒng)基本不具備可二次開發(fā)的擴(kuò)展性,而開源的二進(jìn)制程序漏洞分析系統(tǒng),比如 angr[4] 、 BAP[5] 、 BinAbsInspector等優(yōu)秀的靜態(tài)分析工具存在一些適用性問題。其中,angr 和 BAP 正逐步發(fā)展為通用分析框架,而不僅僅專注于二進(jìn)制漏洞掃描,這使得內(nèi)部分析算法變得復(fù)雜,不便于后續(xù)的擴(kuò)展和優(yōu)化。BinAbsInspector是基于Ghidra的插件,使用Java編寫開發(fā),提供的API比較有限,在可擴(kuò)展性上有所欠缺,普通的二進(jìn)制安全研究員無法有效地基于該工具進(jìn)行自定義開發(fā)。因此,構(gòu)建一款在性能和可擴(kuò)展性上較為突出,同時(shí)也滿足于真實(shí)場(chǎng)景需要的二進(jìn)制程序漏洞檢測(cè)系統(tǒng)刻不容緩。
針對(duì)上述問題,Tan[6]等基于Java提出了一種較為簡(jiǎn)易的指針分析[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語法樹,最后依據(jù)AST語法樹得到程序抽象數(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庫中的pyDatalog可以替代常見的Datalog引擎,且性能方面相差無幾。
文章詳細(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,李樂言1,3
(1工業(yè)和信息化部電子第五研究所,廣東廣州511370;2東北大學(xué)軟件學(xué)院,遼寧沈陽110819;3智能產(chǎn)品質(zhì)量評(píng)價(jià)與可靠性保障技術(shù)工業(yè)和信息化部重點(diǎn)實(shí)驗(yàn)室,廣東廣州511370)
