[發明專利]一種二進制代碼授權漏洞檢測方法有效
| 申請號: | 202110103327.1 | 申請日: | 2021-01-26 |
| 公開(公告)號: | CN112800423B | 公開(公告)日: | 2022-10-11 |
| 發明(設計)人: | 唐宇;王旭;王凱旋;孫海龍;劉旭東 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F21/56 | 分類號: | G06F21/56 |
| 代理公司: | 北京中創陽光知識產權代理有限責任公司 11003 | 代理人: | 尹振啟 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 二進制 代碼 授權 漏洞 檢測 方法 | ||
1.一種二進制代碼授權漏洞檢測方法,其特征在于:包含四個流程:二進制文件加載,漏洞特征匹配,靜態程序分析,以及符號執行;
所述二進制文件加載流程對輸入的文件分析文件內部程序的語法結構,首先分析二進制文件的指令集架構,然后將二進制文件反匯編為一段匯編代碼指令序列,采用VEX IR的指令表示規范,將不同指令集架構的匯編代碼進一步翻譯成相同規范的中間表達式,最終得到一段中間表達式序列,以及包含各個內存區域地址范圍的二進制文件的內存分區,所述二進制文件的內存分區包含靜態數據段、代碼段、堆空間、??臻g各個內存區域的地址范圍;
所述漏洞特征匹配流程針對硬編碼口令和越權網絡訪問的行為特征進行識別,縮小待檢測的程序路徑的范圍,以經驗分析方法為主的人工特征挖掘,通過分析漏洞的原理和代碼模式,歸納出可觸發漏洞的程序路徑的關鍵行為特征,最終通過匹配漏洞的行為特征,縮減程序分析起始點的集合;
所述靜態程序分析流程包含控制流分析、數據依賴分析、函數調用分析三個子步驟:所述控制流分析步驟根據語法結構,將原始程序劃分為基本過程塊,通過定義并查找決策點、匯聚點等控制結構,將基本過程塊連接成完整的控制流圖;所述數據依賴分析步驟在控制流圖上的迭代分析生成數據依賴圖,進而分析出程序中的不同部分之間的關聯;所述函數調用分析步驟生成函數調用圖,基于函數調用圖獲取程序路徑上的函數調用鏈;
所述符號執行流程對程序中的各個函數分別計算函數摘要,使得程序狀態在函數調用鏈上以組合而非連續的方式進行迭代,并利用所述程序路徑的起始點和所述漏洞的觸發點的集合,基于符號執行方法驗證目標程序路徑的可滿足性,對于可滿足的觸發漏洞的程序路徑,算法將通過約束求解計算并輸出程序路徑的輸入,而后使用得到的程序路徑的起始點、觸發點和輸入基于程序分析方法進行人工驗證。
2.如權利要求1所述的一種二進制代碼授權漏洞檢測方法,其特征在于:所述硬編碼口令的行為特征的識別采用字符串比較操作的識別作為檢測策略,在匯編代碼層面采用模式匹配方法,以字符串加載和調用比較函數兩個階段進行識別字符串的比較;所述字符串加載階段,將待比較的兩個字符串地址加載到與指令架構相關的特定寄存器,一個是用戶輸入的字符串,即當前函數的某個參數,另一個是靜態數據區的字符串,即某個內存地址;所述調用比較函數階段采用比較函數的方法判斷是否調用比較函數。
3.如權利要求2所述的一種二進制代碼授權漏洞檢測方法,其特征在于:所述比較函數的方法為通過靜態分析方法識別出所有的C語言的標準庫文件中定義的用于比較的標準庫函數名稱及函數地址,判斷是否調用了支持比較字符串的標準庫函數;或通過創建一個循環結構,在其中逐位比較兩個字符串地址存儲的值,當兩個階段均識別成功后,進行后續的符號執行分析,驗證該硬編碼口令所影響的程序路徑是否可以到達指定的程序點或輸出授權成功的相關信息。
4.如權利要求3所述的一種二進制代碼授權漏洞檢測方法,其特征在于:所述越權網絡訪問的行為特征的識別通過檢測Web服務程序中處理網絡訪問與授權請求的主函數,針對httpd、thttpd、goahead、boa、lighttpd五種Web服務程序框架,歸納其處理網絡請求的相關函數的代碼文本與行為特征,采用模式匹配的方法定位目標函數。
5.如權利要求4所述的一種二進制代碼授權漏洞檢測方法,其特征在于:所述計算函數摘要的方法為:輸入程序的函數調用圖,對程序中的每個函數計算函數摘要,即對函數調用圖中的每個節點計算摘要,迭代調用getOneLeafFromCG方法,在靜態分析階段生成的函數調用圖上進行迭代,每次迭代時獲取圖中的一個葉節點,然后在圖中刪除該節點,調整圖的結構,不斷從函數調用圖中獲取新的節點,然后調用getAllPathFromNode方法,針對從函數調用圖中獲得的程序節點,以節點的起始地址生成初始程序狀態進行符號執行,遍歷節點內部的全部程序路徑,最終得到程序終止狀態的集合,對于每個終止狀態,都可以通過回溯程序狀態的歷史信息來還原整條程序路徑,所以就相當于最終得到了所有程序路徑的集合,從節點中解析出所有程序路徑,對于每一條程序路徑分別單獨計算路徑的摘要;在程序路徑上進行迭代計算時會有兩種情況,如果當前的程序狀態的出口不是函數調用,就調用符號執行引擎在該程序路徑上迭代一次,更新程序狀態,如果當前的程序狀態的出口是函數調用,就不調用符號引擎,而是去已經計算出的函數摘要的集合中獲取被調用的函數的函數摘要,利用函數摘要更新當前的程序狀態,最終輸出函數摘要的集合。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110103327.1/1.html,轉載請聲明來源鉆瓜專利網。





