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

曲速未来安全区 2018-07-19 20:35
分享到:
导读

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 有:

 




1.TMT观察网遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.TMT观察网的原创文章,请转载时务必注明文章作者和"来源:TMT观察网",不尊重原创的行为TMT观察网或将追究责任;
3.作者投稿可能会经TMT观察网编辑修改或补充。


专题报道