0x01:前言
援引官方消息,北京時間12月19日,Fantom鏈上復合收益平臺GrimFinance遭遇了閃電貸攻擊。知道創宇區塊鏈安全實驗室第一時間對本次事件深入跟蹤并進行分析。
0x02:事件詳情
交易細節如下圖所示:
瀏覽上圖的交易過程可知,攻擊合約利用閃電貸借取代幣WFTM和BTC,將借取的代幣與自己鑄造的代幣質押到SpiritSwap里增加流動性獲取lp代幣,而問題就出現在攻擊者通過depositFor()實現質押的過程中。
通過Tenderly調試該筆交易,攻擊者多次遞歸調用depositFor函數,利用該函數獲取大量代幣:
被Bscscan標記為“NimbusPlatform Exploiter 2”的黑地址已將資金轉至Tornado Cash:金色財經消息,據CertiK監測,被Bscscan標記為“NimbusPlatform Exploiter 2”的黑地址0x9D3B5…已將資金轉至Tornado Cash。截至目前,NimbusPlatform攻擊者已經轉移278枚BNB(約9.1萬美元)。[2023/3/17 13:09:48]
0x03:漏洞分析
depositFor()函數位于的第1115行:
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
ChainUp Group任命金融壹賬通前國際CEO為其副CEO兼COO:金色財經報道,全球區塊鏈技術解決方案提供商ChainUp Group今天宣布任命Tan Bin Ru女士為副首席執行官兼首席運營官,自2023年1月3日起生效。
在此任命之前,Tan女士是金融壹賬通的首席執行官(國際),金融壹賬通是平安集團的聯營公司,為金融機構提供技術即服務。在她的職位上,她負責將金融壹賬通的金融科技解決方案擴展到中國以外的地區。[2023/1/3 22:22:54]
?uint256?_pool?=?balance();
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
?earn();
Yuga Labs、Moonpay在名人NFT代言訴訟中被點名:金色財經報道,一家加利福尼亞律師事務所對近 40 人和公司提起集體訴訟,其中包括 Yuga Labs 和 MoonPay。聲稱他們利用名人誤導性地推廣和銷售其 NFT。[2022/12/10 21:35:35]
?uint256?_after?=?balance();
?_amount?=?_after.sub(_pool);?//?Additional?check?for?deflationary?tokens
?uint256?shares?=?0;
?if?(totalSupply()?==?0)?{
??shares?=?_amount;
?}?else?{
南非數字銀行Be Mobile允許企業接受加密貨幣支付:金色財經報道,Bitcoin Archive發推特表示,南非數字銀行Be Mobile現在允許企業接受加密貨幣支付業務。[2022/12/7 21:27:06]
??shares?=?(_amount.mul(totalSupply())).div(_pool);
?}
?_mint(user,?shares);
}
該函數的safeTransferFrom()方法從IERC20(token)調用,調用完該方法后,余額balance也會隨之變動,最后通過_mint()方法向用戶添加質押憑證代幣。其中調用的變量token可控,導致攻擊者可以自己實現safeTransferFrom()方法,將該方法重入到depositFor()發起攻擊。
Star Apple宣布投資CTBIT加密貨幣交易所:金色財經報道,DAO Star Apple Labs Limited宣布發行 MNA 代幣。并投資土耳其的加密貨幣交易所CTBIT。這些代幣是基于區塊鏈技術創建的,旨在解決并購市場的非理性和低效率。人們意識到并購市場不斷增長的潛力。然而,伴隨增長而來的是風險,使并購交易的效率和成功率最小化。Star Apple 的一位官方代表表示:我們很高興進入加密貨幣交易市場。我們希望在所有并購交易中實現 100% 的透明度、減少信任問題并降低成本。創建 MNA Token 是為了幫助公司進行簡單的并購流程。我們的愿景是通過創建健康的加密貨幣生態系統成為全球交易所。
創作者聲稱,首先,MNA 代幣將用于企業并購,但未來的目標也是未來將債券、藝術品、房地產、版權和專利代幣化,從企業并購開始。[2022/7/30 2:46:46]
以實施了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:FORTOKENKENTOKEFORTEDreamr Platform TokenDO TokenKOALA TOKEN
頭條 ▌休眠近9年的比特幣錢包被激活金色財經報道,WhaleAlert發推表示,一個休眠的比特幣錢包被激活。它自2013年以來一直沒有活動過,該錢包包含321個比特幣.
1900/1/1 0:00:00互助共享時代正熱門,全球百大公司Uber,Grab,Airbnb等企業,皆借互助共享方式,發展公司企業,在未來互聯網技術勢必更加成熟,人與人之間距離更加接近.
1900/1/1 0:00:002021年,DeFi領域依舊火爆,同時也帶領新的領域向前延展,最成功的產品就是去中心化交易所。近日,波場TRON全力打造的去中心化交易所SunSwap又出新進展.
1900/1/1 0:00:00什么是DAO? DAO通常被認為是某公司或實體組織的一種去中心化形式。雖然從公司或實體組織的層面去理解DAO更具商業和現實意義,但我們需要明確DAO并非某個具體的組織實體,而是一種通用的組織形式.
1900/1/1 0:00:00原文作者:O''Reilly創始人TimO’Reilly最近有很多關于Web3的討論,作為在17年前定義“Web2.0”的人,我經常被要求發表關于Web3的評論.
1900/1/1 0:00:00根據美國國會法律圖書館全球法律研究局發布的一份報告,全世界共有51個國家對加密貨幣行業下了禁令。該報告最初是在2018年發布的,但在今年11月又更新了數據.
1900/1/1 0:00:00