G.O.S.S.I.P 学术论文推荐 2021-07-16(补)

admin 2021年7月17日14:00:50评论12 views字数 1266阅读4分13秒阅读模式

今(昨)天给大家推荐的是来自IEEE S&P的一篇关于智能合约自动化检查和修复的论文——"SGUARD: Towards Fixing Vulnerable Smart Contracts Automatically"。作者提出了一种工具,在智能合约运行时对其进行自动化检查,可以确保针对智能合约中4种常见的漏洞进行修补。

G.O.S.S.I.P 学术论文推荐 2021-07-16(补)

由于区块链不可篡改的特性,使得其上的存在漏洞的智能合约不可修补,如何在其部署前修补漏洞就成为了解决问题的关键。本文提出了一种用于自动修复存在漏洞的智能合约的工具——SGuard,它能够确保了合约修复的正确性,并且优化了时间开销和gas费用开销。该工具的主要流程如下:


(1)首先SGuard会最大程度地收集智能合约符号执行信息的有限集合,然后对此集合中的符号执行信息进行静态分析,定位出潜在的漏洞所在位置。目前SGuard目前支持以下4种常见的漏洞

  • 算数溢出漏洞

  • 内部(单一)函数重入攻击漏洞

  • 跨函数重入攻击漏洞

  • tx.origin利用漏洞

考虑到诸如Securify工具和Ethainter工具等合约漏洞检测工具的存在不足之处,本文工具的静态分析功能基于原有的工具做了相应的改进。总体来讲,SGuard工具首先会计算每个状态的迭代上限,然后根据迭代上限枚举出全部的符号执行信息。之后检查每个符号执行信息,来判断是否出现了本文所定义的4种漏洞。

G.O.S.S.I.P 学术论文推荐 2021-07-16(补)

(2)然后SGuard针对上述4中漏洞类型,分别采用特定的合约修复模式进行修复,并且最终证明本文的修复方案是正确的(没有误报也没有漏报,sound并且complete)。修复是在源代码层面进行的。


作者选取了存在源码的5000个智能合约对工具进行评估。

  • 路径分析的复杂性测试:本文测试的5000个合约当中,有1767个合约(即35.34%)运行超时(时间上限设定为5 分钟)。剩下的执行成功的合约当中有1590个合约是无漏洞的,1643个合约得到了修复。其中有38个合约修复后无法编译,作者在文中也对其原因做了分析,包括Solidity编译本身的问题以及不同版本Solidity编译器的兼容性。

G.O.S.S.I.P 学术论文推荐 2021-07-16(补)

  • 漏洞定位正确性:作者对工具的漏洞定位能力做了评估,对于漏洞的定位,实际上就是评估数据依赖的正确性。实验结果如下图所示结果,作者选取了四个指令,分别分析了其对应漏洞的定位成功率,分别为99.99%,85.58%,99.98%和98.43%。

G.O.S.S.I.P 学术论文推荐 2021-07-16(补)

  • 额外开销:作者分析了本工具在修补完合约之后,对合约的运行时间和gas费用所带来的额外开销情况,平均的时间开销增加量为14.79%,gas费用开销增加量为0.79%。

G.O.S.S.I.P 学术论文推荐 2021-07-16(补)

  • 修复工具的运行时间:作者统计并分析了本文提出的修复工具所需要的运行时间,改变了一次输入的合约数量来观察修复工具的性能。结果如下图所示(图中横坐标表示合约数量的10%),其中90%的合约都唔那个在36秒内完成修复。

G.O.S.S.I.P 学术论文推荐 2021-07-16(补)


论文PDF:

https://arxiv.org/pdf/2101.01917.pdf

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 学术论文推荐 2021-07-16(补)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月17日14:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 学术论文推荐 2021-07-16(补)http://cn-sec.com/archives/924242.html

发表评论

匿名网友 填写信息