斯巴达陷落—BSC首次闪电贷攻击事件分析

电科技辛雯05-06 13:12

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

攻击者利用闪电贷攻击盗取了项目3000万美元。其盗取资产的交易如下:

通付盾区块链安全团队(SharkTeam)第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。

一、事件分析

通过分析交易,该事件中,闪电贷攻击的流程如下:

(1)攻击者首先通过闪电贷从PancakeSwap借出1000 WBNB,交易及详情如下:

(2)攻击者在出现漏洞的 Spartan 兑换池WBNB-SPT1中,分五次将 WBNB 兑换成 SPARTAN,从而导致兑换池中产生巨大滑点。

交易及详情如下:

此时攻击者有

2536,613.206101067206978364 SPARTA和 11853.332738790033677468 WBNB。

(3)攻击者将这些Token(持有的WBNB与SPARTA)注入WBNB-SPT1交易池中添加流动性,获得LP凭证,由于滑点修正机制,获得的LP数量并不是正常值。

(4)进行多次Swap操作,将WBNB兑换成SPARTA,池中WBNB增多,SPARTA减少。

(5)Swap后将持有的WBNB和SPARTA转移给WBNB-SPT1池,进行移除流动性操作。

移除流动性时会通过池中实时的代币数量来计算用户的LP可获得多少对应的代币,由于步骤5,此时会获得比添加流动性时更多的代币。

(6)在移除流动性后会更新流动性池中的baseAmount与tokenAmount,由于移除流动性时没有和添加流动性一样存在滑点修正机制,移除流动性后两种代币的数量和合约记录的代币数量会存在一定差值。在与实际有差值的情况下,攻击者继续添加流动性获得LP,然后攻击者再次移除流动性就获得了对应代币。

(7)最后,攻击者将SPARTA代币兑换回WBNB,获得了更多WBNB。黑客通过以上步骤,以很小的成本获得大量的WBNB,完成闪电贷攻击。

二、通付盾区块链安全知识课堂

根据整个攻击过程的分析,与SharkTeam之前分析过的闪电贷攻击的常用手法相同,并已收录在了《通付盾2021Q1智能合约安全态势感知报告》中https://mp.weixin.qq.com/s/I3mv-eZgZg7eTcerjs1Hiw 只不过发生的平台从以太坊转移到了币安智能链。本次通付盾区块链安全知识课堂带您复习闪电贷攻击的常见手法与防范手段。

DeFi项目的业务逻辑设计复杂,利用闪电贷这种新型产品进行攻击的DeFi事件在过去的一年里层出不穷。这些安全问题的深层次原因在于,在设计业务逻辑时,未考虑到某些关键性因素,如:弹性供应机制、增发机制、清算机制设计不合理、链上价格及其他信息可被低成本操控等,导致了恶意套利、恶意增发等问题。攻击者通过操纵 AMM 资产池内的资产价格或者资产数量使关联协议蒙受损失,我们不妨称之为经济攻击。至今出现的经济攻击分为“哄抬套利”和“操纵预言机”两种手法。

哄抬套利

哄抬套利攻击的原理与 CeFi 常见的 Pump-and-Dump 市场操纵行为或者链上交易容易碰到的front running攻击本质上并无差异,都是先想办法借助他人的资本抬高自有资产的价格再高价卖出获利。DeFi 生态中此类经济攻击事件之所以能够成功,都与至少两个核心模块——攻击目标和 AMM 有关。

攻击目标与 AMM 之间存在资产转移关系,并能由用户自主触发相关智能合约执行资产转移。这里的攻击目标可以是机枪池、借贷平台、杠杆交易平台等 DeFi 模块。机枪池是运行着一定投资策略的智能合约,可以把它类比于一个基金,为用户提供代理理财业务,用户将自有资产存入机枪池以期获得收益,例如 Yearn 、Harvest ;借贷平台为出借方和贷方提供服务,赚取利息差,贷方一般要先超额抵押一部分资产,例如 Compound 、 Aave ;杠杆交易平台允许投资者抵押一定资产作为保证金进行杠杆交易,例如 bZx 。AMM 通过一个定价函数实现自动做市商交易,用户可兑换资产或作为流动性提供商(LP)参与流动性挖矿。

除了攻击目标和AMM两个核心模块,实际攻击过程中还要考虑到资金量、手续费、智能合约在执行交易前设置的检查点等因素。攻击者可通过建立优化模型找到最优参数,预测哄抬套利收益来决定是否采取行动。这种攻击手法的一般操作步骤如下:

哄抬套利攻击的基础模型(序号代表攻击步骤,实线表示必要步骤,虚线代表或有步骤;攻击目标的净值计算环节和 AMM 的定价函数在设计上存在被黑客利用的风险)。

一般步骤为:

假设 AMM 资产池里的流动性资产为 X、Y,流动性代币为 C。

第一步,准备。持有即将被哄抬的初始资产 Y 及用于触发攻击目标自动执行策略的初始资产 A。

第二步,哄抬。将资产 A 发送至攻击目标的相关智能合约,获得代币 B (代表在机枪池、借贷平台、杠杆交易平台等攻击平台中的头寸),并触发智能合约向 AMM 资产池投入资产 X,获得资产 Y 或流动性代币 C,并抬高 AMM 资产池内资产 Y 的价格。

第三步,套利。攻击者将步骤二中的资产 Y 投入 AMM 资产池,以抬高后的价格获得资产 X 或流动性代币 C。需要说明的是,第二、三步中的操作对应于 swap (X、Y 之间交换)或流动性挖矿(X 或 Y 与 C 之间交换)。对于三个及以上币种的 AMM,这里的 X 或 Y 可视为资产组合。

