PeckShield:老马失蹄 PolyYeld代币归零

  • A+
所属分类:安全新闻
PeckShield:老马失蹄 PolyYeld代币归零

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

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

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

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

PeckShield:老马失蹄 PolyYeld代币归零

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

PeckShield:老马失蹄 PolyYeld代币归零

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

PeckShield:老马失蹄 PolyYeld代币归零

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

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

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

PeckShield:老马失蹄 PolyYeld代币归零

本文始发于微信公众号(PeckShield):PeckShield:老马失蹄 PolyYeld代币归零

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: