The report from NDSS2020
Broken Metre: Attacking Resource Metering in EVM
研究以太坊中gas测量与dos攻击之间的关系
Background
由于gas的错误计价,导致了dos攻击,现有的例子
EXTCODESIZE:输入地址,返回地址字节码的字节大小;读这个操作高度占用IO,攻击发生时仅需20gas,视频中20年的计价为700(现在是100~2600)
SUICIDE(SELF):类似,最开始的要价为0,可以任意部署合约并自毁实现DOS,现在的要价为5000起步
Methodology
研究的方法是fork aleth,记录操作码执执行时的CPU 内存占用情况
重放交易,研究gas具体和哪些物理资源相关性强。得出的结论
执行时间变化较大的指令依赖于状态,均值和标准差甚至都接近了
标准差大的原因来自于缓存cache,实验结果,如果有页缓存的话,合约运行速度会快28倍,因此可以构造dos攻击,设计一个合约尽可能不命中缓存
本文的设计了资源耗尽攻击,问题转变成了搜索问题
这里同样存在测试用例生成的问题
需要解决栈平衡,没有栈溢出以及内存合法访问;局限性是没有考虑循环
对于指令初始化的问题,参考了经验研究的结果,通过吞吐量来定义权重和概率
实验结果生成了比平均运行时间慢200倍的合约
有了结果后,如何评估现实影响
因为遗传算法是基于aleth做的,还评估了在其他EVM客户端上的影响
改进方法包括提高gas计价、减少IO操作频率短期方法;长期方法有实现无状态的客户端和分片