V-Gas:生成高 gas 消耗输入以避免 out-of-gas 漏洞
密码学与安全
2021-02-22 v2
摘要
当智能合约程序被提供导致过度 gas 消耗的输入时,会发生 out-of-gas 错误,并易被利用发起 DoS 攻击。已有多种方法被提出以估计智能合约中函数的 gas 上限来避免此类错误。然而,当合约复杂时经常发生低估。本工作中,我们提出 V-Gas,可自动生成最大化 gas 消耗的输入并减少低估情况。V-Gas 基于反馈导向的变异模糊测试设计。首先,V-Gas 构建智能合约中函数的 gas 加权控制流图(CFG)。然后,V-Gas 开发 gas 消耗引导的选择与变异策略以生成最大化 gas 消耗的输入。为评估,我们基于 js-evm(一个广泛使用的用 javascript 编写的以太坊虚拟机)实现 V-Gas,并对以太坊上记录的 736 笔真实交易进行实验。44.02% 的交易在 solc 给出的估计结果下会出现 out-of-gas 错误,意味着那些记录交易的真实 gas 消耗大于 solc 估计的 gas 上限值。而 V-Gas 可将低估比例降至 13.86%。此外,V-Gas 在这些广泛使用的智能合约中暴露了 25 个先前未知的 out-of-gas 漏洞,其中 5 个已在美国国家漏洞数据库中被分配唯一的 CVE 标识符。
引用
@article{arxiv.1910.02945,
title = {V-Gas: Generating High Gas Consumption Inputs to Avoid Out-of-Gas Vulnerability},
author = {Fuchen Ma and Ying Fu and Meng Ren and Wanting Sun and Houbing Song and Yu Jiang and Jun Sun and Jiaguang Sun},
journal= {arXiv preprint arXiv:1910.02945},
year = {2021}
}