• loccs@sjtu.edu.cn

实验室研究成果荣获SANER 2020学术会议最佳论文奖

2020年2月18日至2月21日,知名软件工程学术会议IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)在加拿大安大略省的伦敦召开。我实验室张宇尧同学作为一作,针对智能合约安全问题进行自动化修复的研究论文SMARTSHIELD: Automatic Smart Contract Protection Made Easy荣获此次会议最佳论文奖(Best Paper Award)!同时,实验室本科生王艺卓同学作为联合一作,针对智能合约安全问题自动化发现和利用的研究成果EthPloit: From Fuzzing to Efficient Exploit Generation against Smart Contracts也被SANER 2020学术会议录用。两位同学均在会议上做了完整的论文报告,我们对张宇尧同学和王艺卓同学表示热烈祝贺!

智能合约(smart contract)是运行在区块链上的分布式应用程序,具有去中心化、去信任、可编程、不可篡改等特性,是区块链技术最重要的应用之一。然而,随着智能合约的数量及规模不断扩大,功能日益复杂,其面临的安全威胁也更加严重,于是漏洞的检测和修复成了智能合约安全研究的重点。

在智能合约漏洞检测方面,为了定位可利用的漏洞,不仅需要找到漏洞,还需要针对漏洞生成exploit。现有的生成exploit的工具无法解决路径上的一些限制条件(例如包含hash操作的校验),也无法合理地模拟区块链系统对合约执行的影响,导致针对很多情况无法生成exploit,另外生成的exploit正确性也不足。

为了克服这些问题,我们的研发论文提出了EthPloit,通过fuzzing的方式,自动化地迭代生成目标合约的交易序列,从而最终生成有效的exploit。EthPloit通过动态种子策略来利用交易间的联系从而克服诸如hash校验等困难的路径限制,通过基于EVM环境修改的合约执行环境来更好的模拟区块链系统对合约执行的影响。另外,通过引入静态污点分析和覆盖率反馈,大大缩小了待生成交易序列的搜索空间,提升了生成exploit的效率。通过这些方法,EthPloit以更高的效率生成针对更多漏洞情形的exploit且无假阳性。我们对现实世界的45308个具有源代码的合约进行了检测,发现了554个漏洞合约,针对其中的漏洞自动化地生成了644个exploit,其中新生成了的310个exploit是现有工具无法生成的。经过分析,我们发现并定义了一类包含hash校验的Exposed Secret漏洞,这类漏洞是现有工具无法exploit而EthPloit能成功地生成对应的112个exploit。

同时,区块链上数据的不可更改性导致了传统的安全响应策略(例如发布代码补丁等方式)无法被应用在区块链上来修复存在漏洞的智能合约。因此,保护智能合约安全性的最佳措施便是在合约被发布之前修复其中可能存在的漏洞。然而,现有的智能合约安全分析工具往往只考虑如何检测合约中存在的漏洞,却并没有考虑如何修复这些漏洞。此外,完全依赖于智能合约开发人员来人工理解并修复合约中存在的漏洞也是极其耗时且易于出错的。

针对这一现状,我们的研究论文提出了智能合约代码加固工具SmartShield,通过重写合约的字节码来消除其中存在的三类典型的不安全代码模式(包括“存在位于外部调用之后的状态改变”,“缺少对于越界算数运算的检查”,以及“缺少对于失败外部调用的检查”),以帮助合约开发人员发布安全的智能合约。SmartShield在保证经过加固的智能合约能够免疫特定攻击的同时,还能在最大程度上减少合约运行时加固操作所引入的额外开销。我们收集了以太坊区块链上一共28,621个真实存在漏洞的智能合约来评估SmartShield的性能。SmartShield成功消除了这些合约中存在的87,346处不安全代码模式。我们随后利用现有的智能合约安全分析技术以及真实发生过的漏洞攻击对经过加固的合约进行了分析和验证,并进一步确认了这些合约功能正常且能够免疫特定攻击。此外,SmartShield的加固操作仅为这些合约引入了平均0.2%的额外运行时开销。


分类

近期发布