区块链技术引起了全球企业的兴趣。其优势包括不可篡改和透明性,这促使宝马和博世等金融业以外的传统企业尝试使用智能合约来创建更高效​​的供应链并制造更智能的工程产品。

智能合约本质上是编码到特定区块链的软件,它可以正式化并执行多方之间的协议,从而消除了对可信第三方中介的需求,节省了时间,并允许基于多方共识的验证。它们可用于各种活动,例如遗嘱、象棋游戏甚至转让契约。

尽管区块链具有颠覆性的潜力和备受推崇的功能,但过去两年针对智能合约的抢劫数量却增加了 12 倍以上。如果他们如此聪明,为什么我们会看到抢劫案如此大量增加?

为了更好地理解,让我们澄清一下区块链和智能合约之间的关系。

去中心化

将区块链网路(如亚马逊的 AWS 平台)及其每个智慧合约视为伺服器。有了区块链,就不再存在可供骇客利用的单一集中式伺服器,这使得网路犯罪分子更难以使用传统的骇客方法,例如特洛伊木马、实体攻击和勒索软体。区块链透过消除网路的单点故障来应对这些问题。

虽然区块链网路无法完全被骇客攻击,但区块链所支援的许多分散式应用程式和智慧合约却可以被骇客攻击。 

由于去中心化金融(DeFi)的成功和影响力逐渐扩大,大量价值正在透过智慧合约转移,这对骇客来说很有吸引力。随著现实世界资产代币化的增加,更多资产转移到链上,这种威胁可能只会加剧。骇客攻击对这个新兴的区块链产业构成了严重威胁,因为从智慧合约窃取的资产极难恢复。

对智能合约的威胁

与所有程式码一样,智能合约也容易出现人为错误。这些错误可能以打字错误、规格误述或更严重的错误的形式出现,这些错误可用于破解或「欺骗」智能合约。与区块链相反,不能保证合约经过同行评审或验证。

虽然智慧合约审计可以避免错误的编码,但其他威胁更为复杂。例如,预设可见性漏洞是一个常见错误,当未指定函数的可见性并且某些函数被公开时,就会发生这种错误。例如,骇客可以存取铸币功能并创建数十亿个相关代币。幸运的是,可以透过执行审核来防止此漏洞,确保所有功能预设为私有。 

由编码错误引起的另一个更复杂和严重的威胁是重入攻击。当攻击者利用智能合约的外部函数呼叫并部署恶意智能合约与持有资金的智能合约进行互动时,就会发生这种情况。 

2016 年以太坊早期发生的 DAO 事件证明了此类攻击的危险性,并最终导致了以太坊经典的诞生。防止重入攻击并不简单,但有一些框架和协定可以减轻损害,其中包括 CEI(检查、效果和互动)、重入防护等。

如果您精通智能合约程式码,那么阅读程式码本身总是一个巨大的优势。正如在搬进新公寓之前阅读合约可以保护您免受任何意外一样,能够阅读智慧合约的程式码可以揭示缺陷、恶意功能或不起作用或没有意义的功能。

但是,如果您是不太精通技术的最终用户,请仅使用具有广泛使用的可公开存取程式码的智慧合约。与编译的智能合约相反,编译的智能合约的程式码是隐藏的,人们无法查看它,这是首选。

解决智能合约漏洞

我们不要忘记,大多数智能合约管理员都会给自己留下一些管理权限,通常是为了在发布后进行更改。要存取这些权限,管理员需要使用他们的私钥。这些私钥是另一个漏洞,如果它们没有正确保管(即在离线冷库中),以某种方式获得存取权限的骇客可以更改智慧合约并将资金转移到他们希望的任何地方。

最近,欧洲议会强制要求采用终止开关机制,以减轻智能合约遭到破坏时造成的损害。虽然监管机构的目的是为人们提供更多对其个人资料的保护,但该法案引起了 Web3 社群的担忧。 

如果实施不正确,终止开关可能会破坏整个智能合约以及其中储存的任何价值。更好的实施方式是启动暂停功能,在出现安全威胁时,该功能可以冻结智慧合约,并在问题解决后重新启动它。