“一支穿云箭,千军万马来相见”。
在经历三个月“漫长熊市”后,从4月中旬开始,EOS的一个拉升,形成了数字货币市场大牛市的壮观景象。可是在美链BeautyChain(BEC)的智能合约漏洞被黑客利用、随意刷币,SmartMesh(SMT)智能合约再次爆出相同漏洞,并在OKex上出现大规模异常交易后,整个市场随即进入大幅震荡的情形。在了解事情经过后,我们不禁要问,为何小小的漏洞会引发如此大的动静?
1
智能合约的技术缺陷和解决方案
智能合约的2个缺陷
其实这件事情集中暴露了以以太坊为代表的区块链2.0技术的两个缺点:
智能合约不够智能;
智能合约缺少安全保障机制和安全工具。
区块链2.0的核心是智能合约,而当黑客能够轻而易举地利用智能合约漏洞为所欲为时,实质上相当于动摇了整个大厦的根基,因此造成数字货币市场的恐慌也在所难免。
加法溢出漏洞:一个加法带来的血案!
我们可以将SMT漏洞归纳为一句话:利用加法的溢出漏洞,规避安全检查从而获得巨额收益。首先看看这段代码,要害就在图1中的206行:
图1 SMT漏洞代码
Etherscan链接如下:
https://etherscan.io/tx/0x1abab4c8db9a30e703114528e31dee129a3a758f7f8abc3b6494aad3d304e43f
而黑客的攻击手法和成果如下:
Function: transferProxy(address _from, address _to, uint256 _value, uint256 _feeSmt, uint8 _v, bytes32 _r, bytes32 _s)
MethodID: 0xeb502d45
[0]: 000000000000000000000000df31a499a5a8358b74564f1e2214b31bb34eb46f(_from,转账转入地址)
[1]: 000000000000000000000000df31a499a5a8358b74564f1e2214b31bb34eb46f(_to,转账转出地址)
[2]: 8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff(_value)
[3]: 7000000000000000000000000000000000000000000000000000000000000001(_value)
[4]: 000000000000000000000000000000000000000000000000000000000000001b(_v)
[5]: 87790587c256045860b8fe624e5807a658424fad1