DeFi 协议 Akropolis 重入攻击事件分析

11月13日, DeFi 项目 Akropolis 遭到黑客攻击,黑客通过利用 Curve 多个储蓄池的漏洞,成功盗走 200 万 DAI。 随后,多家安全审计机构纷纷针对本次事件发表分析。

DeFi 协议 Akropolis 重入攻击事件分析

11月13日, DeFi 项目 Akropolis 遭到黑客攻击,黑客通过利用 Curve 多个储蓄池的漏洞,成功盗走 200 万 DAI

Akropolis团队向攻击Delphi的黑客发公开信呼吁合作,以收回社区成员的用户资金,并提出漏洞赏金。此外,团队正进行外部调查,自黑客攻击以来,已采取以下措施:

1.与审计合作对黑客攻击进行内部调查;

2.推特和博客向社区披露黑客攻击;

3.在合约级别实施一些修复程序;

4.与投资者和交易所合作伙伴进行外部调查。

团队目前尚未联系任何形式的执法部门进行刑事调查。建议黑客在48小时内退回资金,作为回报将提供20万美元的bug赏金,并根据需要保护身份信息。如果黑客决定不合作,团队将追究刑事责任并联系执法部门。

随后,多家安全审计机构纷纷针对本次事件发表分析。

慢雾

2020 年 11 月 13 日, 据  CoinDesk 消息,Akropolis 协议遭受黑客攻击,损失约 200 万 DAI,慢雾安全团队已于当天第一时间介入分析,并将结论同步给了相关关心方。以下为慢雾安全团队对此事件的简要分析,供大家参考。

1. 攻击者使用自己创建的 token 进行 deposit,此时 Akropolis 合约会先记录一次合约中所有代币的总量;

2. Akropolis 合约调用用户自己创建的 token 的 transferFrom 函数的时候,攻击者在 transferFrom 函数中重入 Akropolis 合约的 deposit 函数,并转入 DAI 到 Akropolis 合约中;

3. 此时在重入的交易中,由于 Akropolis 合约会先获取合约中所有代币的总量,这个值和第一次调用 deposit 函数获取的合约代币总量的值一致;

4. Akropolis 合约计算充值前后合约中代币总量的差值,攻击者在充值 DAI 后,会得到一定量的 Delphi token,获得 token 的数量就是充值 DAI 的数量;

5. 铸币完成后,流程回到第一次 deposit 往下继续执行,这时合约会再次获取合约中所有代币的总量,这时由于在重入交易时,攻击者已经转入一定量的 DAI,所以得到的代币总余额就是攻击者在重入交易完成后的代币总余额;

6. 此时合约再次计算差值,由于第一次 deposit 的时候合约中所有代币的总量已经保存,此时计算出来的差值和重入交易中计算的差值一致,Akropolis 合约再次铸币给攻击者。

总结:攻击者使用自己构造的 token,对 Akropolis 合约的 deposit 函数进行重入,导致 Akropolis 合约使用相同的差值铸币了两次,但是只触发了一次转账,当攻击者提现的时候,就可以提两倍的收益,从而获利。

链安

近日,DeFi借贷协议Akropolis遭到网络黑客的攻击。Akropolis创始人兼首席执行官Ana Andrianova表示,攻击者利用在衍生品平台dYdX的闪电贷进行重入攻击,造成了200万美元的损失。

成都链安团队在接到自主独立研发的区块链安全态势感知平台(Beosin-Eagle Eye)报警后,第一时间对本次攻击事件进行了调查,结果发现:

1、Akropolis确实遭到攻击

2、攻击合约地址为

0xe2307837524db8961c4541f943598654240bd62f

3、攻击手法为重入攻击

4、攻击者获利约200万美元

攻击手法分析

通过对链上交易的分析,发现攻击者进行了两次铸币,如下图所示:

DeFi 协议 Akropolis 重入攻击事件分析
DeFi 协议 Akropolis 重入攻击事件分析

参考链接:https://etherscan.io/tx/0xddf8c15880a20efa0f3964207d345ff71fbb9400032b5d33b9346876bd131dc2

但据oko.palkeo.com交易调用情况显示,攻击者仅调用了一次deposit函数,如下图所示:

DeFi 协议 Akropolis 重入攻击事件分析

通过跟踪函数调用,成都链安团队发现,攻击者在调用合约的deposit时,将token设置为自己的攻击合约地址,在合约进行transferFrom时,调用的是用户指定的合约地址,如下图所示:

DeFi 协议 Akropolis 重入攻击事件分析

通过分析代码发现,在调用deposit函数时,用户可指定token参数,如下图所示:

DeFi 协议 Akropolis 重入攻击事件分析

而deposit函数调用中的depositToprotocol 函数,存在调用 tkn 地址的safeTransferFrom函数的方法,这就使得攻击者可以通过构造“safeTransferFrom”从而进行重入攻击。

DeFi 协议 Akropolis 重入攻击事件分析

事件小结

Akropolis作为DeFi借贷、存储服务提供商,其存储部分使用的是Curve协议,这在当天早些时候的攻击中曾被利用。攻击者从该项目的yCurve和sUSD池中取出了5万美元的DAI,而在耗尽这些池子前,共计窃取了价值200万美元的DAI。

在本次攻击事件中,黑客使用重入攻击配合dYdX闪电贷对存储池发起了侵占。在协议中,资产存储池可谓是防守重点,作为项目方,对资金池的安全预防、保护措施应置于最优先级别。特别是,为应对黑客不断变化的攻击手段,定期全面检查和代码升级缺一不可。

最后,成都链安强烈呼吁,对于项目方而言,安全审计和定期检测切勿忘怀;对于投资者而言,应时刻不忘安全警戒,注意投资风险。

本文来自投稿,不代表DAppChaser立场,如若转载,请注明出处:https://www.dappchaser.com/defi-akropolis/

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

邮件:contact@dappchaser.com

QR code