SnapChange模糊测试工具
SnapChange 是 AWS 名为 Find & Fix 内部团队开发的一种模糊测试工具,网络安全研究人员可以使用它通过在 KVM 虚拟机中重放物理内存快照来发现漏洞。模糊测试通过监视系统在处理随机数据时的行为方式来发现软件安全问题。
Snapchange 提供了将原始内存转储和注册状态加载到 KVM 虚拟机 (VM) 中以供执行的能力。在执行过程中,可以通过重置 KVM 发现的脏页或模糊器手动弄脏的页面,将此 VM 重置为初始状态。
旨在:
- 使用 KVM 重放物理内存和注册状态快照
- 跨多核并行执行
- 为 guest VM 提供一组内省功能
- 通过断点覆盖实时覆盖状态
- 模糊器组件的实时性能指标
- 提供模糊测试实用程序,例如单步调试跟踪、测试用例最小化和测试用例覆盖
- 输入抽象以允许自定义变异和生成策略
示例
从模糊器模板创建目标模糊器
$ cp -r -L fuzzer_template your_new_fuzzer
修改your_new_fuzzer/create_snapshot.sh
以获取目标的快照
更新src/fuzzer.rs
以将变异数据注入 guest VM
#[derive(Default)] pub struct TemplateFuzzer; impl Fuzzer for TemplateFuzzer { // The type of Input being fuzzed. Used to know how to generate and mutate useful inputs. type Input = Vec<u8>; // The starting address of the snapshot const START_ADDRESS: u64 = 0x402363; // The maximum length of mutated input to generate const MAX_INPUT_LENGTH: usize = 100; fn set_input(&mut self, input: &Self::Input, fuzzvm: &mut FuzzVm<Self>) -> Result<()> { // Write the mutated input into the data buffer in the guest VM fuzzvm.write_bytes_dirty(VirtAddr(0x402004), CR3, &input)?; Ok(()) } fn reset_breakpoints(&self) -> Option<&[BreakpointLookup]> { Some(&[ // Reset when the VM hits example1!main+0x123 BreakpointLookup::SymbolOffset("example1!main", 0x123) ]) } }
开始使用 16 个内核进行模糊测试
$ cargo run -r -- fuzz -c 16
评论
DomatoGoogle 模糊测试工具
Domato是Google开源模糊测试工具,用于测试浏览器DOM引擎。组成部分:可以生成给定输入语法的样本的基本引擎。这部分是非常通用的,除了DOM模糊之外,它也可以应用于其他问题。解析参数并使用基本
DomatoGoogle 模糊测试工具
0
BuzzereBPF 模糊测试工具链
Buzzer是一个用于eBPF的模糊测试工具链,允许编写eBPF模糊测试策略。模糊测试策略是一种生成随机eBPF程序然后验证它们没有意外行为的方法。使用安装 bazel运行bazelbuild:buz
BuzzereBPF 模糊测试工具链
0
OSS-FuzzGoogle 模糊测试服务
OSS-FuzzOSS-Fuzz能够针对开源软件进行持续的模糊测试,它的目的是利用更新的模糊测试技术与可拓展的分布式执行相结合,提高一般软件基础架构的安全性与稳定性。OSS-Fuzz结合了多种模糊测试
OSS-FuzzGoogle 模糊测试服务
0
ClusterFuzz模糊测试基础设施
ClusterFuzz是一个模糊测试基础设施,研发到现在已经有 8年时间,其旨在无缝地融入开发人员工作流程,并使得查找bug并修复它们变得非常简单。ClusterFuzz提供端到端的自动化,从bug检
ClusterFuzz模糊测试基础设施
0