SnapChange 模糊测试工具开源项目

我要开发同款
白开水不加糖2023年05月12日
87阅读
开发技术PythonRust
所属分类测试工具、开发工具
授权协议Apache-2.0

作品详情

SnapChange是AWS名为 Find&Fix内部团队开发的一种模糊测试工具,网络安全研究人员可以使用它通过在KVM虚拟机中重放物理内存快照来发现漏洞。模糊测试通过监视系统在处理随机数据时的行为方式来发现软件安全问题。

Snapchange提供了将原始内存转储和注册状态加载到KVM虚拟机(VM)中以供执行的能力。在执行过程中,可以通过重置KVM发现的脏页或模糊器手动弄脏的页面,将此VM重置为初始状态。

旨在:

使用KVM重放物理内存和注册状态快照跨多核并行执行为guestVM提供一组内省功能通过断点覆盖实时覆盖状态模糊器组件的实时性能指标提供模糊测试实用程序,例如单步调试跟踪、测试用例最小化和测试用例覆盖输入抽象以允许自定义变异和生成策略示例从模糊器模板创建目标模糊器

$cp-r-Lfuzzer_templateyour_new_fuzzer修改your_new_fuzzer/create_snapshot.sh以获取目标的快照

更新src/fuzzer.rs以将变异数据注入guestVM

#[derive(Default)]pubstructTemplateFuzzer;implFuzzerforTemplateFuzzer{//ThetypeofInputbeingfuzzed.Usedtoknowhowtogenerateandmutateusefulinputs.typeInput=Vec<u8>;//ThestartingaddressofthesnapshotconstSTART_ADDRESS:u64=0x402363;//ThemaximumlengthofmutatedinputtogenerateconstMAX_INPUT_LENGTH:usize=100;fnset_input(&mutself,input:&Self::Input,fuzzvm:&mutFuzzVm<Self>)->Result<()>{//WritethemutatedinputintothedatabufferintheguestVMfuzzvm.write_bytes_dirty(VirtAddr(0x402004),CR3,&input)?;Ok(())}fnreset_breakpoints(&self)->Option<&[BreakpointLookup]>{Some(&[//ResetwhentheVMhitsexample1!main+0x123BreakpointLookup::SymbolOffset("example1!main",0x123)])}}开始使用16个内核进行模糊测试

$cargorun-r--fuzz-c16
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论