[發明專利]一種數據流跟蹤方法有效
| 申請號: | 201310733715.3 | 申請日: | 2013-12-26 |
| 公開(公告)號: | CN103714288A | 公開(公告)日: | 2014-04-09 |
| 發明(設計)人: | 鄒德清;金海;袁勁楓 | 申請(專利權)人: | 華中科技大學 |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52 |
| 代理公司: | 華中科技大學專利中心 42201 | 代理人: | 朱仁玲 |
| 地址: | 430074 湖北*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 數據流 跟蹤 方法 | ||
技術領域
本發明屬于計算機安全領域,更具體地說,本發明涉及一種數據流跟蹤方法。
背景技術
數據流跟蹤技術是一種在信息安全領域被廣泛使用的安全技術。采用字節級的污點標記對低級的機器狀態(CPU寄存器、物理內存、磁盤塊等等)進行污點標記,同時攔截和分析系統指令流,分析出指令流對污點標記的影響從而更新和維護污點標記。為了獲得數據流跟蹤所需的細粒度分析能力,污點跟蹤系統需要采用動態二進制插樁技術對目標應用程序進行插樁或者通過模擬器運行目標系統。
基于動態二進制插樁技術實現的污點跟蹤系統由于需要獲得被目標程序更高的權限級,因此通常只適用于應用層的應用程序的插樁。基于模擬器的污點跟蹤系統通過在模擬器比如QEMU中運行整個目標系統環境,能夠對內核級的代碼進行跟蹤。但是,當前基于模擬器實現的污點跟蹤系統比如TEMU、Argos等,都存在性能開銷過大的問題。
QEMU模擬器在對CPU進行模擬運行目標系統時,首先通過對目標系統的二進制代碼塊進行反匯編,翻譯成一種類似精簡指令集計算機(Reduced?Instruction?Set?Computer,RISC)的平臺無關的中間指令,然后進一步將這些中間指令編譯成能夠運行于宿主操作系統上的指令運行。傳統的基于QEMU的污點跟蹤系統在實現時都是在中間指令級進行修改,然而一條x86指令往往會被翻譯成多條中間指令,比如對于push%ebx這條x86指令,QEMU會將其翻譯成對應的5條中間指令:ld_i32tmp0,env,$0xc;ld_i32tmp2,env,$0x10;movi_i32tmp14,$0xfffffffc;add_i32tmp2,tmp2,tmp14;qemu_st32tmp0,tmp2,$0x0;st_i32tmp2,env,$0x10。因此對于一條x86指令,原本只需要進行一次污點更新操作,基于中間指令實現,將會產生對應的多次污點傳播更新操作,而其中大部分操作都是對QEMU內部變量進行的跟蹤更新,是無用的操作。基于中間指令實現的污點跟蹤系統,實現簡單直接,卻存在大量無用的操作,導致性能開銷比較大。
發明內容
針對現有技術的以上缺陷或改進需求,本發明提供了一種數據流跟蹤方法,該方法基于模擬器進行數據流跟蹤的優化,包括對客戶操作系統指令進行反匯編的階段、編譯產生宿主機執行代碼的階段和最終代碼執行的階段,其中:
在對客戶操作系統指令進行反匯編的階段,模擬器對客戶操作系統指令進行反匯編的同時產生污點指令,污點指令為特定的編碼形式,固定大小為4個字節,包括操作碼(opcode)、源操作數、目的操作數以及ArgLogPos字段;
在編譯產生宿主機執行代碼的階段,對之前產生的污點指令進行編譯產生宿主機上運行的指令,每一個污點指令對應于一個處理函數,用于執行該污點指令代表的污點更新操作;
在最終代碼執行階段,開啟新的線程執行污點指令,進行污點跟蹤的操作,執行的過程就是逐條取出污點指令并調用污點指令處理函數。
進一步優選地,所述污點指令固定大小為4個字節,其中包括操作碼(opcode),占4個bit位;源操作數和目的操作數,分別占6個bit位,以及ArgLogPos字段,占16個bit位,ArgLogPos字段指定了內存操作數地址在共享緩存ArgLog的位置。
進一步優選地,在所述客戶操作系統指令進行反匯編的階段,具體進行如下操作:
(1-1)取出客戶操作系統的一條指令進行反匯編;
(1-2)判斷當前客戶操作系統的指令是否會產生污點傳播;如果不會產生污點傳播,則轉入步驟(1-6);
(1-3)判斷當前客戶操作系統的指令是否包括內存操作數,即是否需要動態獲取內存操作數的地址;如果沒有包括內存操作數,則轉入步驟(5);
(1-4)在ArgLog共享緩存中分配一塊空間,用于后面保存動態獲取的內存操作數地址,將該空間在ArgLog中的地址寫入污點指令的ArgLogPos字段中;
(1-5)分析客戶操作系統的指令,編碼污點指令的opcode,源操作數和目的操作數字段;
(1-6)判斷當前客戶操作是否還有指令需要進行翻譯;如果還有指令需要進行翻譯,則轉入步驟(1-1)。
進一步優選地,在編譯產生宿主機執行代碼的階段,具體進行如下操作:
(2-1)從第一階段生成的污點指令緩存中取出一條污點指令;
(2-2)判斷當前污點指令是否存在處理函數;如果已經存在處理函數,則轉入步驟(2-6);
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華中科技大學,未經華中科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310733715.3/2.html,轉載請聲明來源鉆瓜專利網。





