原標題:《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「派盾」建議在進行設計時應充分考慮不同合約間交互的兼容性問題。