原标题:《PeckShield:老马失蹄PolyYeld代币归零》

7月28日,收益聚合器 Polyyeld.Finance 遭到攻击,其代币 YELD 归零,攻击者获利 25 万美元。

PeckShield 安全人员第一时间定位分析,发现此次攻击源于 MasterChef 不兼容通缩型代币,使得攻击者可以通过打破流动池平衡获利。

基于 MasterChef 的设计,如果用户在 MasterChef 中存入 100 枚代币,仍可以从 MasterChef 中提取 100 枚代币,但实际上,由于在交易中协议会收取一定比例的手续费,合约中的余额是扣除手续费后的数值。一旦流动池中的总代币余额极小时,用户所获奖励就会急剧增长。

PeckShield「派盾」简述攻击过程:第一步,攻击者创建攻击合约在 PolyYeld 中抵押 xYELD 代币,以便后续获取 YELD 代币奖励。

第二步,攻击者利用 xYELD 通缩型代币与 MasterChef 合约的兼容性问题,通过频繁地进行「抵押-提现」操作,最终导致合约中的 xYELD 代币数量消耗到一个极小的数量。

随后,攻击者通过在合约中进行提现操作以获取 YELD 代币奖励,奖励的计算会除合约中 xYELD 代币数量,而此时合约中 xYELD 代币数量是一个极小的数量,所以导致除法计算后奖励的数量变成一个巨大的值。

第四步,攻击者在获得大量 YELD 奖励后,将它们在 QuickSwap、SushiSwap、ApeSwap 中换为 ETH,最后通过 Tornado Cash 转移盗取资产。

此次攻击的核心问题在于“通缩型代币”与 MasterChef 合约不兼容导致的。此兼容性问题造成 PolyYeld 合约中 Yeld 代币被恶意耗尽,而 YELD 代币奖励计算又依赖于池中 YELD 代币数量,最终导致 YELD 代币价格闪崩。

由于收益聚合器需要多个合约进行交互,PeckShield「派盾」建议在进行设计时应充分考虑不同合约间交互的兼容性问题。