零時科技 || Spectra攻擊事件分析
發表於 2024-07-26 16:36 作者: 深圳零時科技
背景介紹
2024年7月23日,我們監控到一筆Ethereum鏈上攻擊交易:https://etherscan.io/tx/0x491cf8b2a5753fdbf3096b42e0a16bc109b957dc112d6537b1ed306e483d0744
被攻擊的項目爲Spectra Protocol,Spectra協議是無需許可的,意味着其服務完全开放供公衆使用。任何人都可以隨意創建新的市場、交換收益衍生品或成爲流動性提供者。此次攻擊中,攻擊者共獲利188, 013asdCRV,折合73, 325USD。
攻擊及事件分析
首先,攻擊者查詢了asd CRV Token中,地址 0x279a7dbfae376427ffac52fcb0883147d42165ff對Spectra Protocol的授權額度與該地址的asd CRV余額。
接着,攻擊者調用execute函數开始針對Spectra Protocol進行攻擊,execute函數代碼如下:
最終,輸入數據會調用_dispatch,該函數的代碼如下:
由上述代碼我們可以看出,該代碼根據_commandType來決定執行哪些操作,在此次攻擊中,_commandType爲0x12 ,所以command=0x12&0x3f=0x12,對應的值爲KYBER_SWAP。
所以,攻擊者調用代碼段如下。我們可以看到,該代碼的kyberRouter和targetData均可以被控制,意味着攻擊者可以利用Spectra Protocol合約調用任意合約並傳入任意參數。
我們將攻擊者的inputs數據解析出來如下:
我們可以發現,kyberRouter已經被操縱爲地址:
0x43e54c2e7b3e294de3a155785f52ab49d87b9922
tokenIn已經被操縱爲地址:
0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
tokenOut被操縱爲地址:
0xba8ce86147ded54c0879c9a954f9754a472704aa
我們可以看到Constants.ETH爲:
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
所以,代碼進入到如下流程
其中,targetData經過解析如下:
由於,transferFrom的signature爲0x23b872dd;所以,transferFrom對應的參數from爲:
0x279a7dbfae376427ffac52fcb0883147d42165ff
to爲:
0xba8ce86147ded54c0879c9a954f9754a472704aa
value爲:
188,013,365,080,870,249,823,427
又因爲,kyberRouter被控制爲:
0x43e54c2e7b3e294de3a155785f52ab49d87b9922,即asdCRVToken。
所以,攻擊者相當於操縱了Spectra Protocol從0x279a7dbfae376427ffac52fcb0883147d42165ff轉了188,013,365,080,870,249,823,427asdCRV到地址0xba8ce86147ded54c0879c9a954f9754a472704aa(此地址爲攻擊者控制的地址)。
至此,攻擊者完成攻擊。
總結
本次漏洞的成因是被攻擊合約對攻擊者傳入參數校驗不嚴格,導致攻擊者可以通過構造特殊的inputData來使受害者合約調用任意合約並傳入任意參數。最終,攻擊者利用特殊的參數,使得受害者合約通過transferFrom將授權給其合約的代幣轉入到攻擊者控制的地址。建議項目方在設計代碼運行邏輯時要多方驗證,合約上线前審計時盡量選擇多個審計公司交叉審計。
標題:零時科技 || Spectra攻擊事件分析
地址:https://www.coinsdeep.com/article/146837.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。