[發明專利]一種基于虛擬執行模式的Flash漏洞檢測方法有效
| 申請號: | 201210190206.6 | 申請日: | 2012-06-11 |
| 公開(公告)號: | CN102693396A | 公開(公告)日: | 2012-09-26 |
| 發明(設計)人: | 王建新;彭程;聶石婧;董蘋蘋 | 申請(專利權)人: | 中南大學 |
| 主分類號: | G06F21/22 | 分類號: | G06F21/22 |
| 代理公司: | 長沙市融智專利事務所 43114 | 代理人: | 黃美成 |
| 地址: | 410083 湖南*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 虛擬 執行 模式 flash 漏洞 檢測 方法 | ||
1.一種基于虛擬執行模式的Flash漏洞檢測方法,其特征在于,包括以下步驟:
步驟1:將待檢測的Flash文件進行反編譯,得到ActionScript代碼;
步驟2:對ActionScript代碼進行單詞掃描及詞法分析,即將ActionScript代碼轉換成單詞流,并對每個單詞的類型進行分析,單詞的類型包括保留字、標識符、符號、數字;
步驟3:構建生成樹:
以生成樹存儲ActionScript代碼:生成樹中每個結點用于存儲ActionScript的一行語句,若某結點具有子結點,則每個子結點存儲的ActionScript語句是其父節點的ActionScript語句的子語句;
步驟4:對每個結點中的語句進行結構分析,得到類結構信息,其中語句結構包括類定義語句、類成員變量定義語句及類的成員函數定義語句;在分析ActionScript代碼結構時,對代碼逐行進行掃描,若發現關鍵字“class”則為類定義語句,關鍵字“function”則為類的成員函數定義語句;若找到關鍵字“var”或“const”則為類成員變量定義語句;
標記所有函數的狀態為“未執行”;
步驟5:基于類結構信息生成虛擬執行流程,并將虛擬執行流程放入虛擬執行流程棧中;
步驟6:漏洞檢測過程:
從虛擬執行流程棧依次取出一個流程并執行,將該流程中調用過的函數標記為“已執行”狀態,在流程執行過程中進行漏洞規則匹配,如果匹配成功,則提示存在漏洞,否則執行下一個從虛擬執行流程棧取出的流程;直到最后一個流程執行完成;
步驟7:輸出漏洞檢測結果,檢測結束。
2.根據權利要求1所述的基于虛擬執行模式的Flash漏洞檢測方法,其特征在于,在步驟6的流程執行過程中,判斷是否遇到分支語句,若遇到分支語句,根據判定覆蓋原理新增虛擬執行流程,存入虛擬執行流程棧中;
3.根據權利要求1所述的基于虛擬執行模式的Flash漏洞檢測方法,其特征在于,在步驟6的流程執行過程中,當虛擬執行流程棧為空時,即虛擬執行流程棧中的流程都已經執行完畢時,進一步判斷是否仍有函數狀態為“未執行”,如果是,則為未執行的函數生產新的虛擬執行流程并存入虛擬執行流程棧中,并返回到步驟6的開始;否則跳轉至步驟7。
4.根據權利要求1所述的基于虛擬執行模式的Flash漏洞檢測方法,其特征在于,漏洞規則匹配的過程為:一個虛擬執行流程執行完畢,根據當前變量信息進行漏洞規則匹配,若符合某漏洞規則,則表示該Flash文件具有漏洞,若所有漏洞規則都不符合,則表示該Flash文件是安全的。
5.根據權利要求1所述的基于虛擬執行模式的Flash漏洞檢測方法,其特征在于,漏洞規則存儲在漏洞規則庫中,漏洞規則庫是根據CVE關于Flash的漏洞報告所編寫的函數集,每個函數對應一個Flash漏洞匹配規則。
6.根據權利要求1-5任一項所述的基于虛擬執行模式的Flash漏洞檢測方法,其特征在于,所述虛擬執行流程的包括如下設置:
1)虛擬執行流程包含所需執行代碼段的開始結點m_pBegNode和結束結點m_pEndNode,兩結點確定代碼段的范圍;包含一個指針m_pNode,指示當前所執行語句的結點,指針的初始位置為虛擬執行流程的開始結點;
2)虛擬執行流程包含兩個指針m_pFunction和m_pClass,m_pFunction指示所需執行代碼段所屬的函數,m_pClass指示所需執行代碼段所屬的類;
3)每個虛擬執行流程包含一個變量m_vars,用于存儲該流程所需的所有變量信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中南大學,未經中南大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210190206.6/1.html,轉載請聲明來源鉆瓜專利網。