第四步,收尾。攻击者根据代币 B 的最新净值及后续交易计划决策是否赎回资产 D。

对于流动性充足的资产池,为了在 AMM 里制造可观的价格滑点,往往需要投入很大的资金量,故攻击者一般会从闪电贷借出初始资产。若闪电贷可供借贷的资产类别不满足要求,攻击者会去某些 AMM 或借贷平台通过 swap、流动性挖矿、借贷等方式获得;也不排除攻击者直接去与攻击目标关联的 AMM 获取。若攻击者在第一步的准备过程中采用了闪电贷,那么在第四步就还需在同一笔攻击交易中归还闪电贷。

操纵预言机

操纵预言机攻击可以认为是哄抬套利攻击的一种对称操作,其攻击目标依赖 AMM 提供的信息对其内部资产进行定价。

操纵预言机攻击的基础模型(序号代表攻击步骤,实线表示必要步骤,虚线代表或有步骤;攻击目标的净值计算环节和 AMM 的定价函数在设计上存在被黑客利用的风险)。

这种情况下攻击者虽然无法利用攻击目标内的资产去哄抬 AMM 内某资产的价格,但可以考察 AMM 模块作为预言机能否被操纵,从而哄抬攻击目标内的资产。

攻击目标依赖 AMM 提供信息的主要目的有两种:

(1)对抵押物进行估值;

(2)对头寸代币进行定价。

我们也可将其视为净值计算,而攻击者则专门寻找在净值计算中与实际情况出现偏差的合约进行操纵。一般步骤为:

第一步,准备。获得用于操纵 AMM 预言机的资产 Y 及准备存入攻击目标的资产 A。

第二步,抵押。将资产 A 抵押至攻击目标,获得代表抵押物的头寸代币 B,有些情况下,不发放头寸代币 B,只在智能合约内部记账。

第三步,操纵。将资产 Y 投入 AMM 兑换资产 X,改变 AMM 流动性池内资产的比例从而改变报价,更新攻击目标合约内资产 A 或头寸代币 B 的定价。

第四步,收尾。若为借贷业务,则通过抬高的抵押物估值借出更多资产并不再归还;若为机枪池业务,则通过抬高价格后的头寸代币 B 赎回资产,获得增值收益。

三、安全建议

哄抬套利和操纵预言机攻击模式本质上都是对净值计算环节的利用和操纵行为。故而在设计 DeFi 系统的时候,妥善处理这一环节至关重要。

(1)最根本的预防措施就是取消用户自动触发交易策略链式执行或更新净值的权限,从根本上阻断攻击者完成一整套连贯的操纵行为。

(2)安全审计:智能合约安全关系用户的财产安全,至关重要!区块链项目开发者应与专业的安全审计公司合作,为用户的数字资产安全和项目本身安全提供保障。

(3)增加交易延迟:操纵价格预言机是一个对时间敏感的操作,因为套利者总是在观察,并希望有机会优化任何次优市场。如果攻击者想把风险降到最低,他们会希望在单笔交易中完成操纵价格预言机所需的两笔交易,这样就不会有套利者夹在中间。作为协议开发者,可能只需要将用户进出系统之间的时间间隔增加1个区块的延迟就可以一定程度上防范此类攻击。

(4)时间加权平均价格(TWAP):Uniswap引入了一个TWAP预言机,供链上开发者使用。有文档详细地介绍了该预言机提供的具体安全保障。一般来说,对于长期没有链上拥堵的大型资产池来说,TWAP预言机对预言机操纵攻击有很强的抵抗力。不过,由于其实施的性质,在市场波动较大的时刻,它的响应速度可能不够快,而且只适用于链上已经有流动性的数字资产。

(5)M-of-N报告者机制:如今很多项目都在使用这种方法。Maker运行了一组由可信实体运营的喂价来源,Compound创建了Open Oracle,并拥有Coinbase等报告者,Chainlink聚合了Chainlink运营商的价格数据,并在链上公开。此方法也可有效的防范操纵预言机攻击。

四、通付盾智能合约审计(BitScan)

通付盾作为领先的区块链安全服务提供商,为开发者提供智能合约审计服务。智能合约审计服务由自动化审计和人工审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面111项审计内容,全面保障智能合约安全。

智能合约自动化审计在通付盾云平台上为用户提供智能合约进行自动化审计服务。运用符号执行、形式化验证等智能合约分析技术,保障智能合约安全运行。

通付盾也为客户提供高级别的区块链安全服务,区块链安全专家团队7*24小时为智能合约提供全生命周期的安全保障,服务包括:VIP安全审计服务、VIP合规审计服务、安全事故应急响应等。

电科技(www.diankeji.com)是一家专注于全球TMT行业的领先资讯媒体。

作为今日头条青云计划、百家号百+计划获得者,2019百度数码年度作者、百家号科技领域最具人气作者、2019搜狗科技文化作者、2021百家号季度影响力创作者,曾荣获2013搜狐最佳行业媒体人、2015中国新媒体创业大赛北京赛季军、 2015年度光芒体验大奖、2015中国新媒体创业大赛总决赛季军、2018百度动态年度实力红人等诸多大奖。

投稿、商务合作请联络微信公众号

声明:本站原创文章文字版权归电科技所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表电科技立场,图文版权归原作者所有。如有侵权,请联系我们删除。

猜你喜欢

//59087780b049bbb54ef4ba547ea51910