PolyYeld Finance 被攻擊事件全解析:代幣 YELD 價格跳水歸零!

北京時間7月28日,安全公司Rugdoc在推特表示,收益耕作協議PolyYeld Finance遭到攻擊,所有者已宣布合約已被利用并鑄造了大量YELD代幣。CoinGeckko行情顯示,YELD代幣價格直線跳水歸零,狂跌100%。

事件概覽

攻擊如何發生 Event overview

PolyYeld Finance 是 Polygon 網絡上的下一代產量農業協議,具有許多獨特和創造性的功能,使用戶能夠獲得被動收入。

據悉,項目正在嘗試創建一個類似于 Yearn 的協議,以減少對 Polygon Network 用戶、LP 提供商和抵押者高價值的代幣供應。在 2-3 個月的時間里,只會鑄造 62100 個 YELD 代幣。

北京時間7月28日,PolyYeld Finance意外遭到黑客“血洗”,被攻擊之后,YELD代幣價格直線跳水歸零,狂跌100% !

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

這一次,黑客攻擊使YELD代幣價格直線跳水歸零,可謂損失慘重。成都鏈安再次提醒各大項目方,一定要注意安全防范工作。

事件具體分析

攻擊者如何得手 Event overview

整個攻擊事件由黑客一手策劃。攻擊者利用xYELD代幣轉賬時實際到賬數量小于發送數量以及MasterChef合約抵押計算獎勵上存在的邏輯缺陷,通過投入大量資金控制MasterChef合約中抵押池的抵押代幣數量,進而操縱獎勵計算,從而獲得巨額的xYELD獎勵代幣,最后利用QuickSwap套現離場。

攻擊者地址:

0xa4bc39ff54e1b682b366b57d1f6b114a829f5c01

攻擊合約:

A:0x1BdF24CB4c7395Bf6260Ebb7788c1cBf127E14c7

B:0x56ec01726b15b83c25e8c1db465c3b7f1d094756

攻擊交易:

0x3c143d2a211f7448c4de6236e666792e90b2edc8f5035c3aa992fd7d7daca974

0x10eeb698a2cd2a5e23d526b2d59d39a15263be018dbbda97dad4f9fa8c70347f

Round 1

攻擊者首先利用QuickSwap交易對將29.75 WETH換成527.695171116557304754 xYELD代幣。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

接下來,攻擊者通過攻擊合約在一筆交易反復調用MasterChef合約中的抵押提取函數將MasterChef中PID為16的抵押池中的xYELD代幣數量減少0到最小值。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

由于xYELD代幣在轉移時,如果recipient地址不是BURN_ADDRESS地址,變量transferTaxRate的值不為0,recipient地址在_isExcluded映射中對應的值不為true,并且發送者不為合約的擁有者,就會收取一定比例的手續費,當前比例為3%。手續費會轉移到代幣合約中,在滿足特定條件后,會將收取的手續費作為流動性添加到對應交易對中去。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

而在MasterChef合約中,抵押數量記錄的是代幣轉移的初始數量,而不是實際到賬數量。在進行提取操作時,可提取的數量為記錄的數量,超出了用戶實際抵押到本合約中的數量,因為在完成一次抵押提取操作后,該抵押池中的xYELD代幣便會異常減少。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

在進行攻擊前MasterChef中的xYELD代幣的數量為242.017807511865297458:

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

在進行攻擊后MasterChef中的xYELD代幣的數量為0.000000000000000001:

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

Round 2

攻擊者事先通過攻擊合約B在該抵押池中抵押0.009789171908299592 xYELD代幣,并將推薦人設置為攻擊合約A。在攻擊合約A攻擊完成后,控制攻擊合約A在該抵押池中進行獎勵領取,由于MasterChef合約中更新抵押池信息時使用的是balanceOf函數獲取本合約中抵押代幣數量,故獲取到的數量是惡意減少之后的數量。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

這會造成xYFLD抵押池中accYeldPerShare變量異常增大:

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

從而使得獎勵變為巨額:

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

Round 3

在進行獎勵發放時,由于計算出來的獎勵數量遠超過實際鑄幣數量,故將本合約中所有的YELD代幣轉移給攻擊合約B,通過獲取獎勵得到的獎勵代幣數量為:3031.194777597579576657 YELD。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

同時,因為攻擊合約B的推薦人是攻擊合約A,故在攻擊合約B領取獎勵時會對攻擊合約A發放推薦獎勵,計算方式為被推薦人獲取的獎勵的2%。由于傳入的_pending數量為異常大的值,故攻擊合約A獲得的推薦獎勵也為異常大的數量,攻擊合約獲得的推薦獎勵為:

4995853249752.895065839722805591 YELD。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

最后攻擊者利用QuickSwap將所有的YELD代幣兌換成USDC、WETH和MATIC套現離場。

