0x01:前言
援引官方消息,北京時間12月19日,Fantom鏈上復合收益平臺GrimFinance遭遇了閃電貸攻擊。知道創宇區塊鏈安全實驗室第一時間對本次事件深入跟蹤并進行分析。
0x02:事件詳情
交易細節如下圖所示:
瀏覽上圖的交易過程可知,攻擊合約利用閃電貸借取代幣WFTM和BTC,將借取的代幣與自己鑄造的代幣質押到SpiritSwap里增加流動性獲取lp代幣,而問題就出現在攻擊者通過depositFor()實現質押的過程中。
通過Tenderly調試該筆交易,攻擊者多次遞歸調用depositFor函數,利用該函數獲取大量代幣:
美SEC、司法部、CFTC及FTC均對Celsius及其前CEO提起訴訟:金色財經報道,美國證券交易委員會 (SEC)、司法部 (DOJ)、商品期貨交易委員會 (CFTC) 和聯邦貿易委員會 (FTC) 在過去一小時內都對Celsius Network及其前 CEO Alex Mashinsky提起訴訟。
美國司法部表示,前Celsius?Network首席執行官Alex Mashinsky被逮捕,在紐約聯邦法院公開了對Celsius的起訴書。[2023/7/13 10:53:34]
0x03:漏洞分析
depositFor()函數位于的第1115行:
Grayscale CEO:貝萊德的公開承諾只會增強加密資產類別的有效性及其持久力:金色財經報道,Grayscale CEO Michael Sonnenshein表示,貝萊德公開承諾推進他們的加密貨幣努力,只會增強該資產類別的有效性及其持久力。ETF包裝經過考驗且真實可靠,它已成為不同資產的接入點,無論是大宗商品還是股票,比特幣是一種不會消失的資產。[2023/7/12 10:50:28]
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
?uint256?_pool?=?balance();
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
美股三大股指低開 標普500指數跌1.12%:1月25日消息,美股三大股指低開,納指跌1.62%,標普500指數跌1.12%,道指跌0.79%。[2023/1/25 11:29:50]
?earn();
?uint256?_after?=?balance();
?_amount?=?_after.sub(_pool);?//?Additional?check?for?deflationary?tokens
?uint256?shares?=?0;
?if?(totalSupply()?==?0)?{
??shares?=?_amount;
?}?else?{
??shares?=?(_amount.mul(totalSupply())).div(_pool);
Web3時尚和生活方式平臺Yoloyolo完成350萬美元種子輪融資,ParaFi Capital參投:金色財經報道,Web3 時尚和生活方式平臺 Yoloyolo 宣布完成 350 萬美元種子輪融資,ParaFi Capital、Mirana Ventures 和 Morningstar Ventures、Avalanche Ventures、UOB Ventures、Signum Capital、Genblock、Yolo Investments、以及軟銀愿景基金的 Neil Cunha-Gomes 和前幣安合伙人 Nicole Zhang 參投。Yoloyolo 是一個將 NFT 所有者與品牌聯系起來以銷售合作商品的新平臺, 把頂級 NFT 知識產權 (IP) 持有者與時尚和生活方式行業的品牌和創作者聯系起來,預計將于 2023 年 3 月推出 alpha 版。(coindesk)[2022/10/17 17:29:22]
?}
Web3憑證數據網絡Project Galaxy更名并品牌重塑為“Galxe”:金色財經消息,Web3憑證數據網絡Project Galaxy更名并品牌重塑為“Galxe”,旨在由單個項目向Web3生態演變,截至目前其Web3身份套件Galxe ID有420多萬用戶,可記錄Web3用戶的鏈上和鏈下足跡。[2022/9/6 13:12:15]
?_mint(user,?shares);
}
該函數的safeTransferFrom()方法從IERC20(token)調用,調用完該方法后,余額balance也會隨之變動,最后通過_mint()方法向用戶添加質押憑證代幣。其中調用的變量token可控,導致攻擊者可以自己實現safeTransferFrom()方法,將該方法重入到depositFor()發起攻擊。
以實施了5次重入攻擊為例,開始_pool的值為0,在重入depositFor方法的前四次里,攻擊者一直傳入自己鑄造的代幣,_pool的值會一直保持為0,但在第五次,也就是最后一次傳入100個受認可的代幣時,_after的值會變成100,而_afer-_pool的差值_amount也就是100,最后由于重入了5次,導致合約會向攻擊者鑄造100*5的質押憑證代幣。
其后果就是攻擊者向該合約質押自己鑄造不受認可的代幣,同樣會增加質押總量,最后利用多出來的質押憑證實現套利。
0x04:修復方案
1.由于depositFor()方法里的token可控才是導致這次攻擊事件的原因,因此只需要在傳遞參數的時候讓token不可控就行:
function?depositFor(?uint?_amount,address?user?)?public
2.由于套利的原因是depositFor()方法里存在修改代幣數量的函數,因此還可以將修改代幣的方法單獨實現,這樣即使token變量可控,也無法成功套利:
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
}
3.鎖定交易token:
function?setLPToken(address?lp)?public?onlyOwner?{
lpToken?=?lp;
}
function?depositFor(uint?_amount,address?user?)?public?{
uint256?_pool?=?balance();
IERC20(lpToken).safeTransferFrom(msg.sender,?address(this),?_amount);
earn();
......
}
0x05:總結
經過完整分析,知道創宇區塊鏈安全實驗室明確了該次攻擊事件的源頭并非網傳的閃電貸攻擊,攻擊者利用GrimBoostVault合約的depositFor方法參數可控,實施了重入攻擊,將自己的鑄造的無價值代幣兌換成了質押憑證,最后通過withdrawAll方法實現套利,而閃電貸?攻擊者只是利用閃電貸擴大了套利值。
對于合約代碼而言安全性是十分重要的,每一個未經驗證的傳入參數都可能導致巨大的經濟損失,開發者在編寫重要操作方法時,須記住零信任原則,謹慎對待每一個傳入參數。
來源:金色財經
Tags:RESTOKETOKENTOKnusharesvEmpire Game Token1inch TokenREG Token
作者:BitMEXResearch 編譯:0x137 今天我們抱著懷舊的心態,回顧一下比特幣和加密貨幣歷史上一些最特別、最滑稽,以及最有趣的時刻.
1900/1/1 0:00:00盡管由于海外假期的影響,頭條新聞似乎有所減少。但是我們還是在2021年的最后一個星期一為大家總結了過去一周體育產業中與Crypto領域相關的重要新聞.
1900/1/1 0:00:00原文標題:《Web3與社會資本》SocialCapital,社會資本,也翻譯為社交資本-是指個體或團體之間的關聯——社會網絡、互惠性規范和由此產生的信任.
1900/1/1 0:00:00《DoomHero》末日英雄是全球首款U3DSLG策略類區塊鏈游戲,由HeroicSwordStudio基于BSC公鏈開發,運用世界知名3D引擎UE4,精心制作三年研發而成.
1900/1/1 0:00:00去中心化自治組織迎來了突破性的一年,它從一種加密術語變成了主流意識,各種形形色色的DAO數量和籌集的資金數量激增,影響了人們日常工作、音樂、文化甚至金融的未來.
1900/1/1 0:00:00DeFi數據 1.DeFi代幣總市值:1523.40億美元DeFi總市值數據來源:Coingecko2.過去24小時去中心化交易所的交易量:56.
1900/1/1 0:00:00