Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

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

$
0
0

以太坊ERC827模板安全事件跟踪
2018-07-19 20:31 技术 ETH
以太坊ERC827模板安全事件跟踪
990 收藏

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

事件回顾:

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

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

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


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

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


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

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

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

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

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

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

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

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

OpenZeppelin 已经移除 ERC827 合约模板

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


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

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


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

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

特别提醒:

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

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

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

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


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

本文为作者“曲速未来安全区”,原创文章,转载时请保留本声明及附带文章链接。 内容仅供读者参考,并非投资建议,本网站将保留所有法律权益。


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

Viewing all articles
Browse latest Browse all 12749

Trending Articles