關于“假充值”問題的詳細技術解讀區塊鏈
7月9日,慢霧區發布以太坊代幣“假充值”漏洞攻擊預警。
7月9日,慢霧區發布以太坊代幣“假充值”漏洞攻擊預警。PeckShield第一時間針對此問題進行深入排查和分析,確認這是由于某些交易所確認機制不完善以及相關合約代碼未能嚴格遵循標準而引發的問題。目前已發現并確認有十數家交易所存在該問題,在此呼吁受影響的交易所及時排查問題,避免更大的損失。
交易所確認機制漏洞
以ERC-20 Token為例,某些交易所可能僅依賴交易狀態(TxReceipt Status)和鏈上確認次數(Block Confirmation Number)對交易結果作判斷,忽略了對Token balance的檢查。以下列代碼為例:
如果發起者賬戶為0且_value為大于0的某個值,那么調用后函數會返回false,但該筆交易的交易狀態是Success:
有問題的交易所在確認轉賬狀態時,如前所述只讀取交易狀態和鏈上確認次數,就會承認該筆轉賬,導致虛假轉賬問題的產生。
對合約開發者的建議:嚴格遵循標準
合約代碼也存在一定問題,以上述代碼為例,按照ERC-20的標準[1],transfer函數在Token賬戶轉賬額度不足的條件下應該拋出異常:
這樣交易狀態自然會變為Fail。換言之,即便交易所依賴交易狀態做最終確認,也可確保自身安然無虞。
參考文獻:
[1] https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
涉及到的未嚴格遵循的合約有547個。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。