Fuel虚拟机原本有一个基于cargo-fuzz和libFuzzer的模糊测试工具,但它存在三个主要缺点:无法调用内部合约、执行速度较慢(约50次/秒)、仅能生成随机指令向量作为测试用例。
我们开发的改进方案具有以下特点:
通过分析Sway编译器输出,我们发现需要重新设计测试输入格式。新格式采用包含脚本汇编、脚本数据和被调用合约汇编的字节向量,各部分用64位魔数(0x00ADBEEF5566CEAA)分隔。这使得编译后的Sway程序可以直接作为种子输入。
我们建立了三阶段分析流程:
关键发现:
建议Fuel团队:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。