[发明专利]一种数据流跟踪方法有效
申请号: | 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.vipzhuanli.com/pat/books/201310733715.3/2.html,转载请声明来源钻瓜专利网。