SharkTeam:Vyper漏洞導致Curve和JPEG'd等項目被攻擊原理分析
7月30日,因為Vyper部分版本中的漏洞,導致Curve、JPEG'd等項目陸續受到攻擊,損失總計超過5200萬美元。
SharkTeam對此事件第一時間進行了技術分析,並總結了安全防範手段,希望後續項目可以引以為戒,共築區塊鏈行業的安全防线。
一、 事件分析
以JPEG'd被攻擊為例:
攻擊者地址:0x6ec21d1868743a44318c3c259a6d4953f9978538
攻擊者合約:0x9420F8821aB4609Ad9FA514f8D2F5344C3c0A6Ab
攻擊交易:0xa84aa065ce61dbb1eb50ab6ae67fc31a9da50dd2c74eefd561661bfce2f1620c
(1)攻擊者(0x6ec21d18)創建0x466B85B4的合約,通過閃電貸向 [Balancer: Vault]借了80,000 枚WETH。
(2)攻擊者(0x6ec21d18)向pETH-ETH-f(0x9848482d)流動性池中添加了40,000枚WETH,獲得32,431枚pETH。
(3)隨後攻擊者(0x6ec21d18)從pETH-ETH-f(0x9848482d)流動性池中重復地移除流動性。
(4)最終,攻擊者(0x6ec21d18)獲得86,106枚WETH,歸還閃電貸後,獲利6,106枚WETH離場。
二、漏洞分析
(1)該攻擊是典型的重入攻擊。對遭受攻擊的項目合約進行字節碼反編譯,我們從下圖可以發現:add_liquidity 和 remove_liquidity 兩個函數在進行校驗存儲槽值時,所要驗證的存儲槽是不一樣的。使用不同的存儲槽,重入鎖可能會失效。此時,懷疑是Vyper底層設計漏洞。
(2)結合Curve官方的推文所說。最終,定位是Vyper 版本漏洞。該漏洞存在於0.2.15、0.2.16、0.3.0版本中,在重入鎖設計方面存在缺陷。我們對比0.2.15之前的0.2.14以及0.3.0之後的0.3.1版本,發現這部分代碼在不斷更新中,老的0.2.14和交心的0.3.1版本沒有這個問題。
(3)在Vyper對應的重入鎖相關設置文件data_positions.py中,storage_slot的值會被覆蓋。在ret中,第一次獲取鎖的slot為0,然後再次調用函數時會將鎖的slot加1,此時的重入鎖會失效。
漏洞總結:本次攻擊事件根本原因是Vyper的0.2.15、0.2.16、0.3.0版本的重入鎖相關設計不合理,並且沒有進行足夠全面的功能測試。導致後期使用這些版本的項目中重入鎖失效,最終遭受了黑客攻擊。\
三、 安全建議
對於本次攻擊事件,开發人員在日常开發中應當採取有以下的安全措施:
(1) 項目方需保障功能設計合理並對代碼進行全面測試,防止遺漏某些功能的測試。
(2) 項目發版前,需要向第三方專業的審計團隊尋求技術幫助。
About Us
SharkTeam的愿景是全面保護Web3世界的安全。團隊由來自世界各地的經驗豐富的安全專業人士和高級研究人員組成,精通區塊鏈和智能合約的底層理論,提供包括智能合約審計、鏈上分析、應急響應等服務。已與區塊鏈生態系統各個領域的關鍵參與者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立長期合作關系。
官網:https://www.sharkteam.org
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
XRP 漲至 7.5 美元?分析師告訴 XRP 大軍為純粹的煙火做好准備!
加密貨幣分析師 EGRAG 表示,XRP 即將迎來關鍵時刻,價格可能大幅上漲,這取決於能否突破關鍵...
今晚ETH迎來暴漲時代 op、arb、metis等以太坊二層項目能否跑出百倍幣?
北京時間7月23日晚上美股开盤後 ETH 的ETF开始交易。ETH的裏程碑啊,新的時代开啓。突破前...
Mt Gox 轉移 28 億美元比特幣 加密貨幣下跌 ETH ETF 提前發行
2014 年倒閉的臭名昭著的比特幣交易所 Mt Gox 已向債權人轉移了大量比特幣 (BTC),作...
SharkTeam
文章數量
37粉絲數
0