0x01:前言
援引官方消息,北京時間12月19日,Fantom鏈上復合收益平臺GrimFinance遭遇了閃電貸攻擊。知道創宇區塊鏈安全實驗室第一時間對本次事件深入跟蹤并進行分析。
0x02:事件詳情
交易細節如下圖所示:
瀏覽上圖的交易過程可知,攻擊合約利用閃電貸借取代幣WFTM和BTC,將借取的代幣與自己鑄造的代幣質押到SpiritSwap里增加流動性獲取lp代幣,而問題就出現在攻擊者通過depositFor()實現質押的過程中。
通過Tenderly調試該筆交易,攻擊者多次遞歸調用depositFor函數,利用該函數獲取大量代幣:
巨鯨0x5a80在過去24小時增持逾25萬枚AAVE,約合1720萬美元:金色財經報道,據Lookonchain監測,巨鯨0x5a80在過去24小時增持257,147枚AAVE(約1720萬美元),當前總計持有474,579枚AAVE(約3180萬美元)。當該巨鯨在10小時前停止買入時,AAVE價格開始下跌。[2023/6/26 22:00:11]
0x03:漏洞分析
depositFor()函數位于的第1115行:
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
歐洲央行Fabio Panetta:加密貨幣已成為投機資產,以及規避資本管制的手段:金色財經報道,歐洲中央銀行(ECB)董事會成員Fabio Panetta在第22屆國際清算銀行年會上關于加密貨幣未來的小組上表示,加密貨幣的核心承諾是用技術取代信任,認為“代碼就是法律”的概念將允許自我監管系統的出現,不受人為判斷和錯誤的影響。這反過來又使得貨幣和金融可以在沒有可信中介的情況下運作。然而,這種敘述常常混淆現實。無支持的加密貨幣并沒有侵入貨幣的傳統角色。他們逐漸偏離了最初的去中心化目標,轉而越來越依賴中心化的解決方案和市場結構。它們已成為投機資產,以及規避資本管制、制裁或金融監管的手段。[2023/6/25 21:58:23]
?uint256?_pool?=?balance();
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
Meta因向美國傳輸數據被歐盟監管機構罰款13億美元:5月22日消息,據知情人士透露,歐盟隱私監管機構因Meta Platforms(FB.O)向美國發送用戶信息而對其處以13億美元的罰款,創下了歐盟罰款的最高紀錄。這項裁決預計將于周一晚些時候宣布,它將給美國政府帶來壓力,使其無法敲定一項協議,該協議允許Meta和數千家跨國公司繼續向美國境內發送此類信息。(華爾街日報)[2023/5/22 15:19:02]
?earn();
?uint256?_after?=?balance();
?_amount?=?_after.sub(_pool);?//?Additional?check?for?deflationary?tokens
?uint256?shares?=?0;
8月比特幣挖礦總收入6.38億美元,環比上升6%:金色財經消息,據The Block Research數據,8月比特幣挖礦總收入為6.38億美元,較7月份的5.97億美元上升6%。[2022/9/1 13:02:29]
?if?(totalSupply()?==?0)?{
??shares?=?_amount;
?}?else?{
??shares?=?(_amount.mul(totalSupply())).div(_pool);
?}
?_mint(user,?shares);
}
該函數的safeTransferFrom()方法從IERC20(token)調用,調用完該方法后,余額balance也會隨之變動,最后通過_mint()方法向用戶添加質押憑證代幣。其中調用的變量token可控,導致攻擊者可以自己實現safeTransferFrom()方法,將該方法重入到depositFor()發起攻擊。
以太坊經典(ETC)全網算力突破40TH/s,創歷史新高:金色財經報道,據2Miners數據顯示,以太坊經典(ETC)全網算力已突破40TH/s,截至目前達到42.01TH/s,創歷史新高。[2022/8/22 12:39:26]
以實施了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:RESTOKETOKENKENPRESIDENTDOGE幣MyTokenimtoken蘋果下載教程SMUDGE TOKEN
作者:BitMEXResearch 編譯:0x137 今天我們抱著懷舊的心態,回顧一下比特幣和加密貨幣歷史上一些最特別、最滑稽,以及最有趣的時刻.
1900/1/1 0:00:0012月22日,UniswapV3流動性管理協議VisorFinance再次遭受黑客攻擊,黑客借助漏洞提取了超過880萬個VISR并在Uniswap上賣出,導致VISR代幣暴跌近95%.
1900/1/1 0:00:0012月24日,圣誕節來臨之際,虎符重磅開啟“圣誕狂歡沒禮不行”系列活動。據虎符公告顯示,“圣誕狂歡沒禮不行”系列活動將于2021年12月24日15:00正式開始,總獎勵為等值66,666USDT.
1900/1/1 0:00:0011月29日開始舉行的印度冬季會議已經在12月23日結束。然而,期待已久的印度Crypto法案并沒有得到第二次討論.
1900/1/1 0:00:00作者:鄭冉 11月21日,三箭資本創始人SuZhu在推特上發表關于“以太坊放棄用戶”的言論,引發以太坊鐵桿支持者的反擊,后又加倉?ETH,在加密圈引起了不小的波瀾.
1900/1/1 0:00:00整理|Felix 火星編輯時刻 《加密資管公司Arca:2022年的五大發展趨勢與九大投資主題》2022年的宏觀格局將喜憂參半,但最終,數字資產的發展仍將得到支持。首先,通脹壓力可能會消退.
1900/1/1 0:00:00