以太坊ERC827模板安全事件跟踪

曲速未来安全区
曲速未来安全区 机构得得号

2018年07月20日 专注于为读者提供区块链安全领域最新讯息

摘要: EIP827 即 ERC827 标准的提案,是以太坊平台众多提案之一,为 Token 标准提案,它是对 ERC20 标准的扩充。

事件回顾:

2018年6月24号,中国安全团队发现了不少 ERC827 合约实现存在类ATN Token 漏洞。黑客可以利用该漏洞,以合约的身份调用任意合约地址上的任意函数。其中大部分问题合约参考了 OpenZeppelin 官方提供的 ERC827 模板。

EIP827 是以太坊平台一种Token标准提案

EIP827 即 ERC827 标准的提案,是以太坊平台众多提案之一,为 Token 标准提案,它是对 ERC20 标准的扩充。

ERC827 标准在 ERC20 的基础上增加了三个接口 transferAndCall() ,transferFromAndCall(),approveAndCall()。

这三个函数中都有一个 call() 函数的操作,即允许用户通过该合约随意调用任意地址上的任意函数。以 transferAndCall() 为例,函数中转账操作完成后,会调用 _to 地址上的任意函数,并且参数 _data 由调用者任意指定。攻击者可以很容易地借用当前合约的身份来对 to合约执行 任何操作,比如盗取 Token 或者绕开权限检查等。

ERC827 Token 合约设计和实现上允许用户自定义 call() 任意地址上任意函数来实现“接收通知调用”功能,攻击者可以很容易地借用当前合约的身份来进行任何操作。

这通常会导致以下危险的后果:

后果一:允许攻击者以缺陷合约身份来盗走其它 Token 合约中的 Token

后果二:与 ds-auth 之类的鉴权机制结合,绕过合约自身的权限检查

后果三:允许攻击者以缺陷合约身份来盗走其它 Token 账户所授权(Approve)的 Token

后果四:攻击者可传入虚假数据欺骗 Receiver 合约

OpenZeppelin 已经移除 ERC827 合约模板

这些问题合约部分参照了 OpenZeppelin 提供的合约模板。

目前 OpenZeppelin 官方仓库中 ERC827 合约的实现已经被移除,

ERC827提案的作者表示:“非常感谢中国安全团队小伙p0n1的分析,并十分同意p0n1的商议,他们将会移除在OpenZeppelin官方仓库中的ERC827合约,并且认为应将目前未被广泛采纳的提案放入一个单独的文件咋。

特别提醒:

新项目方:进行智能合约开发时,目前请不要使用 ERC827 代码模版

DApp开发团队:DEX 和 DApp 开发者目前请勿与使用 ERC827 Token 的合约进行交互对接;已采用 ERC827 提案的 DApp 开发团队请进行自查,评估所受影响

用户与交易所:请对相关项目保持密切关注

目前有活跃交易的 ERC827 Token 有:

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 曲速未来安全区 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信