PeckShield揭秘:Akropolis DeFi协议被

WB3交流加微信:WX-93588,⬅️此处为全站广告位,与正文项目无关
注册并登录App即可领取高达 60,000 元的数字货币盲盒:点击此处注册OKX

黑客使用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前后余额的差值得出。所以第2次deposit的真实的DAI财物会被核算两次用于铸造pooltokens。第一次是在歹意合约0xe230存储的时分,第2次是在DAI存储的时分。也就是说,如果第2次存储的时分存入了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函数;

第三步:由于第2次调用deposit函数的时分进犯者存入了真正的DAI代币使得池子的代币余额发生改变,所以进犯者能够取得资金池铸造的poolTokens;

第四步:当第2次deposit函数调用完毕的时分,代码履行流程将返回第一次存储代币调用depositToProtocol函数的上下文。这个时分,代币余额改变将被再次核算。此刻代币余额的改变和第2次调用deposit函数代币余额改变相同。因此进犯者能够再次取得相应数目的poolTokens。

被盗财物状况

这次进犯的被盗财物现在被存储在钱包0x9f26中。PeckShield旗下数字财物追寻渠道CoinHolmes正在对该地址做全方位监控,并对其资金流向做进一步的锁定剖析和追寻,以便协助项目方挽回被盗财物。

此时快讯

【Starknet TVL跌破1亿美元,较8月16日高点下跌逾50%】8月22日消息,L2BEAT数据显示,Starknet TVL跌破1亿美元,截至发稿时为9815万美元,近7日减少51.45%。
此前,Starknet TVL于8月16日达到2.03亿美元的高点。

版权声明:本文收集于互联网,如有侵权请联系站长删除。
转载请注明:PeckShield揭秘:Akropolis DeFi协议被 | 币百度

相关文章