0%

BrokenMetre

The report from NDSS2020

Broken Metre: Attacking Resource Metering in EVM

研究以太坊中gas测量与dos攻击之间的关系

Background

由于gas的错误计价,导致了dos攻击,现有的例子

image-20240307172446547

  • EXTCODESIZE:输入地址,返回地址字节码的字节大小;读这个操作高度占用IO,攻击发生时仅需20gas,视频中20年的计价为700(现在是100~2600)

  • SUICIDE(SELF):类似,最开始的要价为0,可以任意部署合约并自毁实现DOS,现在的要价为5000起步

Methodology

研究的方法是fork aleth,记录操作码执执行时的CPU 内存占用情况

重放交易,研究gas具体和哪些物理资源相关性强。得出的结论

image-20240307173221929

执行时间变化较大的指令依赖于状态,均值和标准差甚至都接近了

image-20240307205654017

标准差大的原因来自于缓存cache,实验结果,如果有页缓存的话,合约运行速度会快28倍,因此可以构造dos攻击,设计一个合约尽可能不命中缓存

image-20240307174328557

本文的设计了资源耗尽攻击,问题转变成了搜索问题

image-20240307174735032

这里同样存在测试用例生成的问题

需要解决栈平衡,没有栈溢出以及内存合法访问;局限性是没有考虑循环

image-20240307174911654

对于指令初始化的问题,参考了经验研究的结果,通过吞吐量来定义权重和概率

image-20240307175156521

实验结果生成了比平均运行时间慢200倍的合约

image-20240307175358841

有了结果后,如何评估现实影响

image-20240307175535332

因为遗传算法是基于aleth做的,还评估了在其他EVM客户端上的影响

image-20240307175951999

改进方法包括提高gas计价、减少IO操作频率短期方法;长期方法有实现无状态的客户端和分片

image-20240307180443576