慢霧:Akutars拍賣合約多個代碼缺陷導致11539.5枚ETH永久無法取出
區塊鏈4年前 (2022-04-23)141
據慢霧區情報,Akutars(@AkuDreams) 項目拍賣合約由于多個代碼缺陷導致 11,539.5 枚 ETH 永久無法取出。慢霧安全團隊進行分析如下:1. Akutars 拍賣合約中存在 bid 與 processRefunds 功能,用戶分別可以進行拍賣出價與退款操作;2. 在拍賣結束后發起 processRefunds 退款操作時拍賣合約將遍歷出...
據慢霧區情報,Akutars(@AkuDreams) 項目拍賣合約由于多個代碼缺陷導致 11,539.5 枚 ETH 永久無法取出。慢霧安全團隊進行分析如下:1. Akutars 拍賣合約中存在 bid 與 processRefunds 功能,用戶分別可以進行拍賣出價與退款操作;2. 在拍賣結束后發起 processRefunds 退款操作時拍賣合約將遍歷出價用戶,并通過低級調用 call 為用戶進行退款,但并未限制這一調用的 gasLimit。而未做此 gasLimit 限制的情況下,拍賣合約將使用發起者的全部 gas 進行外部調用;3. 但由于 Akutars 拍賣合約并不限制合約參與拍賣,因此“惡意用戶”可以使用合約參與拍賣,并在其合約的接收以太函數中寫入惡意消耗 gas 的邏輯,使得在進行退款流程時觸發此用戶合約,進而惡意消耗了調用發起者的全部 gas,直接導致后續退款無法正常進行;4. 幸運的是此“惡意用戶”僅僅只是做了風險驗證測試,最終解除了惡意消耗 gas 的邏輯使得退款可以繼續順利進行。當然用戶也可以在拍賣結束的 3 天后進行緊急退款;5. 在用戶退款完成后項目方可以通過 claimProjectFunds 功能提取合約中的拍賣所得。但拍賣合約在用戶進行 bid 時使用 totalBids 與 bidIndex 記錄用戶所拍的數量與出價次數,而用戶是可以在一次出價中任意選擇所拍的數量的,因此在拍賣結束 totalBids 實際上大于 bidIndex。當前 totalBids 為 5495,bidIndex 僅為 3669;6. 但在 claimProjectFunds 函數中卻要求 refundProgress 退款數必須大于等于 totalBids,項目方本意應是為了保證全部用戶完成退款后才可進行取款。而實際上 refundProgress 是根據出價人總數進行計算的,也就是全部退款完成 refundProgress 也只是會等于 bidIndex。這就出現了 refundProgress 永遠不會大于 totalBids 的情況。最終導致合約中 11,539.5 枚 ETH 永遠無法取出;綜上,即使在用戶無法退款問題被解決的情況下,由于出價人數與拍賣數量的計數不一致以及項目方取款函數的缺陷,最終都會導致 Akutars 資金被永久鎖住的結果。
相关文章
Immutable X發布與其兼容的Cairo智能合約以幫助在StarkNet上的項目開發
Immutable X推出可跨多個L2/L3zk-rollup的流動性解決方案cross-rollup
基于Armonia公鏈智能合約開發的去中心化CTC平臺Meta Balance正式開放
以太坊共識層(原ETH2) 合約地址余額突破1263萬枚ETH
歐易OKX將于明日上線合約冷靜期功能
以太坊智能合約編程語言Solidity發布v0.8.14版本,修復兩個重要漏洞
PeckShield:Moonbirds等多個NFT項目的Discord疑似遭遇攻擊
Fantom基金會:正在敲定fUSD清算代碼庫,目前處于審計中
以太坊智能合約自動執行工具 Gelato Network 推出多鏈交易 API Gelato Relay
永續合約協議Drift Protocol公布結算和贖回計劃
以太坊共識層(原ETH2) 合約地址余額突破1259萬枚ETH
道氏理论的缺陷
道氏定理三:理论自身缺陷性定理
Etherscan、CoinGecko等多個加密數據網站報告惡意彈出事件,提醒用戶不要確認任何交易
Binance宣布下架LUNA USDT本位永續合約
Binance發布LUNA U本位永續合約風險預防措施調整公告
加密貨幣交易所Bybit疑似已下架LUNA所有相關永續合約報價
Azuki創始人:將把3個失敗項目的合約完全控制權移交給社區
Azuki創始人:會和CryptoZunks社區聯系協商是否將合約交換社區
Nansen CEO:自實施EIP-1559以來,部署到主網的以太坊合約數量大幅下降





