拼写错误 数字错误 缺少/不正确的变量值赋值 一个值得注意的例子是Uranium Finance的黑客事件,该事件发生在一个未经审计的合约上,最终导致了5700万美元的损失。这是由于在比较交换前后池中两个代币余额的乘积时,使用了不一致的乘数,使得攻击者可以从资金池中换出大部分代币,而成本只有1 Wei。 Uranium Finance代码: 正确代码: 另一个例子是来自于Value DeFi的黑客事件,该事件导致了1000万美元的损失。据悉,合约中的初始化函数漏掉了 “initialized = true”,也就是说,任何人都可以重新初始化资金池并将自己设置为操作员。2021年5月5日,攻击者重新初始化了资金池,并将操作员的角色设置为了自己,然后使用 “governanceRecoverUnsupported() ”函数耗尽了池中的质押代币。 Value DeFi中的漏洞代码: 修复代码: 上述两个例子都是由简单的编码错误引起的,而且都造成了重大损失。但是,这些类型的错误完全可以通过适当的同行评审、单元测试和安全审计来轻松消除。 闪电贷和价格操纵闪电贷是一种从Aave或DyDx等协议中借入大量资金以获得一定费用的方式。其要求是,贷款需要在同一交易中归还。如果没有,贷款就会被退回。这些贷款的一般利用流程如下:
近日,PancakeBunny就遭遇闪电贷攻击,攻击者共获得了114K BNB和697K Bunny(当时约为4000万美金)。攻击者利用闪电贷操纵了PancakeSwap USDT-BNB V1池的价格,导致大量的BNB流入BNB-Bunny池,从而使得该合约能够以虚高的BNB对Bunny的价格铸造Bunny。PancakeBunny则使用以下函数来计算Bunny价格: 随着大量的BNB流入BNB-Bunny池,变量 “reserve0 ”变得很大。最终,由于价格计算存在缺陷,攻击者共获得了697K Bunny。 此外,遭受过闪电贷攻击的受害者还有很多,其中也不乏DeFi领域的一些知名项目,包括PancakeBunny($4000万资金损失),Harvest Finance($2500万资金损失),Yearn($1100万资金损失),Value DeFi($700万资金损失),AKROPOLIS($200万资金损失),Cheese Bank,XToken,bZx等等。 (责任编辑:admin) |