PeckShield揭秘:Akropolis DeFi协议被盗200万美元的攻击细节

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

黑客利用Akropolis合约漏洞连续实施了17次重入攻击,导致其yCurve和sUSD资金池损失了203万枚DAI。

原文标题:DeFi协议Akropolis漏洞详解:黑客复现「经典重入攻击」掳走203万DAI撰文:PeckShield

昨天晚间19时50分,DeFi协议Akropolis遭到了黑客攻击。

区块链安全公司PeckShield(派盾)安全人员迅速定位到问题在于,Akropolis项目的SavingsModule合约在处理用户存储资产时存在某种缺陷,黑客利用此缺陷连续实施了17次重入攻击,导致其YCurve和sUSD资金池损失了203万枚DAI。

技术概要

本次攻击的原因如下:1. 合约没有对用户存储的Token进行白名单校验2. 关键的deposit函数没有对重入攻击的保护

简单而言:黑客利用Akropolis项目存在的存储资产校验缺陷,向合约发起连续多次的重入攻击,致使Akropolis合约在没有新资产注入的情况下,凭空增发了大量的pooltokens,进而再利用这些pooltokens从YCurve和sUSD池子中提取DAI,最终导致项目合约损失了203万枚DAI。

攻击过程详解

攻击流程复现:我们通过分析黑客实施攻击的交易哈希(0xe1f375a47172b5612d96496a4599247049f07c9a7d518929fbe296b0c281e04d)发现,攻击来自于一个恶意的ERC20合约地址(0xe2307837524Db8961C4541f943598654240bd62f)

这个恶意合约实现了一个钩子函数,使得函数在transferFrom(functionsignature:0x23b872dd)被调用的时候会被执行。

攻击者先是调用SavingsModule.sol中的deposit函数,并将自己编写的位于0xe230开头的恶意合约其钩子函数会再次调用deposit函数并存入真实的DAI资产。

由于pooltokens增发的量通过代币deposit前后余额的差值得出。所以第二次deposit的真实的DAI资产会被计算两次用于铸造pooltokens。第一次是在恶意合约0xe230存储的时候,第二次是在DAI存储的时候。也就是说,如果第二次存储的时候存入了25KDAI,那么由于重入攻击,总的铸造的pooltokens将会是双倍,也就是50KDAI。

以此类推,黑客总共发起17次重入攻击并获得了总共2,030,841.0177个DAI资产。

值得注意的是,在攻击的最开始,攻击者还使用了dYdX的闪贷功能。

核心漏洞详解

接下来,我们分析下存在漏洞的代币存储逻辑。Akropolis的用户可以将代币存储入DelphiSavingsPools,而资金池会铸造相应的pooltokens给用户。核心逻辑在SavingsModule::deposit(1,944行)。

第一步:攻击者调用deposit函数并提供_tokens参数。这个函数在进一步调用depositToProtocol(_protocol,_tokens,_dnAmounts)前后会计算代币的余额,并通过代币余额的变化来决定将要铸造的poolTokens数目(第1,970行)。而depositToProtocol函数会调用目标代币的safeTransferFrom函数来进行代币的转账(第2,004行)。然而deposit函数没有对重入攻击进行检测,也没有检查存入的代币是否为恶意代币;

第二步:在恶意代币的transferFrom函数被调用的时候,触发钩子函数,从而再次调用deposit函数;

第三步:因为第二次调用deposit函数的时候攻击者存入了真正的DAI代币使得池子的代币余额发生变化,所以攻击者可以获得资金池铸造的poolTokens;

第四步:当第二次deposit函数调用结束的时候,代码执行流程将返回第一次存储代币调用depositToProtocol函数的上下文。这个时候,代币余额变化将被再次计算。此时代币余额的变化和第二次调用deposit函数代币余额变化一样。因此攻击者可以再次获得相应数目的poolTokens。

被盗资产情况

这次攻击的被盗资产目前被存储在钱包0x9f26中。PeckShield旗下数字资产追踪平台CoinHolmes正在对该地址做全方位监控,并对其资金流向做进一步的锁定分析和追踪,以便协助项目方挽回被盗资产。

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://czxurui.com/zx/69078.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年08月22日
下一篇 2023年08月22日

相关推荐

  • 什么是代币ico,什么是代币

    一、什么是代币***ico代币ICO是一种基于区块链技术的筹款方式。代币ICO,即Initial Coin Offering,直译为“初始币发行”,是一种通过发行新的加密货币来筹集资金的方式。与传统的股票发行类似,ICO允许初创公司通过销售其特定的加密代币来筹集资金,以支持其项目或业务的发展

    2024-12-23 09:00:01
    6 0
  • 如何看代币锁仓,Pi币是不是骗局

    一、闪电比特币是什么闪电比特币还没有被大家所熟知,那是因为他是一个比特币的分叉币,币圈的许多的用户都本能对这类的通证产生厌恶情绪。分叉币现在已经俨然成为了圈钱,跑路的代名词。但是有一点各位可能不知道,所有比特币的分叉币在国外的监管者眼里都可以叫做是货币。美

    2024-12-23 06:00:01
    5 0
  • 预言机有哪些代币,web3龙头币是哪个

    一、web3龙头币是哪个***web3有关的代币web3.0最低市值的币有哪些板块全面爆发,这里猎手挖掘了一个最低市值的web3.0,流通市值不到8亿,它就是——万事利。8月31日,万事利“西湖一号SilkDAO”数藏平台正式上线APP。作为首个探索“数字藏品实物化”场景融合的数字藏品平台,

    2024-12-23 05:00:01
    4 0
  • 域链什么时间送币,哔哩哔哩区块链代币怎么领

    一、哔哩哔哩区块链代币怎么领***哔哩哔哩怎么拿币***区块链怎么赚钱?区块链是一项革命性的技术,它提供了去中心化、隐私保护以及图灵完备的智能合约技术基础,被誉为下一个“互联网革命”。通过购买区块链项目的数字资产,我们可以合理配置自己的财产,合理投资,依靠代币的

    2024-12-22 23:30:01
    5 0
  • 区块链代币怎么分配,区块链财富怎么分配

    一、区块链为什么要有代币(为什么区块链都要发行某某币)代币是什么?代币是虚拟商品“具有没有集中发行方、总量有限、使用不受地域限制和匿名性等四个主要特点。虽然被称为‘货币’,但由于其不是由货币当局发行,不具有法偿性与强制性等货币属性,并不是真正意义的货币。从性

    2024-12-20 22:30:02
    10 0
  • 时代币怎么交易,原子币是怎么转到钱包的呢

    一、石器时代觉醒金贝怎么变现游戏内交易平台,游戏外交易平台,游戏物品交易平台。1、游戏内交易平台:在游戏内,有些游戏提供了虚拟货币的交易平台,可以通过这些平台将金贝出售给其他玩家,以真实货币的形式获得回报。确保使用官方认可的交易平台,遵守游戏规则和相关法律

    2024-12-20 14:00:02
    9 0

发表回复

8206
验证码

评论列表(0条)

    暂无评论

ok交易所
已有100万用户加入ok交易所

立即下载