7月28日,收益聚合器Polyyeld.Finance遭到攻击,其代币YELD归零,攻击者获利25万美元。
PeckShield安全人员第一时间定位分析,发现此次攻击源于MasterChef不兼容通缩型代币,使得攻击者可以通过打破流动池平衡获利。
基于MasterChef的设计,如果用户在MasterChef中存入100枚代币,仍可以从MasterChef中提取100枚代币,但实际上,由于在交易中协议会收取一定比例的手续费,合约中的余额是扣除手续费后的数值。一旦流动池中的总代币余额极小时,用户所获奖励就会急剧增长。
PeckShield简述攻击过程:
第一步,攻击者创建攻击合约在PolyYeld中抵押xYELD代币,以便后续获取YELD代币励。
可口可乐NFT明天开卖!所得收益将捐给国际特殊奥运委员会
第二步,攻击者利用xYELD通缩型代币与MasterChef合约的兼容性问题,通过频繁地进行抵押-提现操作,最终导致合约中的xYELD代币数量消耗到一个极小的数量。
随后,攻击者通过在合约中进行提现操作以获取YELD代币奖励,奖励的计算会除合约中xYELD代币数量,而此时合约中xYELD代币数量是一个极小的数量,所以导致除法计算后奖励的数量变成一个巨大的值。
第四步,攻击者在获得大量YELD奖励后,将它们在QuickSwap、SushiSwap、ApeSwap中换为ETH,最后通过TornadoCash转移盗取资产。
此次攻击的核心问题在于通缩型代币与MasterChef合约不兼容导致的。此兼容性问题造成PolyYeld合约中Yeld代币被恶意耗尽,而YELD代币奖励计算又依赖于池中YELD代币数量,最终导致YELD代币价格闪崩。
由于收益聚合器需要多个合约进行交互,PeckShield建议在进行设计时应充分考虑不同合约间交互的兼容性问题。
原创文章,作者:菜鸡,如若转载,请注明出处:https://www.20on.com/96275.html