Alkimiya是一個將區塊鏈區塊空間資源(如交易費用)轉化為可交易資產的協議。它使用智慧合約建立點對點市場,幫助穩定費用、改善價格發現並最佳化跨區塊鏈的資源使用。
在2025年3月28日,Alkimiya遭受攻擊,損失約95.5K美元。根本原因是使用者存入抵押品時,鑄幣計算中存在不安全的整數轉換。
感謝閱讀!免費訂閱以接收新帖子並支援我的工作。
概述
分析
攻擊從Morpho借出10個WBTC的閃電貸開始(第5行)。攻擊者隨後嘗試使用SilicaPools.collateralizedMint()鑄造恰好2^128 + 1個份額,提供約1.7個WBTC作為抵押品(綠色框)。
SilicaPools使用完整的256位shares
引數為攻擊者鑄造了恰好2^128 + 1份額。然而,由於第837行存在不安全的轉換,僅記錄了1份額。這一缺陷是攻擊的根本原因。
參考圖1,攻擊者將2^128 - 1份額轉移到另一個地址(黃色框),在合約中僅保留2份額。最後,他們呼叫SilicaPools.redeemShort()提取抵押品。
由於sState.sharesMinted
被錯誤地設定為1,而攻擊者的合約持有2份額,SilicaPools錯誤地返回了約3.4個WBTC,是原始存款的兩倍。
結論
最佳化gas效率是有益的,但前提是程式碼保持正確。在這種情況下,節省的gas與該bug造成的損失相比微不足道。儘管經過多次審計,這一缺陷仍未被發現,最終導致實際攻擊。為了防止此類問題,我們強烈建議從一開始就實施嚴格的安全措施,並在專案生命週期中始終如此。定期審計、程式碼審查和漏洞評估應成為標準做法,以識別和緩解可能被利用的風險。
感謝閱讀!免費訂閱以接收新帖子並支援我的工作。