BSC 首现闪电贷攻击 攻击手法换汤不换药 DeFi 乐高如何接招?

  • PeckShield
  • 更新于 2021-05-02 14:56
  • 阅读 3169

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

在 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 协议开发者应在攻击发生后,自查代码。如果对此不了解,应找专业的审计机构进行审计和研究,防患于未然。”

图片

点赞 0
收藏 0
分享

1 条评论

请先 登录 后评论
PeckShield
PeckShield
派盾