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

2024-04-30 10:32

本文主要是介绍斯巴达陷落—BSC首次闪电贷攻击事件分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    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合规审计服务、安全事故应急响应等。

这篇关于斯巴达陷落—BSC首次闪电贷攻击事件分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948622

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除