你玩的Dapp真的安全吗?Trustlook反编译平台给程序员风险提示_DAPP:Dapper币

只要谈到区块链、以太坊就必定离不开“智能合约”这个词,由于具备了最基本的图灵完备性,开发者可以基于以太坊完成各种应用的开发。据Odaily星球日报2月25日发布的ETH周报显示,目前ETH链上Dapp开发累计至1602个,“类”、“交易所”仍然是目前ETHDapp生态中日活以及交易额最高的两大应用。智能合约为以太坊社区注入了生机,促成了生态的繁荣,但也带来了各种各种各样的安全问题。基于智能合约的各类Dapp真的靠谱吗?类游戏真的就如其说明书所言的公平吗?Odaily星球日报最近接触的安全公司Trustlook在2019年1月发布了基于二进制智能合约反编译开放平台SmartContractInsight。据Trustlook创始人AllanZhang介绍,他们认为,让区块链变得更安全的唯一路径是从工具的角度重建区块链社区——打造一个可用的工具,让区块链代码可读,漏洞可被发现,从而做到真正的开源和共建。很多Dapp的合约都没有开源,或是处于半开源状态,对用户来说,代码是否安全需要考量。机器语言是用二进制代码表示的一种计算机能直接识别和执行的一种机器指令,在智能合约中,业界称为二进制的EVM代码。也就是说,在目前的状况下,社区里的开发者如果对某一份智能合约产生了兴趣,想要去了解它的功能甚至查找漏洞,只能够接触到二进制代码,对于大部分程序员而言,这是较大的障碍。

未编译的机器代码长这样“反编译开放平台”这个概念听起来有点拗口,简单来讲就是将二进制的机器代码或通过合约地址逆向成人类可读的计算机高级语言,并根据结果作出风险提示。目前提出的漏洞包括:整数数值溢出漏洞、重入攻击漏洞、外部调用返回值未校验漏洞、tx.origin依赖漏洞以及时间戳依赖漏洞等,用灰底的“//ISSUE:”提醒。据介绍,整数数值漏洞说明币有无限增发风险;重入攻击最有名,著名的DAOattack就是这个漏洞造成的,它最造成攻击者重复调用取款函数,一直将合约账户中的所有代币取走;外部调用返回值是指,智能合约在地址上执行操作的底层方法,比如:address.call()、address.callcode()、address.delegatecall()和address.send。这些底层方法不会抛出异常(throw),只是会在遇到错误时返回false。在合约中调用外部合约时,应该对返回值进行判断。如果没有判断,那么调用者可能会误判交易是否成功,对于交易所造成财产损失;tx.origin依赖漏洞是指,不慎使用tx.origin进行鉴权认证有可能带来钓鱼攻击。时间戳依赖漏洞指的是一些类的Dapp使用时间戳来生成随机数,会造成类应用结果可预测,这样攻击者可以直接赢得的奖励。举个例子,我们从以太坊上选择一个211b合约地址,如:0x20B5c52d43a87ae8B375670d47D572681753211b,将这个合约地址用SmartContractInsight平台“破解”,可以得到:

编译后的高级语言及风险提示SmartContractInsight平台在提醒时用提醒风险或异常,方便判别合约安全性。我们可以看到,刚刚的合约地址反编译后得到的代码有整数溢出风险,也就是说,如果这是一个发币平台,就意味着这个币有无限增发的风险。目前SmartContractInsight平台免费开放,但如果对二进制合约有更详尽的了解需求,平台也提供人工审核部分,收部分安全费用。目前该平台支持以太坊或基于EVM代码的合约检测。作为工具,操作非常简单,但如果能根据编译结果沉淀出一些分析结果或许更好。智能合约的安全问题一直被行业关注。此前,安全公司CertiK发布智能合约自动检测引擎CertiKAutoScanEngine,并对Etherscan平台进行了技术集成与大规模的通证安全检测;评级机构RatingToken面向C端上线其智能合约查询检测功能,同时为B端提供智能合约实时监测功能。Trustlook是位于硅谷的移动安全解决方案提供商,多年来服务于华为、亚马逊、高通等一线软硬件厂商,创始人AllanZhang曾是PaloAltoNetwork的创始安全工程师,团队目前17人,均属研发团队。公司于2015年完成1700万美元A轮融资,挚信资本领投,星元资本、线性资本等跟投。我是Odaily星球日报记者遂心,加好友烦请备注姓名、单位、职务和事由。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-3:670ms