以太坊智能合约 Hexagon 存在溢出漏洞
作者:zxx友善@360 0KEE Team
來源:https://www.jianshu.com/p/c5363ffad6a7
最近通過對智能合約的審計,發現了一些智能合約相關的安全問題。
其中我們發現智能合約Hexagon存在溢出攻擊,可產生無數的token,導致整個代幣都沒有意義。 Token地址:https://etherscan.io/address/0xB5335e24d0aB29C190AB8C2B459238Da1153cEBA
該代幣可能要上交易所,我們已第一時間向官方通知該問題。
目前發現受影響合約地址:
成因分析
問題出現在_transfer函數當中,當調用transfer轉幣時,會調用_transfer函數:
/* Send tokens */ function transfer(address _to, uint256 _value) public returns (bool success) {_transfer(msg.sender, _to, _value);return true; }_value可控,burnPerTransaction為常量,當_value + burnPerTransaction溢出時為0,可以導致繞過驗證。
/* INTERNAL */ function _transfer(address _from, address _to, uint _value) internal {/* Prevent transfer to 0x0 address. Use burn() instead */require (_to != 0x0);/* Check if the sender has enough */require (balanceOf[_from] >= _value + burnPerTransaction);/* Check for overflows */require (balanceOf[_to] + _value > balanceOf[_to]);/* Subtract from the sender */balanceOf[_from] -= _value + burnPerTransaction; /* Add the same to the recipient */balanceOf[_to] += _value;/* Apply transaction fee */balanceOf[0x0] += burnPerTransaction;/* Update current supply */currentSupply -= burnPerTransaction;/* Notify network */Burn(_from, burnPerTransaction);/* Notify network */Transfer(_from, _to, _value); } string public constant name = "Hexagon"; string public constant symbol = "HXG"; uint8 public constant decimals = 4; uint8 public constant burnPerTransaction = 2;漏洞利用
合約中?burnPerTransaction?= 2 , 所以當轉賬_value為0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe時,?_value + burnPerTransaction =0?,即可成功攻擊,為balanceOf[_to]增加大量代幣。
require (balanceOf[_from] >= _value + burnPerTransaction); // require (balanceOf[_from] >= 0); [....]require (balanceOf[_to] + _value > balanceOf[_to]); balanceOf[_from] -= _value + burnPerTransaction; // balanceOf[_from]-=0 balanceOf[_to] += _value; //balanceOf[_to]+=fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe可參考下圖Transcations,目前生成的代幣已銷毀:
總結
建議使用 SafeMath 來處理計算操作,避免溢出。
同時,以太坊智能合約有很多開源合約,使用參考開源合約前,應對代碼進行安全審計。
關于我們
0KEE Team隸屬于360信息安全部,360信息安全部致力于保護內部安全和業務安全,抵御外部惡意網絡攻擊,并逐步形成了一套自己的安全防御體系,積累了豐富的安全運營和對突發安全事件應急處理經驗,建立起了完善的安全應急響應系統,對安全威脅做到早發現,早解決,為安全保駕護航。技術能力處于業內領先水平,培養出了較多明星安全團隊及研究員,研究成果多次受國內外廠商官方致謝,如微軟、谷歌、蘋果等,多次受邀參加國內外安全大會議題演講。目前主要研究方向有區塊鏈安全、WEB安全、移動安全(Android、iOS)、網絡安全、云安全、IOT安全等多個方向,基本覆蓋互聯網安全主要領域。
總結
以上是生活随笔為你收集整理的以太坊智能合约 Hexagon 存在溢出漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以太坊智能合约安全入门了解一下(下)
- 下一篇: 以太坊智能合约安全 Dasp Top10