最近,AWS(Amazon Web Services)在北美开源峰会上发布了新的开源项目Snapchange,用于查找软件漏洞的新模糊测试工具。

snap changes snap change什么意思_snap changes

Snapchange可以让开发者只要对目标二进制文件进行少量的修改,就能够开始进行模糊测试,找出系统bug。Snapchange依赖KVM(Linux核心内建的虚拟机器管理器)快照,因此需要在有KVM存取权限的机器上执行,并且仅支持x64主机,可用于EC2英特尔处理器的裸机执行实例。

可以说,Snapchange是一个用来构建模糊测试工具的Rust框架,能够重播物理内存快照,高效地对目标进行模糊测试。模糊测试是一种用于发现软件(尤其是开源项目)中安全问题的技术,可以监视系统在处理随机数据时的行为方式。

所谓的快照模糊测试,是通过将系统和应用程序的内存状态保存下来,在后续的测试中,重复使用这些状态,使得开发者可以在相同的条件下多次执行测试,准确地找出程序发生错误的原因。Snapchange需要利用Linux核心内置的虚拟机管理器KVM,因此Snapchange的快照是指正在运行的虚拟机物理内存转存,以及相对应的托管器状态。

Snapchange通过在虚拟机中注入变异资料,对目标进行模糊测试,提供中断点Hook机制,以及多种格式的即时覆盖率报告,还有在调试很实用的单步骤关注功能。开发者可以同时在多个CPU核心上进行模糊测试,大幅提高测试的效率和速度,Snapchange还能同时监控测试结果,当程序发生崩溃,出现像是内存区段错误或是调用Address Sanitizer报告时,Snapchange都能立刻侦测并且回应用户。

Snapchange模糊测试的循环,从快照初始化KVM虚拟机内存状态开始,接着供用户在加载的访客内存中写入变异资料,当程序出现崩溃、超过时或是重置事件发生时,虚拟机将恢复到干净状态,并为下一次输入做准备。

Snapchange仅会重置经过修改的内存分页,如此便能明显减少需要恢复的内存量,加速模糊测试周期。

snap changes snap change什么意思_自动化测试_02

Snapchange最初是由AWS Find and Fix开源安全研究团队的一项实验性项目,目的是探索KVM快照模糊测试的潜力,而现在Snapchange已经成为一个可供研究人员和开发人员,试验快照模糊测试的项目。