代幣YELD價格直接跳水歸零:PolyYeld Finance被攻擊事件全解析

事件復盤

我們需要注意什麼 Case Review

本次事件與之前SafeDollar攻擊事件類似,都是使用了相同的攻擊手法。不同之處有兩點:其一是此次攻擊攻擊者沒有選擇利用閃電貸來獲取大量資金,而是投入了29.75 WETH作為攻擊的初始資金;其二是MasterChef合約中推薦獎勵機制的問題,正是這個推薦獎勵機制將本次攻擊的危害無限放大了。

MasterChef類型抵押池設計之時,還沒有通縮通脹類代幣的出現,故開發者并沒有考慮這類代幣可能會造成的影響。部分的項目方在進行代碼開發時,直接使用了舊的MasterChef代碼,并添加了通縮通脹類代幣或者獎勵作為抵押代幣,這便導致了各種惡意攻擊事件或異常情況的產生。就目前來看,MasterChef類型抵押池存在兩種類型的問題:一是沒有對通脹通縮類代幣進行特殊處理,沒有檢查實際轉移到合約中的代幣數量是否與函數調用時填寫的數量相同;二是添加了獎勵代幣作為抵押代幣,導致獎勵計算出現異常。

兩種類型問題的根本原因還是在于計算獎勵時,獲取抵押量使用了balanceOf函數來獲取。建議項目方在進行MasterChef類型抵押池代碼開發時,使用一個單獨的變量作為抵押數量的記錄,然后計算獎勵時,通過此變量來獲取抵押代幣數量,而不是使用balanceOf函數。

發文者:鏈站長,轉載請註明出處:https://www.jmb-bio.com/4163.html

讚! (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Previous 2023 年 2 月 28 日 下午 5:42
Next 2023 年 2 月 28 日 下午 5:49

相關文章

  • Vitalik Buterin:乙太坊的設計理念(一)

    盡管以太坊的許多理念在早先的密碼學貨幣(如比特幣)上已經運用并測試了5年之久,但從某些協議功能的處理方法上來說,以太坊與常見方式仍有許多不同。而且,以太坊可用于開發全新的經濟工具,因為它具有其他系統不具備的許多功能。本文會詳細描述以太坊所有的潛在優點,以及在構建以太坊協議過程中某些有爭議的地方。另外,也會指出我們的方案及替代方案的潛在風險。 原則 以太坊協議…

    2023 年 2 月 28 日
  • 區塊鏈數據爬蟲實戰:使用 Python 爬取交易清單資料!

    前言 今天主要分享如何利用爬蟲爬取區塊鏈瀏覽器上的交易列表數據。 原因 dune上沒有bsc鏈上的轉賬明細數據表。Footprint Analytics上現有的bsc_transactions表transfer_type粒度不夠。 環境 python 3.7 數據存儲:mysql 5.7 緩存:redis 6.2.6 開發工具:pycharm 思路 (1)所…

    2023 年 2 月 28 日
  • 閃電網路應用開發速成指南,掌握 Lightning Network!

    如果你想要入門閃電網絡編程,又不在乎所謂正確、最佳的做法,這篇文很適合你。換言之,這篇指南具有很強的 主觀性。如果你偏好 O’Reilly 式的權威文本,這篇文章可能不對你的胃口。但是,如果你想要了解閃電網絡的最小開發環境及其基本內容,不妨讀一讀。我寫本文的目的是提煉出創建閃電網絡應用的基礎知識點,讓新手能夠快速構建和實驗。 我相信,只…

    2023 年 2 月 28 日
  • 虛擬通道技術詳解:如何創建狀態通道網路!

    在本文中,我們介紹了一種叫作虛擬通道(virtual channel)的新型狀態通道結構。虛擬通道不僅使得付費文件流(點擊此處,查看 demo!)等新型應用場景成為可能,還可以簡化去中心化的 Graph 查詢支付、Filecoin 內容檢索、帶有經濟激勵機制的狀態提供者網絡等有趣的應用場景。 動機 讓我們來設計一個免信任的付費文件流支付系統。這個系統中有 s…

    2023 年 2 月 28 日
  • LiquiDEX 兩步原子切換式通訊協定解析:掌握最新區塊鏈技術!

    長話短說:LiquiDEX 是一個在 Liquid網絡上執行兩步原子交換(atomic swaps)的協議,它只需要交換方的單次交互,這極大地改善了用戶體驗。而使用該協議,我們可以構建出更復雜系統的構建塊,例如自動 OTC 交易柜臺、拍賣系統甚至去中心化交易所 (DEX)。 注:LiquiDEX的產品還不可用。 簡介:Liquid網絡和原子交換技術 Liqu…

    2023 年 2 月 28 日
每日鏈頭條給你最新幣圈相關資訊!