acm-header
登录

ACM通信

研究突出了

技术视角:用MadMax分析智能合约


智能合约提供了一种方法,为执行多多少少通用的程序带来计算完整性。虽然很早以前就提出了,但随着基于区块链的新系统的出现,如以太坊及其关联的以太坊虚拟机(EVM)和其他一些类似系统的出现,它们才变得流行起来。智能合约让人有希望在执行代码的帮助下捕获复杂的财务交互和关系。因此,我们看到了许多不同领域的项目,包括法律和基于智能合约的去中心化金融(DeFi)。

由于智能合约通常直接管理金融交易、钱包和转账,因此它一直受到漏洞发现的影响,其中有许多备受关注的漏洞,如2016年中期的DAO黑客攻击,一名黑客在智能合约中发现了一个漏洞,导致约7000万美元被盗。这种攻击和其他一些攻击引起了人们对使用静态分析和验证技术在允许将契约部署到区块链上之前发现契约中的bug和漏洞的极大兴趣(毕竟,契约通常也是不可变的,因此在事后很难修复bug)。

MadMax专注于智能合约的一个相当具体的方面,即计量。计量是对合同执行收费的一种方法,它具有补偿区块链参与者和防止拒绝服务攻击的双重作用。如何正确地进行计量,实际上是一个相当困难的问题。EVM提出了一种针对联系执行的具体收费方式,如以太坊黄皮书中所述。天然气的提供是为了合同的执行,但如果没有足够的天然气提供,合同状态可以回滚。

MadMax解决了与天然气相关的漏洞,这些漏洞允许攻击者强制关键合同功能耗尽天然气,有效地对合同执行永久拒绝服务攻击。因此,下面的论文首先有效地发现了一个新的漏洞。其次,提出了一种基于静态分析(借助Datalog定义)的检测方法。MadMax仅用10个小时就分析了以太坊区块链中的全部智能合约,并标记了持有数十亿美元合约的漏洞。MadMax提出的分析相当精确:对标记合同样本的人工检查显示,81%的样本警告确实会导致漏洞。

这项工作的影响是长远的,对整个区块链行业有一些影响。具体来说,基于气体测量的计量方法是一个高度不完善的设计。从根本上说,给个别指令分配固定的权重必然会与个别硬件架构的细节产生不匹配。

然而,鉴于区块链正在被迅速采用,下面这篇文章的重点是满足和耗尽气体的攻击,这是完全有理由的,需要在这方面进行更多的研究,以提出执行计量的新方法和修复现有的攻击。

回到顶部

作者

本杰明Livshits是Brave软件公司的首席科学家,也是英国帝国理工学院的副教授

回到顶部

脚注

要查看随附的论文,请访问doi.acm.org/10.1145/3416262


版权归作者/所有者所有
向所有者/作者请求(重新)发布权限

数字图书馆是由计算机协会出版的。版权所有©2020 ACM, Inc.


没有找到条目

Baidu
map