Abstract
背景:动态数据流跟踪技术标记并跟踪感兴趣的数据在程序执行过程中的传播过程。
现状:DFT已经被许多用于不同目的的工具反复实施多次,包括防止0day漏洞和跨站脚本攻击,检查和防止信息泄露,分析合法和恶意的软件。
结果:我们提出libdft,一个动态DFT框架,与之前不同,libdft高效且可以重用,并适用于各种商用软件和硬件。libdft提供了建立DFT工具的API,促进研究。
我们研究了指令级数据流传播实施的几种方式,介绍了一个更有效的64位支持的影子内存,识别并避免过度性能开销的常规陷阱。
1 介绍
DFT,也被称作信息流跟踪,可以跟踪有趣数据在程序执行过程中的传播。它有很多应用场景,包括恶意软件行为检测,增强软件对0day攻击的保护,检测和防止享信息泄露,调试软件配置的错误。从架构的角度来看,它已经集成到全系统模拟器和虚拟机监视器中,通过动态二进制插桩嵌入未经修改的二进制程序中,和通过源到源的转换增加到源代码中,它也被实施于一些硬件。
之前的研究将DFT应用到不同场景下,这带来的问题是高开销和低可重用性。本文认为,一个好用的动态DFT实施应该更快,可重用,适用于一般的硬件和软件。我们介绍了libdft,实施于Pin动态二进制插桩框架。
本文贡献:
- 讨论了一个可用于一般软件的快速可重用的DFT库的设计和实施。
- 性能的边界?
- 实施应该避免哪些问题?
- 开销的来源是什么
- 用现实程序评估libdft的开销
- 开发一个基于libdft的工具,展示它的可重用性
- 本文成果可免费获得
本文组织结构:s2介绍DFT,讨论动态和静态DFT的区别。s3提出libdft,s4实施,s5应用,s6评估,s7限制,s8相关工作,s9总结。
2 Data Flow Tracking
DFT,也被称作信息流跟踪和污点分析,有三方面特征:
- 污染源
- 污染跟踪
- 污染槽
静态vs动态:
静态重编译,动态应用动态二进制插桩。
3 design
libdft基于Pin DBI虚拟框架。
pin包括一个虚拟机库和一个能将虚拟机连接到已有进程或新的进程上的注入器。
pintools是一个能在指令级检查和修改二进制程序,基于pin的api开发的共享库。
libdft也是一个库,pintools能调用它来实施细粒度的dft。它提供了能让用户指定污染源和污染槽甚至污染传播此策略的API。
可以指定三种污染源或污染槽,指令,函数调用,系统调用。
两种标签尺度:8类(一字节)\2类(一位)