北京时间 2021 年 5 月 16 日晚上九点半左右,PeckShield「派盾」预警监测到,跨链智能收益与流动性聚合器 bEarn Fi 遭到攻击,损失近 1,100 万美元。
PeckShield「派盾」安全人员追踪和分析发现,此次攻击始于 bEarn Fi 机枪池(Vault)代码存在的「小问题」,以下是攻击细节分析。
值得注意的是,此次攻击的本金是从 Cream Finance 的闪电贷借来的。
攻击者从 Cream Finance 闪电贷借出 7,804,239.1 BUSD;
接着,攻击者创建的合约将所借 BUSD 存入 BvaultsBank 后,这些 BUSD 立即存至 BvaultsStrategy 策略中,随即转存入 Alpaca 借贷资金池,此时,攻击者可获得借贷资金池返还给的 ibBUSD 合成资产作为用户的抵押凭证(相当于存折)。当退出时,用户可以凭借该凭证赎回抵押在借贷资金池内的本金及其抵押期内所产生的利息。在这一步中,Alpaca Vault 铸造了 7,598,066.6 ibBUSD 返还至 BvaultsStrategy;
合约利用所铸造的 7,598,066.6 ibBUSD 通过 Alpaca FairLaunch 进行挖矿;
当攻击者合约从 BvaultsBank 提取 7,804,239.1 BUSD 时,以 BvaultsStrategy 提取逻辑为准,按照 ibBUSD 的价格来换算,而 iBUSD 的价格高于 BUSD,则 7,804,239.1 ibBUSD 相当于 8,016,006.1 BUSD,凭空多出 20 多万 BUSD。
值得注意的是,攻击者合约只能从 bVaults Bank 取出其中 7,804,239.1 BUSD,并再次存入用于第二轮攻击,加上上一轮未从 BvaultsStrategy 取出的部分,此时,BvaultsStrategy 转入 Alpaca 借贷资金池的数额就变成了 8,016,006.1 BUSD。
攻击者重复操作,最终将 7,806,580.4 BUSD 返还给闪电贷,造成近 1,100 万美元的损失。
bEarn Fi 在复盘此次攻击事件时写道:务必复核所有的产品代码,由于近期 DeFi 安全事件频繁发生,未来的工作重心将从创新调整到增强安全上来。
事实上,每次 DeFi 安全事件发生后,区块链安全公司 PeckShield 「派盾」都会警示协议开发者引以为戒,在协议上线前对代码进行审计和研究,在攻击事件发生后自查代码,防患于未然,但说一千道一万都不及遭到损失数百上千万美元的教训来得深刻。
安全是 DeFi 生态愈发繁荣的前提,也是一切创新创造的根本,不要等到造成损失才审视安全的重要性。