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
评论