当前位置:主页 > 网站漏洞修复 >

面向链上智能合约的自动化修复框架

面向链上智能合约的自动化修复框架_记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华黑客技术

admin

智能合约频繁的攻击事件严重阻碍了区块链的发展与应用落地。目前大多数研究工作集中在链下合约的漏洞检测。然而,智能合约运行在链上,且区块链不可篡改的特性导致链上合约出现漏洞之后无法像传统程序一样修补,因此智能合约急需一种链上漏洞安全措施。针对这个问题,我们提出了一个通用的智能合约修复框架Aroc,其可以在不修改合约代码的情况下,自动化修复已部署的漏洞合约,避免合约漏洞利用。Aroc的核心思想是利用合约分布式执行的特征,在去中心化的场景中,使用补丁合约拦截攻击漏洞合约的恶意交易。论文以三种最严重的漏洞类型(重入、算数漏洞和未检查的底层调用)为例,基于四类数据集对Aroc评估,实验结果证明Aroc能够以93.32%的正确率修复95.95%的漏洞合约,并且给合约用户或者区块链矿工引入的开销在可接受的范围内。与现有技术相比,Aroc也有明显的优势,要么生成的补丁包含更少的合约代码,要么引入的执行开销代价更小。

该成果“Aroc: An Automatic Repair Framework for On-chain Smart Contracts”发表在软件工程顶刊IEEE Transaction on Software Engineering(TSE),TSE是公认的软件工程领域最权威的国际学术期刊之一,与ACM TOPLAS、ACM TOSEM并为中国计算机学会(CCF)推荐的三大软件工程A类期刊,也是中科院一区期刊,影响因子为6.226。该成果也是实验室安全组在区块链以及漏洞修复领域的成果。

面向链上智能合约的自动化修复框架

论文链接:

https://ieeexplore.ieee.org/document/9591399


背景与动机

区块链是一种分布式的去中心化账本,天然具有防篡改、透明、去信任的特征。智能合约作为运行在区块链上的可执行代码,也继承了相关特性。合约的执行结果会由所有区块链矿工节点验证通过之后,才能上链。因此相比于传统的第三方,合约更加可信。且有区块链(堪比于可信存储系统)、虚拟机(安全的执行环境)以及图灵完备的编程语言的支撑,智能合约使区块链可以满足多样化的业务需求,解决多领域传统应用的痛点,是推动区块链发展的关键技术。然而,由于复杂的执行环境和新型的编程语言,智能合约总是暴露出各种漏洞,频繁遭受攻击,导致巨额数字资产损失,应用落地也因此受到阻碍。据慢雾社区报告,仅通过黑客攻击以太坊去中心化应用(DApp)这一方式所损失的资金已达到 531,300,756.56 美元。

为了解决这种问题,许多合约漏洞检测工具被提出来,包括基于符号执行、模糊测试、形式化验证、机器学习、静态分析等技术的各种方案。但是这些链下工具一方面难以保证部署上链的合约无漏洞,另一方面对链上漏洞合约束手无策。因此链上合约也亟待多样化的保护措施。目前为止,也有一些保护链上漏洞合约的方案,他们要么通过设计新型的合约模式或者改进现有的合约执行环境,例如EVM。在第一种方案中,如基于N-Version编程,N个独立团队独立开发N个功能相同的合约,并通过一个框架整合后在N个合约里插入断点,仅当所有合约对等断点位置处的值等价,才算执行成果,避免合约执行异常。但这种方案开销过大,而且由于代码量增多可能引入更多漏洞,导致合约整体的可用性差;第一种方案还可以基于合约更新模式,将合约分为数据合约和逻辑合约,并通过代理合约来改变逻辑合约的执行地址。这样当逻辑合约出现漏洞后,可以改变代理的指向以执行新合约,而数据合约保持不变。然而,这种方案无法解决数据合约存在漏洞的情况。第二种方案基本是在合约执行环境中插入合约执行信息收集模块和漏洞分析模块,实时收集状态信息,判断执行是否触发漏洞,阻止攻击的发生。这会导致执行环境的体积随着所检测的漏洞种类增多而增大,给矿工带来过多的开销。而且每一次增加对新型漏洞的检测,矿工就需要全体升级。


设计与实现

我们提出了一个链上合约漏洞修复框架Aroc,该方案能自动化生成补丁合约修复已部署合约的漏洞。由于链上合约不可修改,实际上我们是将安全策略嵌入到补丁合约中,通过补丁合约对调用漏洞合约的交易进行验证,及时拦截恶意交易,以实现间接修复的目的。Aroc的体系框架如图1所示,其主要包括三个模块:信息提取模块(IEM)补丁合成模块(PSM)以及增强的EVM模块

面向链上智能合约的自动化修复框架

图1  Aroc整体框架


返回顶部