编者按:本文来自36氪战略合作区块链媒体 “Odaily星球日报 ”(公众号ID:o-daily, APP下载 )
只要谈到区块链、以太坊就必定离不开“智能合约”(Smart contract)这个词,由于具备了最基本的图灵完备性,开发者可以基于以太坊完成各种应用的开发。据 Odaily星球日报 2 月 25 日发布的 ETH 周报 显示,目前 ETH 链上 Dapp 开发累计至 1602 个,“博彩类”、“交易所”仍然是目前 ETH Dapp 生态中日活以及交易额最高的两大应用。
智能合约为以太坊社区注入了生机,促成了生态的繁荣,但也带来了各种各种各样的安全问题。基于智能合约的各类 Dapp 真的靠谱吗?博彩类游戏真的就如其说明书所言的公平吗?
Odaily星球日报最近接触的安全公司 Trustlook 在 2019 年 1 月发布了基于二进制智能合约反编译开放平台 Smart Contract Insight 。据 Trustlook 创始人 Allan Zhang 介绍,他们认为,让区块链变得更安全的唯一路径是从 工具 的角度重建区块链社区——打造一个可用的工具,让区块链代码可读,漏洞可被发现,从而做到真正的开源和共建。很多 Dapp 的合约都没有开源,或是处于半开源状态,对用户来说,代码是否安全需要考量。
机器语言是用二进制代码表示的一种计算机能直接识别和执行的一种机器指令,在智能合约中,业界称为二进制的 EVM 代码。也就是说,在目前的状况下,社区里的开发者如果对某一份智能合约产生了兴趣,想要去了解它的功能甚至查找漏洞,只能够接触到二进制代码,对于大部分程序员而言,这是较大的障碍。
未编译的机器代码长这样
“反编译开放平台”这个概念听起来有点拗口,简单来讲就是将二进制的机器代码或通过合约地址逆向成人类可读的计算机高级语言,并根据结果作出风险提示。目前提出的漏洞包括:整数数值溢出漏洞、重入攻击漏洞、外部调用返回值未校验漏洞、tx.origin依赖漏洞以及时间戳依赖漏洞等,用灰底的 “//ISSUE:” 提醒。
据介绍,整数数值漏洞说明币有无限增发风险;
重入攻击最有名,著名的 DAO attack 就是这个漏洞造成的,它最造成攻击者重复调用取款函数,一直将合约账户中的所有代币取走;
外部调用返回值是指,智能合约在地址上执行操作的底层方法,比如: address.call()、address.callcode()、 address.delegatecall() 和 address.send。这些底层方法不会抛出异常 (throw) ,只是会在遇到错误时返回 false 。在合约中调用外部合约时,应该对返回值进行判断。如果没有判断,那么调用者可能会误判交易是否成功,对于交易所造成财产损失;
tx.origin 依赖漏洞是指,不慎使用 tx.origin 进行鉴权认证有可能带来钓鱼攻击。
时间戳依赖漏洞指的是一些赌博类的 Dapp 使用时间戳来生成随机数,会造成博彩类应用结果可预测,这样攻击者可以直接赢得博彩的奖励。
举个例子,我们从以太坊上选择一个 211b 合约地址,如:0x20B5c52d43a87ae8B375670d47D572681753211b,将这个合约地址用 Smart Contract Insight 平台“破解”,可以得到:
编译后的高级语言及风险提示
Smart Contract Insight 平台在提醒时用提醒风险或异常,方便判别合约安全性。我们可以看到,刚刚的合约地址反编译后得到的代码有整数溢出风险,也就是说,如果这是一个发币平台,就意味着这个币有无限增发的风险。
目前 Smart Contract Insight 平台免费开放,但如果对二进制合约有更详尽的了解需求,平台也提供人工审核部分,收部分安全费用。目前该平台支持以太坊或基于 EVM 代码的合约检测。作为工具,操作非常简单,但如果能根据编译结果沉淀出一些分析结果或许更好。
智能合约的安全问题一直被行业关注。此前,安全公司 CertiK 发布智能合约自动检测引擎 CertiK AutoScan Engine(CASE ) ,并对Etherscan平台进行了技术集成与大规模的通证安全检测;评级机构 RatingToken 面向 C 端上线其智能合约查询检测功能,同时为 B 端提供智能合约实时监测功能。
Trustlook 是位于硅谷的移动安全解决方案提供商,多年来服务于华为、亚马逊、高通等一线软硬件厂商,创始人 Allan Zhang 曾是 Palo Alto Network 的创始安全工程师,团队目前 17 人,均属研发团队。公司于 2015 年完成 1700万 美元 A 轮融资,挚信资本领投,星元资本、线性资本等跟投。
我是Odaily星球日报记者遂心(微信号wsuixin12),加好友烦请备注姓名、单位、职务和事由。
以上所述就是小编给大家介绍的《你玩的Dapp真的安全吗?Trustlook反编译平台给程序员风险提示》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Xcode 编译疾如风系列(二):并行编译
- 编写 MSBuild 内联编译任务(Task)用于获取当前编译环境下的所有编译目标(Target)
- 使用 Visual Studio 编译时,让错误一开始发生时就停止编译(以便及早排查编译错误节省时间)
- Go编译缓存导致C文件修改后未重新编译
- Android Apk反编译系列教程(一)如何反编译APK
- 漫话:如何给女朋友解释什么是编译与反编译
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Lean Analytics
Alistair Croll、Benjamin Yoskovitz / O'Reilly Media / 2013-3-18 / USD 29.99
If you're involved with a startup, analytics help you find your way to the right product and market before the money runs out. But with a flood of information available, where do you start? This book ......一起来看看 《Lean Analytics》 这本书的介绍吧!