当前位置:首页 > 区块链新闻 > 正文

被盗3000万美金,复盘BSC链上首次闪电贷攻击

来源: 互联网时间:2021-05-02 16:03:51
原文来源:派盾
原文标题:《BSC 首现闪电贷攻击 攻击手法换汤不换药 DeFi 乐高如何接招?》

在 DeFi 的世界里,借助于智能合约,个人创建金融产品的门槛被大幅降低。人们可以根据自己的需求,自由地设计自己的金融产品,并通过组合实现方便地交易。

目前,随着 DeFi 协议的组合愈发丰富,涌现出大量「货币乐高」的协议,从以太坊生态中的初代去中心化交易所 Uniswap,到二代进化版的 Sushiswap,再到币安智能链生态中的 PancakeSwap,但组合过程中的风险也逐渐凸显出来。

5 月 2 日,DeFi 协议 Spartan Potocol 遭到黑客攻击,PeckShield「派盾」通过追踪和分析发现,Spartan Potocol遭到闪电贷攻击,损失 3,000 万美元。

斯巴达协议 (Spartan Protocol) 是一个资产流动性项目,旨在解决现有 AMM 协议以及合成资产所出现的各类问题。斯巴达协议的流动性池是此协议的核心,所有一切系统内的相关应用都离不开流动性池的支持。SpartanSwap 应用了 THORCHAIN 的 AMM 算法。此算法采用流动性敏感资费(Liquidity-sensitive fee)来解决流动性冷启动以及滑点问题。

以下是攻击过程:

首先攻击者从 PancakeSwap 中借出闪电贷 10,000 WBNB

第二步,攻击者在出现漏洞的 Spartan 兑换池中,分五次将 WBNB 兑换成 SPARTAN,用 1,913.172376149853767216 WBNB 分别兑换了 621,865.037751148871481851 SPARTA、555,430.671213257613862228 SPARTA, 499,085.759047974016386321 SPARTA, 450,888.746328171070956525 SPARTA, 和 409,342.991760515634291439 SPARTA。此时攻击者手撰 2,536,613.206101067206978364 SPARTA 以及 11,853.332738790033677468 WBNB, 攻击者将这些 Tokens 注入流动池中提供流动性,铸造出 933,350.959891510782264802 代币 (SPT1-WBNB);

第三步,攻击者运用同样的手法,在出现漏洞的兑换池中分十次将 WBNB 兑换成 SPARTAN,用 1,674.025829131122046314 WBNB 分别兑换了 336,553.226646584413691711 SPARTA, 316,580.407937459884368081 SPARTA, 298,333.47575083824346321 SPARTA, 281,619.23694472865873995 SPARTA, 266,270.782888292437349121 SPARTA, 252,143.313661963544185874 SPARTA, 239,110.715943602161587616 SPARTA, 227,062.743086833745362627 SPARTA, 215,902.679301559370989883 SPARTA, 和 205,545.395265586231012643 SPARTA,总计 2,639,121.977427448690750716 SPARTA。

第四步,攻击者将 21,632.147355962694186481 WBNB 和所有的 SPARTA,即上面三步中所获的 2,639,121.977427448690750716 SPARTA 转入流动池中,来抬高资产价格。

第五步,烧毁从第二步所获得的 933,350.959891510782264802 代币 (SPT1-WBNB),提回流动性,由于流动池处于通胀状态,共计烧毁 2,538,199.153113548855179986 SPARTA 和 20,694.059368262615067224 WBNB,值得注意的是,在第二步中,攻击者仅兑换了 11,853.332738790033677468 WBNB,此时攻击者获利 9,000 WBNB;

第六步,攻击者在第四步中注入 1,414,010.159908048805295494 pool token 为流动池提供流动性,随即启动烧毁机制获取 2,643,882.074112804607308497 SPARTA 和 21,555.69728926154636986 WBNB。

攻击者调用了流动性份额函数 calcLiquidityShare() 查询当前余额,进而操纵余额套利,正确的操作需使用 baseAmountPooled/tokenAmountPooled 状态。

DeFi 系统的运行需要由智能合约进行保证,这就要求智能合约的代码进行过缜密的审核。一旦智能合约中存在着任何漏洞,它就可能成为黑客攻击的对象。

在传统的条件下,黑客们攻击金融系统时所凭借的主要是他们在计算机技术上的优势,而在现有的 DeFi 生态下,由于各链、各应用之间的互通性还并不是那么好,因此跨链、跨应用之间的套利机率可能较大。这时,即使一个计算机本领不那么强的人,只要他有足够的金融知识和足够的市场嗅觉,就也可以成为黑客,对 DeFi 系统进行攻击。

黑客通过区块链上的闪电贷,以很小的成本借出大笔资金,然后用这笔资金去造成一些数字资产的价格波动,再从中渔利,最初兴起于以太坊,随着币安智能链等 CeFi + DeFi 生态上的资产愈发丰富,黑客也在随时伺机待发。

PeckShield「派盾」相关负责人表示:「攻击手法仍换汤不换药,只是从一条链转到了另一条链,DeFi 协议开发者应在攻击发生后,自查代码。如果对此不了解,应找专业的审计机构进行审计和研究,防患于未然。」

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。