然而,巨大的成功也伴随着巨大的风险。黑客利用在不同层面暴露出来的漏洞,越发频繁地进行了漏洞攻击。这些漏洞可以分为4个大类,我们将对这些漏洞进行介绍,以使读者更好地了解与DeFi有关的安全风险。 管理密钥的泄露在智能合约中,修改器限制了允许调用某些功能的人选。这些功能通常是用于修改合约配置或管理智能合约中持有的资金的特权功能。如果攻击者获取了管理密钥,他们就可以完全控制智能合约,并窃取用户资金。 密钥如何被泄露? 第一种可能性是通过计算机木马。攻击者可以使用木马程序来窃取存储在计算机上的私钥。此外,攻击者也可以进行网络钓鱼攻击,欺骗用户将私钥发送给攻击者。对于DeFi项目而言,有时几个项目利益相关者将共享一个私钥。这就使得恶意的内部人员可以使用该密钥调用管理功能,并将项目的代币转移到他们自己的钱包地址。 例如,2021年3月5日,PAID网络就遭受了因私钥管理不善而引发的 “铸币”攻击。PAID代币合约是置于一个可升级的代理之后的,也就是说,合约可以被修改和替换。代理人的私钥被用来交换部署在代理背后的代码,其中包含攻击过程中使用的销毁和铸造功能的恶意代码。攻击者销毁了6000万现有的PAID代币,然后为自己铸造了5900万代币。瞬时,PAID代币价格从2.8美元跌至0.3美元,因为2,501,203个PAID代币在Uniswap上遭到抛售,总价约为2,040ETH。攻击者很可能是通过网络钓鱼攻击入侵了管理员的机器。 2021年4月19日,298万个EASY代币从EasyFi官方钱包转移到几个未知的钱包,这些代币的当时价值为7500万美元。EasyFi创始人声称,黑客攻击的原因是 “对创始人的机器/Metamask进行有针对性的攻击,以获取管理密钥”。 项目应该安全地存储私钥,而不应该在PC设备上以纯文本形式存储管理密钥,或依赖MetaMask热钱包。我们建议使用硬件钱包创建一个多签(Multisig)账户。例如,对于一个五人团队,每个团队成员都应该有自己的硬件钱包。当他们试图发送特权交易时,应该要求五个团队成员中至少有三个人签署该交易,从而防止攻击者在获得其中一个密钥时就能够调用任何特权功能。 对于代币合约来说,如果可能的话,应避免允许铸造新的代币。但如果没有这个可能,也要尽量使用DAO合约或时间锁合约作为所有者,而不是EOA账户(外部自有账户)。 编码错误DeFi中,一些漏洞的复杂程度很高,但情况并不总是如此。有时,智能合约中的一个小编码错误就会变成一场大灾难,导致价值数百万的资产受到损害。 一些常见的编码错误包括:
|