币妈妈

下载
币妈妈>资讯>正文

安全专家为你解读DeFi典型漏洞及其安全风险

certik2021-05-27 15:32:04

自DeFi兴起以来,在短短9个月时间内迅速风靡全球。

BSC凭借低廉的gas和高速壮大的生态应用建立起了日渐完整的生态系统,成功成为了领先的公链平台之一。

安全专家为你解读DeFi典型漏洞及其安全风险

数据来源:https://bscscan.com/

如今每天,都有数百个项目在BSC上进行数千万的交易。

安全专家为你解读DeFi典型漏洞及其安全风险

图片来自https://twitter.com/BinanceChain/status/1395060714390315008

但是链上交易的热度将另外一个隐患带到了我们面前——安全隐患。

目前可被黑客所利用的不同级别漏洞越来越多。

CertiK安全专家将这些漏洞分为四大类,下文将为各位读者带来DeFi相关安全风险讲解。

管理员密钥泄露

在智能合约中,某些功能受到函数修改器(modifier)的保护——只有特定的操作者才能调用特定的功能。

在大多数情况下,这些功能是用于修改合约配置或管理智能合约中持有的资金。因此如果攻击者破坏了管理密钥,他们可以完全控制智能合约,调用该功能从而窃取用户资产。

密钥泄露的原因

第一种可能性是计算机木马程序。

攻击者可以使用木马程序来窃取存储在计算机上的私钥,或者进行网络钓鱼攻击,以诱骗用户将其私钥发送给攻击者。

对DeFi合约来说,往往是几个人共享一个管理密钥。

这就意味着如果有内部人员心怀不轨,那么他可以调用管理功能将项目的代币转移到自己的钱包地址中。

这里有两个案例:2021年3月5日,PAID Network因其私钥管理不当而遭受“铸币”攻击,经推测攻击者很可能是通过网络钓鱼攻击从管理员的计算机中窃取了密钥。

PAID代币合约位于可升级代理服务器之后,这意味着代币合约可以被代理服务器的所有者替换。

这类恶意代码有铸币功能,攻击者销毁6000万个PAID代币,然后为自己铸造了5900万枚代币。

当时2,501,203美元的PAID代币(约为2,040ETH)在Uniswap

安全专家为你解读DeFi典型漏洞及其安全风险

Uniswap基于以太坊的代币交换协议查看更多上被出售,代币价格也从2.8美元暴跌为0.3美元。

安全专家为你解读DeFi典型漏洞及其安全风险

2021年4月19日,EasyFi创始人声称该黑客为获取管理密钥对管理员进行了针对性的攻击。298万个EASY代币(当时价值约7500万美元)被从EasyFi官方钱包中转移到了几个未知钱包中。

因此安全存储私钥对于项目安全的重要性可见一斑,管理者切忌将未加密的管理员密钥存储在电脑设备上,或将其无防备的放置于Metamask热钱包中。

CertiK安全专家建议管理者使用硬件钱包创建账户。

如果多人团队的每位管理者均使用硬件钱包,一旦其中一位管理者试图进行特权交易,也需获取大部分成员的签署同意,这样可以防止攻击者仅获取一个密钥访问权时就可以调用所有特权功能。

代币合约应尽可能避免铸造新代币的功能。如果需要铸造新代币,应使用DAO

安全专家为你解读DeFi典型漏洞及其安全风险

DAO去中心化自治组织查看更多合约或时间锁合约,而非EOA帐户。

编码错误

大家一提到DeFi漏洞,往往会认为漏洞必然是很复杂的,其实并非总是如此。

有时一个小小的编码错误,就可以导致数百上千万美元的资产一朝蒸发。

一些常见的编码错误示例:

1. 函数权限, 修改器(modifier)缺失

2. 错别字

3. 数字位数不正确

4. 变量值分配缺失/不正确

安全专家为你解读DeFi典型漏洞及其安全风险

有一个非常典型的例子就是Uranium Finance曾发生的受攻击事件:黑客攻击了Uranium Finance未受审计的合约,项目因此损失了5700万美元。

管理员在交换前后比较池中两个代币余额的乘积时使用了不一致的乘数,这使得攻击者可以仅用1 Wei就从池中换出大量代币。

Uranium finance的代码:

正确的代码:

另一个例子是Value DeFi,被黑客攻击导致损失了1000万美元。

此次事件发生的原因在于Value DeFi合约中的初始化函数缺少“initialized = true”,这意味着任何人都可以将资金池初始化并将自己设置为管理员。

2021年5月5日,攻击者将资金池初始化,将自己设置为管理员,然后使用“governanceRecoverUnsupported”函数耗尽了已抵押的代币。

Value DeFi中的易受攻击的代码:

安全专家为你解读DeFi典型漏洞及其安全风险

解决方法:

安全专家为你解读DeFi典型漏洞及其安全风险

只需通过适当的同行评审、单元测试和安全审计,这一类型的代码错误往往极易避免。

闪电贷和价格操纵

闪电贷可以在无需提供任何抵押的情况下进行贷款,当然所有操作必须在一个交易区块内完成。

开发人员可以从Aave

安全专家为你解读DeFi典型漏洞及其安全风险

AaveAave (/'ɑrve/, 芬兰语”幽灵“) 是一个开源的去中心化借贷协议,为用户提供存款和借贷服务。查看更多或dYdX等协议中借贷,条件是在交易结束之前将流动资金返还到资金池中。

如果资金未能及时返回,则交易将被撤回,从而确保储备池的安全。

闪电贷的一般运行步骤如下:

1. 使用闪电贷借入大量代币A

2. 在DEX上将代币A交换为代币B(代币A的价格下降,代币B的价格上升)

3. 攻击一个依赖A/B价格的DeFi项目

4. 偿还闪电贷

声明:该文观点仅代表作者本人,币妈妈信息发布平台,币妈妈仅提供信息存储空间服务。

相关阅读