0x01:前言
援引官方消息,北京時間12月19日,Fantom鏈上復合收益平臺GrimFinance遭遇了閃電貸攻擊。知道創宇區塊鏈安全實驗室第一時間對本次事件深入跟蹤并進行分析。
0x02:事件詳情
交易細節如下圖所示:
瀏覽上圖的交易過程可知,攻擊合約利用閃電貸借取代幣WFTM和BTC,將借取的代幣與自己鑄造的代幣質押到SpiritSwap里增加流動性獲取lp代幣,而問題就出現在攻擊者通過depositFor()實現質押的過程中。
通過Tenderly調試該筆交易,攻擊者多次遞歸調用depositFor函數,利用該函數獲取大量代幣:
Klaytn和日本金融科技公司SORAMITSU開發的開源DEX完成公測,向公眾開放:2月2日消息,韓國區塊鏈平臺Klaytn宣布與日本金融科技公司SORAMITSU開發的全棧開源DEX基礎設施已完成公開測試,目前測試中的問題已得到改進并可供公眾使用。[2023/2/2 11:43:41]
0x03:漏洞分析
depositFor()函數位于的第1115行:
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
?uint256?_pool?=?balance();
巴西最大的銀行之一 Itaú Unibanco 將推出加密貨幣托管產品:金色財經報道,巴西最大的銀行之一 Itaú Unibanco 將于 2023 年第二季度推出加密貨幣托管產品,旗下 Itaú Digital Assets 將負責該解決方案的技術研發。Crypto.com 前巴西機構副總裁 José Augusto Antunes 將領導該業務。該服務最初將面向銀行客戶,未來會將服務拓展至第三方,提供解決方案。[2022/11/22 7:53:53]
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
?earn();
?uint256?_after?=?balance();
前FBI特工和網絡安全專家John Caruthers宣布擔任2022年EITL虛擬論壇的主旨發言人:金色財經報道,前FBI特工和網絡安全專家John Caruthers宣布擔任2022年EITL虛擬論壇的主旨發言人,EITL虛擬論壇于2022年9月7日至8日開始,發布行業主題包括,加密貨幣法規、觀點和趨勢、網絡安全和保險、在監管環境中管理人工智能和相關風險等主題。[2022/8/10 12:16:11]
?_amount?=?_after.sub(_pool);?//?Additional?check?for?deflationary?tokens
?uint256?shares?=?0;
?if?(totalSupply()?==?0)?{
??shares?=?_amount;
重慶首個數字人民幣示范村揭牌:金色財經消息,近日,中國郵政儲蓄銀行重慶分行在巫山縣巫峽鎮平安村舉行數字人民幣示范村揭牌儀式。平安村是重慶首個數字人民幣示范村,以人民銀行巫山縣支行為指導單位。(央廣網)[2022/6/1 3:55:37]
?}?else?{
??shares?=?(_amount.mul(totalSupply())).div(_pool);
?}
?_mint(user,?shares);
}
該函數的safeTransferFrom()方法從IERC20(token)調用,調用完該方法后,余額balance也會隨之變動,最后通過_mint()方法向用戶添加質押憑證代幣。其中調用的變量token可控,導致攻擊者可以自己實現safeTransferFrom()方法,將該方法重入到depositFor()發起攻擊。
Coinbase聯合創始人Fred Ehrsam買入7500萬美元的公司股票:金色財經消息,根據向美國證券交易所(SEC)提交的Form4文件,Coinbase聯合創始人Fred Ehrsam過去一周購買了超過100萬股Coinbase(COIN),價值約7500萬美元。Ehrsam目前是Coinbase的董事會成員,買入是通過風險投資公司Paradigm進行的,Ehrsam是該公司的聯合創始人和管理合伙人。
文件顯示,Ehrsam通過Paradigm于5月13日以每股約70美元的平均價格購買了超過706,000股Coinbase股票,價值近5000萬美元。隨后在5月17日以每股約65美元的平均價格購買了385,000股股票,價值約2500萬美元。此次購入使Paradigm持有超過360萬股Coinbase股票,Ehrsam還通過信托持有110萬股Coinbase股票。(CoinDesk)[2022/5/21 3:32:14]
以實施了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:FORRESKENTOKFORGEFRES幣Cryptocurrency Top 10 Tokens IndexKeys Token
一:項目名字:AgoricJavaScript智能合約 二:項目介紹: 關于Agoric Agoric是一家開源開發公司,推出了可互操作的權益證明鏈和經濟.
1900/1/1 0:00:00孫宇晨就贏得貝索斯藍色起源太空之旅的公開信各位波場人,關心波場發展的朋友:我很高興地向大家宣布,我在今年六月份以創紀錄的兩千八百萬美金成功贏得世界首富貝索斯的藍色起源太空之旅,我將于2022年.
1900/1/1 0:00:00整理|Felix 火星編輯時刻 《加密資管公司Arca:2022年的五大發展趨勢與九大投資主題》2022年的宏觀格局將喜憂參半,但最終,數字資產的發展仍將得到支持。首先,通脹壓力可能會消退.
1900/1/1 0:00:00“元宇宙”最近特別火,從國外火到國內,從理論界到各垂直領域,從資本到科技界一概如此。旅游行業包括大住宿業也開始關注這個新物種,大多數迷茫外,不屑一顧者有之,斥之為“噱頭”甚至“騙局”者也有之.
1900/1/1 0:00:00|羅Sir說原創出品?|和新加坡著名歌手林俊杰做鄰居,在現實中很難,在元宇宙中卻容易得多。2021年11月23日,林俊杰在Twitter上展示了他購買的三個虛擬地塊,共花費約12.3萬美元.
1900/1/1 0:00:0012月22日,備受業界關注的鏈游新星---FANTASYFARMFI全球社區運營發布會在騰訊會議平臺召開,來自全球各地的忠實玩家群體及鏈游愛好者齊聚線上會議現場.
1900/1/1 0:00:00