北京时间 6 月 23 日,PeckShield「派盾」预警显示,BSC 链上收益聚合器 Eleven Finance 中与 Nerve 相关的机枪池遭到闪电贷攻击。

PeckShield 「派盾」通过追踪和分析发现,此次攻击源于 Eleven Finance 的 Emergencyburn() 计算余额错误,且未执行销毁机制,攻击者获利近 460 万美元。 

有趣的是,几个小时后,昨天刚从 Impossible Finance 薅得近 50 万美元的攻击者,利用 Eleven Finance 的漏洞,通过闪电贷攻击获利近 52 万美元。

第一个攻击者创建了 4 个合约,进行了 5 次攻击。

PeckShield 以合约 0x8b29 为例简述攻击过程:

首先,攻击者从 PancakeSwap 中借出 953,869.6 BUSD,并将其中 340,631.2 BUSD 兑换 474,387.75 NRV;

随后,攻击者将 474,378.75 Nerve 和 366,962 BUSD 在 PancakeSwap 中添加流动性,获得 411,515.3 LP token;

攻击者将 411,515.3 LP token 放入 Eleven Finance 中与Nerve 相关的机枪池获得 411,515.3 11 nrvbusd LP token;

当攻击者提取 Pancake LP token 时,ElevenNeverSellVault 中的 Emergencyburn() 函数本应销毁 11 nrvbusd LP token 换回 Pancake LP token,但 Emergencyburn() 并未执行 burn (销毁)这个动作,使得攻击者利用此逻辑错误获利。

该攻击者又创建了 0x01ea 合约,借出 30.9 BTCB;0xc0ef 合约借出 285.66 ETH 以及 0x87E9 借出两笔闪电贷 2,411,889.87 BUSD 和 7,693 BUSD 进行攻击。

攻击者通过利用集成的第三方合约功能进行攻击,这类问题较难检测到,例如,此前PeckShield「派盾」帮助 Rari Capital 避免更大损失案例一样,在定位漏洞根源时,由于合约交互容易干扰安全人员的判断,PeckShield「派盾」建议,开发人员应谨慎与任意第三方协议进行交互。

DeFi 协议开发人员在集成第三方协议并将其部署到生产运行之前,应充分了解合约及其分支项目的运行情况。DeFi 协议开发人员应在项目上线前,先将其部署在测试网上进行测试并及时检查交易记录中的异常情况。

“太快了,攻击者从合约部署,到完成攻击,甚至到再次发起攻击,这一系列操作有时候快得让人有些反应不过来。”PeckShield「派盾」安全人员表示,“因此,事前审计,事中响应,事后提出及时有效的安全方案都是缺一不可的,谁都不知道攻击者会不会在下一秒发起攻击。”