引用格式:羅治祥,向棲,李樂言.基于污點分析的二進制程序漏洞檢測系統(tǒng)設計與實現[J].網絡安全與數據治理,2023,42(11):1-7.
0引言
近年來,隨著計算機技術的不斷發(fā)展,軟件行業(yè)迅速發(fā)展,軟件的體量、種類不斷增大。同時,由于程序代碼編寫不規(guī)范,編寫過程存在疏忽,或者缺乏軟件安全方面的意識等,導致軟件的安全性承受巨大威脅。針對這一現狀,構建漏洞檢測系統(tǒng)對軟件進行安全檢測是最行之有效的辦法之一,可在一定程度上發(fā)現并且及時消除潛在的漏洞。
軟件的安全檢測方法通??梢苑譃閯討B(tài)測試[1]和靜態(tài)分析[2]兩大類,靜態(tài)分析這一方法相較于動態(tài)測試具有更高的覆蓋率以及性能效率?,F有的靜態(tài)分析方案大多都基于源碼級別[3]進行分析,雖然可以在比較高的程度上滿足軟件安全需要,但是在許多真實的安全測試場景中,需要分析對象大多屬于常見的二進制文件,比如商業(yè)軟件、車機固件、嵌入式系統(tǒng)固件等。此時安全研究人員難以獲得相應的源代碼,源碼級靜態(tài)分析方案不再適用?,F今商業(yè)化的二進制程序漏洞分析系統(tǒng)基本不具備可二次開發(fā)的擴展性,而開源的二進制程序漏洞分析系統(tǒng),比如 angr[4] 、 BAP[5] 、 BinAbsInspector等優(yōu)秀的靜態(tài)分析工具存在一些適用性問題。其中,angr 和 BAP 正逐步發(fā)展為通用分析框架,而不僅僅專注于二進制漏洞掃描,這使得內部分析算法變得復雜,不便于后續(xù)的擴展和優(yōu)化。BinAbsInspector是基于Ghidra的插件,使用Java編寫開發(fā),提供的API比較有限,在可擴展性上有所欠缺,普通的二進制安全研究員無法有效地基于該工具進行自定義開發(fā)。因此,構建一款在性能和可擴展性上較為突出,同時也滿足于真實場景需要的二進制程序漏洞檢測系統(tǒng)刻不容緩。
針對上述問題,Tan[6]等基于Java提出了一種較為簡易的指針分析[7]算法,該算法在使用Datalog[8]引擎支撐之后,在構建好的程序抽象數據上進行分析,使得性能得到較大的提升。對于獲取二進制程序抽象數據而言,普遍的做法是反編譯[9]二進制程序生成IR中間表示,進一步對其進行優(yōu)化和轉換得到其AST語法樹,最后依據AST語法樹得到程序抽象數據,比較好的工具有IDA Pro、Ghidra、Binary Ninja等。本文設計系統(tǒng)選取了IDA Pro進行程序抽象數據獲取,使用IDA Pro特有的IDAPython,從原生角度適配了IDA Pro提供各項API接口,從可擴展性上兼具了Python腳本跨平臺、易擴展等優(yōu)點;從性能方面,Python庫中的pyDatalog可以替代常見的Datalog引擎,且性能方面相差無幾。
文章詳細內容下載請點擊:基于污點分析的二進制程序漏洞檢測系統(tǒng)設計與實現AET-電子技術應用-最豐富的電子設計資源平臺 (chinaaet.com)
作者信息:
羅治祥1,向棲2,李樂言1,3
(1工業(yè)和信息化部電子第五研究所,廣東廣州511370;2東北大學軟件學院,遼寧沈陽110819;3智能產品質量評價與可靠性保障技術工業(yè)和信息化部重點實驗室,廣東廣州511370)