刚花了一些时间检查$9M @yearnfi yeth攻击。虽然大多数人指出黑客用少量的wei代币铸造了大量的yeth(P1),但我认为这并不是唯一的根本原因。 原因是什么?黑客实际上并没有提取铸造的yeth,只是在yETH-ETH池中出售了部分,换取了1000 ETH(约300万),远低于黑客的实际利润(P2)。 在我看来,有两个根本原因(或攻击向量): (免责声明:这只是基于我初步分析的分析。我可能会并且有时会犯错误!) (1)一个舍入错误导致铸造了近乎无限的yETH。 这实际上类似于Balancer的黑客事件。缩放因子(在yETH中称为rate)是一个大约为1e18+x%的数字,而乘法-除法使得虚拟余额打破了不变性。代码实际上使用了舍入后的虚拟余额来计算yETH的新总供应量,并将铸造的(新供应量 - 旧供应量)分配给攻击者(P3)。 (2)update_rate函数导致yETH金库的巨大损失。 实际上,攻击者在wrapped OETH和yETH上调用了"update_rates"两次,每次损失了约1000 ETH(其中yETH是从st-yeth金库中销毁的,P4)。-> 600万损失。加上出售的yETH,总利润约为900万。 这可能是由于不变性计算错误而不是单纯的舍入错误造成的。 ---- 我会在这条推文的评论中更新我对这次攻击的新理解。
@yearnfi 更新 (1),我因为试图在 @yearnfi 的 Discord 里提供帮助而被禁言 🤣
@yearnfi 更新,上面的链接不是官方的私信。但我认为它已经揭示了根本原因,并指出了脆弱的代码。
28.6K