董國良,臧 洌,李 航,甘 露,郭詠科
(1.南京航空航天大學 計算機科學與技術學院,江蘇 南京 211106;2.江南計算技術研究所,江蘇 無錫 214083)
動態污點分析技術(dynamic taint analysis,DTA)是指對非信任來源的數據進行標記,追蹤并記錄其在程序執行中的傳播過程,檢測污點數據的非法使用,以達到獲取關鍵位置與輸入數據關聯信息的分析方法[1]。在對攻擊進行有效分析的同時獲得程序的漏洞所在,且錯誤率較低,實用性很強[2],被廣泛應用于信息安全驗證、惡意代碼分析[3]、隱私泄露分析、協議格式逆向分析[4]等領域[5]。國內近年來的研究成果包括李根博士團隊研發的Hunter[6]和北大王鐵磊博士研究的TaintScope[7],以及基于類型[8]和基于虛擬化[9]技術的動態污點分析技術等。
目前的動態污點分析平臺主要存在準確率與性能兩方面的問題[10],其中準確率問題主要體現在由于“過污染”(over-tainting)引起的誤報,以及由于“欠污染”(under-tainting)造成的漏報問題。另外,早期的粗粒度污點分析[11]平臺在污點標記屬性、污點傳播策略及污點檢測規則定義過程中存在不夠完善的情況,使得漏洞挖掘效率不高,檢測結果不夠準確。
針對上述問題,文中分別在污點分析的三個階段對現有問題進行改進和優化。在污點標識過程中擴充污點狀態定義,添加除“污染”和“未污染”外的第三種污點狀態“間接污染”,細化污點標記過程中定義的污點狀態屬性;在污點傳播過程中,針對X86平臺匯編指令設計了較為完善的污點傳播策略,增加“污點清除”傳播狀態行為實體,分析造成污點清除的目標指令和操作并將其添加入污點傳播策略;……