以太坊ERC827模板安全事件跟蹤區(qū)塊鏈
EIP827即ERC827標準的提案,是以太坊平臺眾多提案之一,為Token標準提案,它是對ERC20標準的擴充。
事件回顧:
2018年6月24號,中國安全團隊發(fā)現了不少 ERC827 合約實現存在類ATN Token 漏洞。黑客可以利用該漏洞,以合約的身份調用任意合約地址上的任意函數。其中大部分問題合約參考了 OpenZeppelin 官方提供的 ERC827 模板。
EIP827 是以太坊平臺一種Token標準提案
EIP827 即 ERC827 標準的提案,是以太坊平臺眾多提案之一,為 Token 標準提案,它是對 ERC20 標準的擴充。
ERC827 標準在 ERC20 的基礎上增加了三個接口 transferAndCall() ,transferFromAndCall(),approveAndCall()。
這三個函數中都有一個 call() 函數的操作,即允許用戶通過該合約隨意調用任意地址上的任意函數。以 transferAndCall() 為例,函數中轉賬操作完成后,會調用 _to 地址上的任意函數,并且參數 _data 由調用者任意指定。攻擊者可以很容易地借用當前合約的身份來對 to合約執(zhí)行 任何操作,比如盜取 Token 或者繞開權限檢查等。
ERC827 Token 合約設計和實現上允許用戶自定義 call() 任意地址上任意函數來實現“接收通知調用”功能,攻擊者可以很容易地借用當前合約的身份來進行任何操作。
這通常會導致以下危險的后果:
后果一:允許攻擊者以缺陷合約身份來盜走其它 Token 合約中的 Token
后果二:與 ds-auth 之類的鑒權機制結合,繞過合約自身的權限檢查
后果三:允許攻擊者以缺陷合約身份來盜走其它 Token 賬戶所授權(Approve)的 Token
后果四:攻擊者可傳入虛假數據欺騙 Receiver 合約
OpenZeppelin 已經移除 ERC827 合約模板
這些問題合約部分參照了 OpenZeppelin 提供的合約模板。

目前 OpenZeppelin 官方倉庫中 ERC827 合約的實現已經被移除。

ERC827提案的作者表示:“非常感謝中國安全團隊小伙p0n1的分析,并十分同意p0n1的商議,他們將會移除在OpenZeppelin官方倉庫中的ERC827合約,并且認為應將目前未被廣泛采納的提案放入一個單獨的文件咋。
特別提醒:
新項目方:進行智能合約開發(fā)時,目前請不要使用 ERC827 代碼模版
DApp開發(fā)團隊:DEX 和 DApp 開發(fā)者目前請勿與使用 ERC827 Token 的合約進行交互對接;已采用 ERC827 提案的 DApp 開發(fā)團隊請進行自查,評估所受影響
用戶與交易所:請對相關項目保持密切關注
目前有活躍交易的 ERC827 Token 有:

1.TMT觀察網遵循行業(yè)規(guī)范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創(chuàng)文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創(chuàng)的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。