前言
2022年1月18日,知道創宇區塊鏈安全實驗室?監測到BSC上Crosswise遭遇攻擊,此次攻擊導致協議損失87.9萬美元。
攻擊者僅用1個CRSStoken便獲取CrosswiseMasterChef池中價值87.9萬美元的692K個CRSS。實驗室將對本次事件深入跟蹤并進行分析。
基礎信息
攻擊交易哈希:
0xd02e444d0ef7ff063e3c2cecceba67eae832acf3f9cf817733af9139145f479b
攻擊者地址:
0x748346113B6d61870Aa0961C6D3FB38742fc5089
Aave現已上線Scroll Alpha測試網:5月4日消息,Layer2 網絡 Scroll 官方宣布,Aave 現已上線 Scroll Alpha 測試網。[2023/5/4 14:42:43]
攻擊合約:
0x530B338261F8686e49403D1b5264E7a1E169F06b
MasterChef:
0x70873211CB64c1D4EC027Ea63A399A7d07c4085B
CrosswiseRouter:
0x8B6e0Aa1E9363765Ea106fa42Fc665C691443b63
CRSS:
Andre Cronje新項目Solidly總鎖倉量突破20億美元:2 月 27 日,據 Defi Llama 數據顯示,Andre Cronje 新項目 Solidly 總鎖倉量已達到 21 億美元,在部署過 Fantom 鏈的 DeFi 項目中排名第二,排在第一位的是 Multichain,當前總鎖倉量已達 80.1 億美元。[2022/2/27 10:19:15]
0x99FEFBC5cA74cc740395D65D384EDD52Cb3088Bb
攻擊核心
此次攻擊的核心在于,Crosswise中的MasterChef合約Owner地址設置即transferOwnership函數能夠被攻擊者繞過,使得攻擊者能夠成為新的Owner并對MasterChef池子進行攻擊利用。我們將本次攻擊過程分為兩個階段進行分析:獲取Owner權限攻擊和MasterChef池攻擊。
YFI創始人Andre Cronje在Fantom推出Loot仿盤游戲Rarity:9月5日,Yearn.finance創始人Andre Cronje(AC)發布博客,稱贊了Dom Hofmann推出的Loot游戲的是鼓舞人心的。受此啟發,AC決定在Fantom推出Loot仿盤游戲Rarity,玩家每天可以通過冒險賺取xp經驗值,一旦獲得了一定量的xp,就可以升級。游戲共有11個角色,分別是野人、游吟詩人、牧師、德魯伊、展示、僧侶、圣騎士、游俠、巫師、法師。Rarity總量沒有限制,任何人都可以在Rarity合約完成鑄造。目前,已經有6.2萬枚Rarity被鑄造出來。
AC稱,游戲是他的個人愛好,并非其全職項目(全職項目只有Fantom 和 Keep3r),如果有愿意參與游戲建設的可以與他聯系或者在github提交PR。[2021/9/6 23:02:34]
獲取Owner權限攻擊
MicroStrategy首席執行官:為收購價值2.5億美元BTC進行了將近8萬筆場外交易:美國上市公司MicroStrategy首席執行官Michael Saylor稱,為了收購21454枚比特幣(價值約2.5億美元),他們進行了多達78,388筆的場外交易。MicroStrategy公司通過18個鏈上交易確保其加密貨幣資產的安全,這些交易需要將代幣放入冷藏庫中。 在與摩根溪聯合創始人Anthony Pompliano的播客中,Saylor Saylor表示,由于安全問題,他無法“逐條”透露收購過程的細節。Saylor Saylor指出,他們根本沒有影響市場,因為他們有“正確的團隊”。(u.today)[2020/9/18]
1.由于在MasterChef合約中setTrustedForwarder?函數為公開可見性且未作權限設置,攻擊者先將自己的地址設置為TrustedForwarde地址。
2.Crosswisefi項目方對MasterChef的_msgSender()函數并未采取openzepplin的標準寫法且存在漏洞,導致攻擊者能夠通過構造惡意的calldata實現繞過onlyOwner限制完成合約Owner的獲取。
下圖為攻擊者繞過onlyOwner權限構造的惡意payload:
MasterChef池攻擊
1.攻擊者在CrosswiseRouter中用0.01個WBNB兌換出3.71個CRSS
2.攻擊者調用deposit將1個CRSS質押到CrosswiseMasterChef
3.由于上一階段攻擊者已經獲取到MasterChef的Owner權限,此時攻擊者調用set函數對MasterChef的pid為0的池子重新部署了一個未開源的策略合約:0xccddce9f0e241a5ea0e76465c59e9f0c41727003
4.攻擊者調用MasterChef的withdraw函數從池子中獲取692K的CRSS
5.最后攻擊者把692K的CRSS通過CrosswiseRouter合約swap兌換出547個BNB完成攻擊,獲利超87.9萬美元。
策略合約
猜想
由于攻擊者部署的策略合約并未開源,我們只能反向推導猜想策略合約的主要邏輯:
1.根據下圖第18行代碼可以推斷出合約中lockedAmount應該是一個極大值才能支撐攻擊者692k的代幣轉出;又根據第7-11行可以推導出攻擊者部署的strategy合約的LockeTotal()函數返回值極大、sharesTotal()返回值極小。
2.在上圖代碼23行當_amount>0時,會先計算出user的shareRemoved,然后在執行user.amount=user.amount.sub(shareRemoved);,此時若shareRemoved大于user.amount則代碼執行不會通過,可以推導出26行的shareRemoved值很小,又shareRemoved是調用攻擊者部署strategy合約中withdraw獲取,所以此時的strategy合約中withdraw的返回值會很小,小于之前質押的1個CRSS數量;再結合鏈上數據可推導攻擊者部署strategy合約中的withdraw調用返回值為0。
反編譯
為了證實我們的猜想是否正確,我們將攻擊者部署的策略合約進行反編譯。
反編譯后我們可以發現存在一個極大值和一個較小值的常量,即對應猜想1中LockeTotal和sharesTotal值,猜想1正確。
對于猜想2,經過反編譯后我們可以看到策略合約的withdraw最后的返回值為0,猜想2正確
總結
這次攻擊產生的主要原因是項目方使用錯誤的方法去獲取msgSender,導致合約的Owner權限更改能被繞過。知道創宇區塊鏈安全實驗室?在此提醒,任何有關合約權限問題的操作都需要慎重考慮,合約審計、風控措施、應急計劃等都有必要切實落實。
尊敬的歐易用戶: 歐易賺幣將于2022年02月23日11:00(HKT)正式上線ONE鎖倉賺幣服務,您可以一鍵質押ONE參與鎖倉獲得收益.
1900/1/1 0:00:00Gate.ioACA、LINAandPRISMNetDepositCompetitionhascometoasuccessfulend!Accordingtothecriteriaofthisa.
1900/1/1 0:00:00親愛的用戶:幣安Launchpad於2022年02月21日14:00開放AlpineF1?TeamFanToken投入通道,本次Launchpad采用投入模式.
1900/1/1 0:00:00尊敬的WEEX用戶您好!由于短信運營商系統維護,部分用戶無法正常收到短信驗證碼。WEEX正在全力與短信運營商協商解決問題,謝謝請您耐心等待.
1900/1/1 0:00:00原文來源:SuperRare原文作者:HarmonLeon 原文編輯:Sleepy 前言 你想過藝術品可以由社區共創嗎?當然,這不是指社區接力涂鴉.
1900/1/1 0:00:00Thiscampaignisforbetterservingourambassadorsbycollectingfeedback.Time:February23,2022-March3.
1900/1/1 0:00:00