基于动态输入追踪的模糊技术
1 概述
随着信息技术的广泛应用,软件安全漏洞所造成的危害正日益严重。软件安全漏洞发掘作为一种预先发现软件潜在安全漏洞、保证信息安全的重要技术,也越来越受到人们的重视。目前国内外常用的漏洞自动发掘技术主要有手工分析、模糊(fuzzing)技术、补丁比较、源码自动分析和动态调试等。
软件安全漏洞发掘技术大致分为基于源代码的漏洞发掘技术和基于可执行文件的漏洞发掘技术。然而现在大多数软件都不是开源的,如各种商业软件和操作系统软件等,因此,针对可执行文件的漏洞发掘技术显得尤为重要。
fuzzing 测试是通过提供非正常的输入并监测系统异常发现软件安全漏洞的自动化方法。它的基本原理是将利用正确数据随机修改得到的畸形数据注入应用程序中,观察运行结果(程序崩溃或者异常中断),通过程序运行的错误来挖掘软件的脆弱点。fuzzing 测试的思想比较直观,便于实现自动化。利用这种方法进行漏洞发掘,发现漏洞到定位漏洞比较容易,并且不存在误报,但却能揭示出程序中的重要漏洞,目前正广泛应用于各类软件漏洞的发掘,在近几年的漏洞挖掘实践过程中取得了很好的效果。
虽然经过多年的发展fuzzing 技术已经取得长足的进步,但是仍然存在较多的不足,主要体现在以下4 个方面:
(1)测试数据生成有一定程度的盲目性,不能进行有针对性的测试,因此数据变化空间难以控制。(2)代码覆盖问题,通常生成的大量测试用例分布在某些特定的分支和状态上,而一些特殊的分支或者状态得不到覆盖,因此代码的测试完整性不足。(3)生成用例难以通过软件的正确性和一致性检测,造成生成大量无效测试用例,或需要人工对复杂的文件格式进行分析,测试效率低下。(4)难以发现需要几个输入同时起作用才能引发的异常或多阶段综合条件触发的复杂漏洞。本文在结合了静态分析和动态分析技术的基础上,提出一种基于动态输入路径追踪的fuzzing 技术进行软件安全漏洞发掘的新思路,较好地解决了上述问题。
2 总体框架与关键技术
2.1 基本框架
基于动态输入跟踪的fuzzing 技术的基本原理为:将待测软件的可执行代码反汇编为汇编代码,通过静态分析汇编代码,确定函数块及其调用关系,并查找代码分支选择信息以供生成测试用例,动态跟踪输入数据的流向以确定错误注入点,将测试用例注入后若无异常发生则恢复注入前的进程快照重新进行fuzzing,其基本框架如图1 所示。
2.2 基于反汇编的输入路径追踪技术
相关文章
- 2023-02-13含参考光路的时间差法动态调焦式光学测头
- 2021-11-11汽车发动机ECU系统研发技术解析
- 2023-04-07佳木斯电机CAPP解决方案
- 2022-12-04基于MSP430的便携式钢丝绳张力测试仪的研制
- 2023-10-17LGA风机圆盘式消声器的灵敏度分析与结构动力修改
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。