长安链生态工具箱
丰富实用的区块链生态工具不仅可以让开发者部署、开发过程更加得心应手,还可以从能力上扩展区块链应用边界。长安链正在构建强大的生态工具箱以增强在其在各类场景下的应用能力,如智能合约漏洞检测、抗量子多方安全计算、链迁移、密文检索等等
长安链虚拟机测试工具WasmFuzzer
智能合约的安全不仅仅是合约代码安全,来自节点的合约代码将被部署在智能合约虚拟机中,虚拟机负责为区块链上每个节点中的合约代码提供沙箱式的执行环境。虚拟机可能存在有逃逸漏洞、逻辑漏洞、堆栈溢出漏洞、资源滥用漏洞等安全隐患,容易受到外部攻击。
为消除虚拟机的安全隐患,社区针对长安链智能合约虚拟机的特点采用全新Wasm字节码级别的变异方法和自适应变异策略,结合差分测试和蜕变测试等Test Oracle判定方法,推出了长安链智能合约虚拟机模糊测试工具WasmFuzzer。这款Wasm字节码级别的灰盒模糊测试器能够更加快速和全面的触发智能合约虚拟机中的深层次缺陷和漏洞。相比业界经典的AFL工具,测试覆盖率和缺陷检测数量平均提升10%,缺陷检测速度平均提升25%。
WasmFuzzer主要包括三个部分:展示层主要包括命令行接口和测试报告的生成;中间层主要有种子生成、测试用例的变异,变异策略和结果的判定;测试执行引擎包括Forkserver、读写文件和覆盖的获取。
WasmFuzzer有四个核心功能:生成指令、变异模块、错误检测、测试结果。
1. 生成指令:指令是WebAssembly代码当中的基础单位。要完整地测试WebAssembly虚拟机,则需要尽可能地覆盖所有指令,WasmFuzzer提供生成指令的功能。
2. 变异模块:模块是WebAssembly的基本单位。当已有一个模块时,就可以在它上面进行变异,获得一个新的模块,用于模糊测试。WasmFuzzer提供了一定量的变异操作,并设计了变异调度策略。
3. 错误检测:在软件运行过程中,可能会发出一些信号,让外部介入,调用预设的信号处理软件WasmFuzzer进行处理。WasmFuzzer可以记录下当前的运行状态,进而改进测试质量与记录崩溃位置。
4. 测试结果:主要分为3部分——在队列中的WebAssembly字节码、发生独特崩溃的WebAssembly字节码和独特挂起的WebAssembly字节码。
文档链接:https://docs.chainmaker.org.cn/dev/虚拟机测试工具.html