[發明專利]動態Android程序漏洞驗證方法和裝置在審
| 申請號: | 202010723865.6 | 申請日: | 2020-07-24 |
| 公開(公告)號: | CN111723382A | 公開(公告)日: | 2020-09-29 |
| 發明(設計)人: | 郭帆;秦彪;涂風濤;龍薇 | 申請(專利權)人: | 江西師范大學 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57;G06F21/56 |
| 代理公司: | 南昌市平凡知識產權代理事務所 36122 | 代理人: | 夏材祥 |
| 地址: | 330100 *** | 國省代碼: | 江西;36 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 動態 android 程序 漏洞 驗證 方法 裝置 | ||
1.一種動態Android程序漏洞驗證方法,其特征在于,所述方法包括:
對所述Android程序進行靜態插樁生成dex代碼,運行插樁后的所述Android程序能夠記錄所述Android程序的執行路徑信息Trace;
重復執行所述Android程序直至產生一條同時經過Source 和Sink的所述種子Trace并記錄操作序列;
對所述種子Trace進行污點驗證,確定漏洞是否真實有效;
收集Trace的路徑條件集合,基于污點分析結果并結合活變量分析裁剪大量無需驗證的污點傳播路徑集合,應用基于條件反轉的程序變換方法執行Trace的其他污點傳播路徑。
2.根據權利要求1所述的方法,其特征在于,所述對所述種子Trace進行污點驗證,確定漏洞是否真實有效,包括:
對所述種子Trace進行別名分析獲得程序運行過程中的污點信息;
對所述污點信息進行污點分析得到污點分析結果;
根據所述污點分析結果,確定是否存在一條從Source到Sink的污點傳播路徑;如果存在,則確定漏洞真實有效。
3.根據權利要求2所述的方法,其特征在于,所述確定是否存在一條從Source到Sink的污點傳播路徑之后,所述方法還包括:
如果不存在一條從Source到Sink的污點傳播路徑,則遍歷執行從Source到Sink的所有其他執行路徑;對遍歷過程中生成的子Trace進行別名分析獲得程序運行過程中的污點信息;對所述污點信息進行污點分析得到污點分析結果;根據所述污點分析結果,確定是否存在一條從Source到Sink的污點傳播路徑;
如果遍歷從Source到Sink的所有其他執行路徑的過程中,確定出一條從Source到Sink的污點傳播路徑,則確定漏洞真實有效;
如果遍歷從Source到Sink的所有其他執行路徑后,未確定出一條從Source到Sink的污點傳播路徑,則確定漏洞為虛警。
4.根據權利要求3所述的方法,其特征在于,所述遍歷執行從Source到Sink的所有其他執行路徑,包括:
從Trace中收集Source到Sink的所有條件語句;
結合變量分析、上述污點分析結果得到待反轉的條件語句集合并且分別對它們進行條件取反,生成新的Android程序;
根據所述操作序列重新執行所述新的Android程序,進而獲得反轉條件后的Trace得到所述子Trace。
5.根據權利要求4所述的方法,其特征在于,所述結合變量分析、上述污點分析結果、程序變換方法得到待反轉的條件語句集合,包括:
對于所述所有條件語句的集合中每條條件語句,將同時滿足第一條件、第二條件的條件語句加入待反轉的條件語句集合,其中:
所述第一條件為:在所述Android程序的反向過程間控制流圖中,剪去位于Sink前方的子圖,在剩下的子圖中,以Sink為起點進行過程間的活變量分析,要求條件語句的活變量集合中必須存在至少一個污點變量;
所述第二條件為:如果所述條件語句與Sink屬于同一個方法體內部,那么在這個方法體對應的控制流圖(CFG)中,從該條件語句的另一個分支出發的路徑集合中至少有一條路徑會經過Sink結點。
6.根據權利要求5所述的方法,其特征在于,所述結合活變量分析、上述污點分析結果、程序變換方法得到待反轉的條件語句集合,還包括:
如果條件語句與Sink節點屬于同一方法,并且從條件語句的某個分支出發的路徑集合中不存在任何經過Sink結點的路徑,那么該分支的所有后續路徑都是無效傳播路徑。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于江西師范大學,未經江西師范大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010723865.6/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種葉輪裝置及渦輪流量計
- 下一篇:一種可180度開啟的合頁





