除了51%攻击,还有一个全新的区块链安全漏洞分支,研究人员刚刚开始探索它——这就是智能合约漏洞。无独有偶,以太坊经典,尤其是其背后的设计思维,是理解智能合约漏洞的绝佳切入点。
所谓的智能合同属于在区块链网络上运行的计算机程序。它可以根据预先建立的规则和条件自动完成加密货币的转移。智能合同有许多潜在的用途,例如支持真实的法律合同或复杂的金融交易。我们感兴趣的另一个重要目的是建立一种投票机制。通过这种投票机制,风险投资基金的所有投资者都可以参与进来,共同决定资金的具体分配。
2016年,一个名为去中心化自治组织(DAO)的基金正式成立,其实现基于以太坊区块链。不久之后,一名攻击者利用DAO智能合同管理系统中的一个意外缺陷,窃取了总价值超过6000万美元的加密货币。从本质上来说,这一缺陷允许黑客继续从账户中申请资金,而系统不会识别注册的资金已被提取。
实时智能合约中的错误会导致独特的高风险情况。在传统软件中,我们可以使用补丁来修复这样的bug。但在区块链世界,问题绝对没有那么简单。以太坊(Ethereum Scotland)的研究科学家、智能合约安全初创公司ChainSecurity的联合创始人佩塔·赞科夫(Petar Tsankov)指出,由于区块链上的交易无法撤销,智能合约的部署更像是发射火箭——“软件绝不能出错。”
当然也有一些修复机制。虽然问题不能完全解决,但研究人员可以通过部署其他智能合约并与之交互来“升级”旧合约。此外,开发者还可以在网络中构建集中的交易终止机制,以便在检测到黑客攻击后停止所有交易活动。但是,对于资金被盗的用户来说,一切都无法挽回。
实际上,追回被盗资金的唯一方法是重写历史——即把区块链回滚到攻击前的某个点,建立一个新的区块链分叉,并要求网络上的每个用户都接受这个新的区块链版本。当时以太坊的开发者就做出了这样的决定。大多数(但不是全部)社区成员转向了新的链条,也就是我们现在所说的以太坊。但仍有少数坚持使用原厂链条,构成以太坊经典。
上个月,ChainSecurity中的Tsankov团队成功将以太坊从重复道的灾难中拯救出来。在一项计划已久的重大软件升级正式启动的前一天,该公司提醒以太坊的核心开发者,这次升级可能会导致意想不到的后果——即在区块链上留下一些合同,这些合同很容易受到导致DAO攻击的相同漏洞的影响。开发人员很快推迟了升级过程,并决定稍后推出套装。
然而,区块链安全公司AnChain.ai的联合创始人兼首席执行官Victor Fang表示,数百份有价值的以太坊智能合约仍然面临这种所谓的“重新bug”的威胁。根据去年进行的一项研究,数以千计的智能合同可能包含大量其他漏洞。公链的性质决定了如果智能合约存在bug,黑客一定能找到——因为公链合约的源代码通常是公开发布的。曾就职于网络安全厂商FireEye的方指出,“这与传统的安全实施理念大相径庭。”
Bug合同,尤其是涉及几十万甚至上百万美元的合同,吸引了那些以前专注于银行或政府机构的高水平黑客。去年8月,安查因确定了五个以太坊地址,它们都参与了一场极其复杂的攻击。通过这次攻击,黑客凭借一个流行的赌博游戏合同中的缺陷,总共窃取了400万美元。