0x01:前言
援引官方消息,北京時間12月19日,Fantom鏈上復合收益平臺GrimFinance遭遇了閃電貸攻擊。知道創宇區塊鏈安全實驗室第一時間對本次事件深入跟蹤并進行分析。
0x02:事件詳情
交易細節如下圖所示:
瀏覽上圖的交易過程可知,攻擊合約利用閃電貸借取代幣WFTM和BTC,將借取的代幣與自己鑄造的代幣質押到SpiritSwap里增加流動性獲取lp代幣,而問題就出現在攻擊者通過depositFor()實現質押的過程中。
通過Tenderly調試該筆交易,攻擊者多次遞歸調用depositFor函數,利用該函數獲取大量代幣:
加州監管機構:Maxpread Technologies和Harvest Keeper出售未經許可的證券并誤導投資者:金色財經報道,美國加州監管機構表示,Maxpread Technologies和Harvest Keeper出售未經許可的證券并誤導投資者,聲稱他們將通過使用人工智能交易加密貨幣來產生巨額回報。[2023/8/5 16:20:34]
0x03:漏洞分析
depositFor()函數位于的第1115行:
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
CoinDesk推出比特幣趨勢指標(BTI):4月13日消息,加密媒體 CoinDesk 宣布其子公司 CoinDesk Indices 推出比特幣趨勢指標(BTI),一個幫助投資者確定比特幣價格走向的在線工具。
CoinDesk 表示,BTI 是一個每日信號,通過專門構建的算法傳達比特幣價格趨勢的方向和強度。[2023/4/13 14:02:07]
?uint256?_pool?=?balance();
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
?earn();
?uint256?_after?=?balance();
?_amount?=?_after.sub(_pool);?//?Additional?check?for?deflationary?tokens
Bybit CEO宣布進行全面裁員:12月4日消息,加密貨幣交易所 Bybit 聯合創始人 Ben Zhou 發表內部信,表示將再次進行裁員,裁員比例為 30%,將涉及各個部門。Ben Zhou 表示,對于被裁員的員工將統一實行 N+3 的補償方案。[2022/12/4 21:21:15]
?uint256?shares?=?0;
?if?(totalSupply()?==?0)?{
??shares?=?_amount;
?}?else?{
??shares?=?(_amount.mul(totalSupply())).div(_pool);
?}
?_mint(user,?shares);
Otherside:計劃于7月18日部署其路線圖第一階段技術演示:7月15日消息,Yuga Labs元宇宙項目Otherside計劃于UTC時間7月17日下午4點(北京時間7月18日0時)部署Otherside路線圖第一階段的技術演示。
此次“First Trip”體驗將僅限Otherdeed地塊所有者(被稱為Voyagers)訪問,平臺將其描述為“慶祝即將到來的一切,并為Voyagers提供聚集、探索和規劃的機會”。
該公司表示,用戶可以參與活動,在專門為測試設計的游戲場地中導航,以及體驗“能夠行走、奔跑、跳躍和做出表情的3D高分辨率Voyager原型機”、“私人的代客直播”以及其他新穎功能。(Cointelegraph)[2022/7/15 2:16:28]
}
該函數的safeTransferFrom()方法從IERC20(token)調用,調用完該方法后,余額balance也會隨之變動,最后通過_mint()方法向用戶添加質押憑證代幣。其中調用的變量token可控,導致攻擊者可以自己實現safeTransferFrom()方法,將該方法重入到depositFor()發起攻擊。
港珠澳大橋發行“江海橋”和“西人工島”兩款3D數字藏品:金色財經報道,2022年6月29日,繼港珠澳大橋首款數字藏品成功發行后,為紀念香港回歸祖國25周年,港珠澳大橋再次發行“江海橋”和“西人工島”兩款3D數字藏品,每款發行一萬份,產品當日中午12點上線即告售罄。
港珠澳大橋數字藏品由港珠澳大橋管理局授權和監制,在螞蟻鯨探平臺上線發行。[2022/7/3 1:46:51]
以實施了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:TOKERESTOKTOKENMYDOG TokenMetaResetKKGame TokenVege Token
12月21日,IOS版1inch錢包發布更新,其中包含由NordBeaver工作室開發的DeFiRacer游戲.
1900/1/1 0:00:00大家好,我是團子,價值投資雖然不能保證我們穩步盈利,但價值投資給我們提供了走向真正成功的唯一機會。眼睛僅盯在自己小口袋的是小商人,眼光放在世界大市場的是大商人.
1900/1/1 0:00:00作為近期科技領域里最熱門的話題,元宇宙的存在讓無數公司有了吹噓自己的技術儲備和技術布局的機會,在AMD、英偉達等半導體領域的巨頭陸續宣布與元宇宙有關的消息,并且帶動股價暴漲后.
1900/1/1 0:00:00DeFi數據 1.DeFi代幣總市值:1529.05億美元DeFi總市值數據來源:Coingecko2.過去24小時去中心化交易所的交易量:52.
1900/1/1 0:00:00撰文:Footprint分析師Alina 日期:2021年12月 Ethereum當下是毫無爭議的公鏈之王,但其交易的擁堵以及交易費率高的問題,也讓用戶困擾許久,擴容呼聲大增.
1900/1/1 0:00:00感謝大家關注三元社區最新一期的AMA,今晚我們有幸請來GlenBullenThankyouforyourFollowingourlatestAMA.MynameisSunnyandIwillbe.
1900/1/1 0:00:00