- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Flayer公开应用程序内部
外 文 翻 译
Flayer: 公开应用程序内部
Will Drewry 和 Tavis Ormandy
Google, Inc.
HYPERLINK mailto:{wad,taviso}@ {wad,taviso}@
摘 要
Flayer是动态公开应用程序内部安全检测与分析的工具。它是实现在动态二进制仪表框架valgrind [ 17]和它的内存错误检查插件Memcheck[21 ]。本文着重探讨了Flayer的应用,其支持库,和它们的软件安全应用。Flayer提供污点,或标记,数据流分析和任意改变流仪表机制。Flayer提高事先污点追踪工具位精度。污染传播计算为每一个创造价值的存储器或寄存器操作。这些计算使用动态仪器嵌入在目标应用程序的运行代码。相同的技术被用来允许用户控制条件跳跃的结果和跨过函数调用。Flayer的功能为实施安全工具和技术提供了一个坚实的基础。特别是,本文提出了一种有效的故障注入测试技术和自动化库,libflayer。除了这些贡献,它探讨了技术漏洞补丁和引导源代码审核。Flayer发现真正的软件的错误。在过去的一年里,它的使用已经取得了安全关键软件的合适的缺陷发现,包括OpenSSH 和 OpenSSL 。
第一章 介绍
软件中漏洞未被发现常常是由于复杂的代码路径导致的。最近,工具试图了解这些路径和修改正在运行的应用程序代码,检测错误的范围从未定义的内存使用[21]到符号转换错误[15]到无限的内存访问。此外,象征性评价和分析框架,像EXE[8]和SAGE[12],以及其他多个执行路径分析工具[16],已开始通过自动生成的危险输入,来增加这方面的努力。虽然执行路径或数据流,分析技术已经使用超过三十年[7],实用的分析工具如白盒测试和审计方案,最近才变得司空见惯[15][12][8][32][19]。本文介绍的Flayer,一个执行流程分析和修改工具,和一种补充绒毛测试[14]技术。Flayer是作为一个插件,使用动态二进制仪表框架Valgrind[17]的核心功能内存错误检测插件memcheck[21]。它跟踪应用程序在执行过程中的污染或标记的输入数据流和记录条件跳跃和系统调用的遍历。最近的作品,如autodaf′e[32]和Byakugan[19],也依赖于理解一个过程的输入流。然而,这些工具使用的污点跟踪输入模式匹配技术,缺乏Flayer动态二进制仪表基础方法的准确性。Flayer改善现有的污点跟踪软件,像TaintCheck[18]和Catchconv[15],通过增加精确的污点传播。这个精度允许污染数据传播到位域和位阵列,为执行应用程序创建更准确的冲击输入。此外,Flayer不完全是一个污点追踪工具。它还提供重新定向与输入无关的数据流。根据用户提供的参数,Flayer可以测试条件跳跃和函数调用的结果。此外,自动执行和结果处理库,LibFlayer,可以使用一个交互式shell界面,FlayerSh,方便人机交互。Flayer的数据流追踪和变更功能应用,flaying,提供了一种方式,直接暴露代码后掩盖的复杂代码路径。这种方法结合了随机模糊测试结果,但仍然是一种有效的测试技术。
1.1 论文结构
本文的其他部分讨论Flayer的实现和应用。第二章详细描述了Flayer的实现。第三章介绍了一种新的模糊测试技术。第四章介绍了在使用Flayer和它的支持库下,其它的可用技术。第五章介绍提交的软件和技术已经成功地发现与安全相关的应用程序漏洞的现实世界的经验。第六章详细描述未来的工作。第七章给出得到的结论。
第二章 Flayer
2.1 基础
Flayer是在Valgrind一个插件的基础上实施的,检测运行时的机器代码。特别的,它是根据内存检测功能。内存检测是Valgrind一个插件,提供四种内存错误检测:字节级寻址,堆分配,内存块参数重叠,定义检测。这些定义中,定义检测是Flayer污染传播特征的基础。Valgrind提供的其他功能是用来检测污染源和控制流变动。此外,Valgrind的默认错误输出和强大的命令行参数处理机制,使用一个简单的包装库LibFlayer使其易于自动化。
2.2 位精度污点跟踪
当数据包含创造值的操作时,污染是元数据传播中标记数据的过程。位精度污点跟踪的应用会分成三个逻辑块:初始化污点分配,污点传播和通知,污点去除。
根据源文件中指定的命令行给数据标记污染。以下源文件是支持的:网络,文件和标准输入。所有来自网络、文件系统和标准输入的数据都通过目标应用系统调用来标记污染。大多数情况下,这些是读取系统调用处理的。由于数据通过核心借口进入应用,检测调用会检测源文件描述符是否污染,目标内存地址是否标记。此外,rec
文档评论(0)