利用人工安全审计来解决智能合约中的攻击

如上述所述,不能完全自动检测社会工程学的攻击。因为必须进行人工测评才能理解智能合同的意思。然而,手动检测社会工程学攻击需要费力,如应用十六进制查看器检测源代码、生成ICC选择器等。为了解决这种二分法,开发了自动工具,可以提出智能合同进一步手动分析。用这种混合方法,试图过滤95.4%的候补合同。然后手动检查可疑的智能合同,分为三类:不可利用、语法匹配和语义可利用。最后,与七家领先的智能合同安全公司的安全专家分享发现,并要求他们以在线调查的形式分享他们对攻击的看法。



全部社会工程攻击的一个特定特他们的欺骗机制只在源代码中,因此在字节代码中无法检测。结果,将智能合同的源代码视为输入。下图说明了自动过滤器的操作,该过滤器应用双重检查,即检索原子签名(攻击标记),逻辑处理这些签名,匹配特定的攻击。首先,通过对嵌入JSON对象的多文件协议进行分析,删除所有非Solidity智能协议,删除所有评论,丢弃与之前处理的协议重复的智能合同进行源代码预处理。然后将源代码输入到一组签名检测器中。各签名检测器利用文本检索和正则表达式匹配,识别源代码中的特定标记。例如,资金转移程序可以在源代码中用三个标记表示a)transfer程序b)send例程或c)callwithvalue程序。然后将这些标志合并为签名,检测资金转移。基于这些签名,通过连接一系列签名,生成合格式(CNF)的社会工程学攻击检查规则。应用Python、ethereum.utils和Web3.py实现智能合同扫描程序,在https://github.com/nick-ivanov/esead上发布工具源代码。


值得注意的是,本研究不尝试应用传统的智能合同脆弱性扫描程序(如Securify、Sereum等)来检测提案的社会工程攻击。因为这些工具在设计上假设存在智能合同的威胁模型攻击目标。符合拟议攻击的威胁模的唯一可公开获得的工具是LaneyHodger。但而,LaneyHodger目的在于检测以太网蜂蜜罐——因为目标受害者有限,研究不包括这种攻击。因此,现有工具无法识别提出的社会工程学攻击。


分享: