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

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

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

1、Akropolis确实遭到攻击

2、攻击合约地址为

0xe2307837524db8961c4541f943598654240bd62f

3、攻击手法为重入攻击

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

攻击手法分析

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

图一

图二

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

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

图三

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

图四

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

图五

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

图六

事件小结

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

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

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

写评论,请先登录