[發明專利]基于靜態污點分析和符號執行的安卓應用漏洞挖掘方法有效
| 申請號: | 201611113164.0 | 申請日: | 2016-12-07 |
| 公開(公告)號: | CN106709356B | 公開(公告)日: | 2019-05-24 |
| 發明(設計)人: | 付朧玉;楊超;楊力;馬建峰;羅丹;盧璐 | 申請(專利權)人: | 西安電子科技大學 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57 |
| 代理公司: | 陜西電子工業專利中心 61205 | 代理人: | 王品華;朱紅星 |
| 地址: | 710071 陜*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 漏洞挖掘 污點 控制流 分析 漏洞 數據流分析 分析目標 符號執行 內存消耗 應用程序漏洞 反編譯程序 技術過濾 靜態符號 挖掘 可用 誤報 源碼 編譯 過濾 應用 打印 警告 配置 研究 | ||
1.一種基于靜態污點分析和符號執行的安卓應用漏洞挖掘方法,包括:
1)配置分析目標并解析源碼:
1a)構造兩個鏈表結構,分別用來保存用戶定義在配置文件中的污染源函數source和陷入函數sink;
1b)輸入安卓程序源碼,調用開源java語義分析工具soot對二進制源碼進行逆向拆解,輸出可讀的中間語言代碼存儲在內存中;
2)控制流分析:
2a)調用java開源分析工具soot,輸入步驟1b)生成的中間語言代碼,輸出函數內控制流圖CFG到內存中;
2b)遍歷步驟2a)生成的控制流圖CFG,收集其中的函數調用語句,從這些函數調用語句中直接提取出函數調用關系,用這些函數調用關系的集合作為函數調用圖CG,利用該調用圖CG與2a)生成的控制流圖CFG共同構成過程間控制流圖ICFG;
2c)構造一個無參數的空函數D,把過程間控制流圖ICFG中所有的入口都加入D函數中,使D成為過程間控制流圖ICFG的總入口;
3)用戶確認source函數:
3a)構造一個函數集合M,從2d)中的D函數開始,遍歷過程間控制流圖ICFG中除首個節點外的其它節點,并將遍歷過程中遇到的全部函數加入集合M中;
3b)從3a)得到的函數集合M中尋找source函數,將source函數在程序中的位置寫入文本文件中,并輸出給用戶;
3c)用戶對3b)的文本文件進行選擇,系統根據選擇結果更新記錄source函數的鏈表;
4)數據流分析:
4a)以3)中的D函數為起點,遍歷過程間控制流圖ICFG,每次提取圖中的一個節點;
4b)對4a)提取的節點進行判斷,當提取到的節點包含source函數時,記錄該語句節點上的變量為污染數據;
4c)對4a)提取的節點進行判斷,當提取到的節點不包含source函數或sink函數時,調用開源靜態污點分析工具FlowDroid中的數據流函數F進行數據污染傳遞;
4d)對4a)提取的節點進行判斷,當提取到的節點包含sink函數的時,檢查污染數據是否在當前的sink函數中,若是,則以當前sink函數為終點生成一條污染路徑;
4e)遍歷完過程間控制流圖ICFG后,結束數據流分析,并生成污染路徑集合來記錄4d)生成的所有污染路徑;
5)靜態符號執行:
5a)遍歷4e)中生成的污染路徑集合,每次讀取一條污染路徑L;
5b)記錄污染路徑L中分支語句的條件表達式,并用字母符號替換條件表達式中的變量,生成符號表達式;
5c)新建文本文件SF.smt2,按照可滿足性理論2.0版本SMT2的標準格式,將5b)收集的符號表達式進行字符串拼接,并寫入文本文件SF.smt2中;
5d)調用微軟公司的符號約束求解器Z3求解文本文件SF.smt2中的符號表達式,若求得符號表達式無解,就將當前污染路徑L從污染路徑集合中刪除,否則不做處理;
5e)求解完所有的污染路徑后,若污染路徑集合不為空,則警告用戶程序存在漏洞,并且打印污染路徑集合,若為空,則提示無漏洞。
2.根據權利要求1所述的方法,其特征在于,所述步驟1a)中的配置文件,是用戶用來定義source函數和sink函數的文本文件,在該文件中以“<包名+類名+返回值+函數名+參數>”的形式設置source函數和sink函數。
3.根據權利要求1所述的方法,其特征在于,所述步驟2a)中的函數內控制流圖CFG,是通過調用開源java語義分析工具soot實現的,其中soot輸出的控制流圖CFG以雙向鏈表的形式表示,并且在控制流圖CFG中每個語句節點都通過保存其前驅節點和后繼節點來記錄語句間的順序關系。
4.根據權利要求1所述的方法,其特征在于,所述步驟2b)中的函數調用圖CG,是通過將調用函數和被調用的函數進行映射,并將映射關系保存在調用語句節點中來實現的。
5.根據權利要求1所述的方法,其特征在于,所述步驟2c)中的函數D,是過程間控制流圖ICFG的總入口,其構造過程是通過遍歷過程間控制流圖ICFG,并將其中的安卓生命周期函數和回調函數加入到一個新創建的無參函數中來完成的。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安電子科技大學,未經西安電子科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611113164.0/1.html,轉載請聲明來源鉆瓜專利網。





