- A+
雍和比特币 在 DeFi 逐步趋于杂乱的情况下,各 DeFi 项目在进行协议间交互时,需求做好协议之间的兼容性,防止因协议兼容问题导致的丢失。
2021年5月8日,据《连锁新闻》报导,以太坊收入聚合协议rari capital由于alpha finance的整合而遭受缝隙,形成近1500万美元的丢失。随后,瑞利本钱正式发布事端剖析陈述,剖析了事端的首要原因。在官方剖析的基础上,结合对事情的深入剖析,慢雾安全小组进一步解读了事端原因。进犯细节剖析这次突击发生在瑞丽本钱的瑞曼格合同中。在整个进程中,进犯者首要经过闪贷向dydx借了很多资金,然后屡次拨打电话;在保险合同中;存款;以及;吊销;函数来完结赢利。如下图所示:
那么用户坐山观虎斗运用;存款;以及;吊销;这两项业务的赢利是多少?咱们需求剖析相应的函数:
这些是;存款;函数逻辑的一部分,首要;存款;该函数自身调用内部函数u2; The depositto函数,然后再次调用getfundbalance函数以获取合同的余额。getfundbalance函数终究将调用rari操控器契约的getbalance函数来获取余额。终究,经过rari操控器契约中alphapoolcontroller库的getbalance函数得到平衡。如下图所示:
流程有点杂乱,如下图所示:
经过以上剖析不难发现,rari合同终究运用了阿尔法金融项目ibeth合同的TOTALLETH函数来取得合同的余额。意图是依据总eth和总供给的比率来核算rari合约的实践eth余额。存款;该函数依据用户充值次数和充值份额,核算向用户宣布的陈述数;吊销;函数的公式是类似的。它还需求经过getbalance函数得到合同的ETH余额并核算出份额,然后依据用户rep token的余额和份额核算出回来给用户的ETH个数。但问题在于得到ETH平衡的公式。依据官方的描述,从ibeth合同的totaleth函数取得的值能够被用户操作。以下是官方文本:
依据官方的描述,用户能够经过ibeth合约的功函数来操控totaleth函数回来的值,然后导致rari全体价值核算公式的溃散。别离剖析了ibeth的功函数和总函数Totaleth函数:
作业功用:
以上是ibeth合同中totaleth功用和work功用的部分完成。不难发现totaleth函数实践上是获取合同的eth总数。work函数自身是一个payable函数,即用户能够经过work函数操控ibeth合同中eth的个数,然后改动totaleth回来的值。更糟糕的是,work函数还支撑调用其他恣意契约。那么整个主意就很清楚了。进犯进程1dydx供给的快速借款,供给很多eth借款;2当eth的一部分用于弥补rari本钱合一起,从ibeth取得的比率仍然是正常的;3运用剩下的eth充值到ibeth合同中,调用ibeth合同的作业函数,预备推高ibeth合同的TOTALLETH回来值;4在作业功用中,一起为rari本钱合同发动现金提取。由于totaleth的值在上一步中被推高,可是totaleth()/totalsupply()的核算值相对于充值时刻被拉高,所以进犯者能够经过运用相同数量的rept从rari capital取得更多的ETS。总结在这种剖析中,首要原因是协议的不兼容性。进犯者经过闪贷、再入等手法对瑞利本钱进行进犯,形成巨大丢失。slow fog安全团队主张,在defi日益杂乱的情况下,在defi项目之间的交互中要做好协议之间的兼容性,防止协议兼容性问题形成的丢失。
[参阅链接]
rari本钱官方剖析:
https://medium.com/rari-capital/5-8-2021-rari-ethereum-pool-post-mortem-60aab6a6f8f9
进犯业务(其中之一)
https://etherscan.io/tx/0x171072422efb5cd461546bfe98比特币d9b5aa427ff1c07ebe8acc064b13a7b7be
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-





2021年6月3日 上午7:52 沙发
数字版权领域