背景介紹
我們監控到 ethereum 鏈上的一起攻擊事件:https://etherscan.io/tx/0x725f0d65340c859e0f64e72ca8260220c526c3e0ccde530004160809f6177940
攻擊者通過此次攻擊共獲利 649.6 WETH,共約合 170 萬美金。被攻擊項目為 Bedrock , Bedrock 是一個多資產流動性重新抵押協議,由與 RockX 合作設計的非托管解決方案支持。Bedrock 支持多種資產進行重新抵押/抵押,包括:uniBTC:一種全新的重新抵押協議,接受包裝的 BTC 代幣,與 BTC 抵押協議 Babylon Chain 合作,首個支持的包裝 BTC 是以太坊區塊鏈上的 wBTC 代幣,因此所有 wBTC 代幣持有者將同時享受抵押 BTC 代幣的收益和以太坊網絡的安全性。uniETH:設計用于本地重新抵押并獲得額外的 EigenLayer 獎勵,Bedrock 將機構級別的安全性和額外的收益結合在一起,用于流動抵押 ETH 。uniIOTX:IoTeX 區塊鏈上的流動抵押解決方案消除了在 IOTX 上的委托權益證明中存在的若干缺點。
攻擊及事件分析
首先,攻擊者通過 Balancer 借貸了 30.8 WETH,

接著,攻擊者調用了 Bedrock Vault 的 mint 函數,并轉入通過 flashloan 借到的 30.8 ETH 。

我們看一下 mint 函數的邏輯,如下圖,調用了 _mint 函數,

隨后,我們看一下 _mint 函數的邏輯,

然后,通過函數 _amounts 計算出需要 mint 給 msg.sender 的 uniBTC 的數量。

其中 _amount 為轉入 WETH 的數量,且 EXCHANGE_RATE_BASE 為 1e10 ,所以兌換的比例為 1 : 1e8(因為 uniBTC 的 decimal 為 1e8 ,所以兌換比例為 1 ETH : 1 uniBTC )。隨后攻擊者通過 uniswap 將 30.8 uniBTC 換成 27.8 WBTC ,兌換比例約為 1 : 1,最后攻擊者將兌換到的 27.8 WBTC 通過 uniswap 兌換為 680.4 WETH ,其中還了 30.8 WETH 的借貸。因此,攻擊者最終獲利 649.6 WETH ,約合 1.7 M USD 。
總結
本次漏洞的成因是沒有處理好 WETH 和 uniBTC 的兌換比例,導致 WETH 和 uniBTC 可以以 1 : 1 兌換,WETH 的價值被放大了數萬倍。攻擊者利用失真的價格來通過借貸進行獲利,最終導致攻擊者用借貸來的 WETH 掏空了項目方的 uniBTC 代幣。
以上就是1 ETH : 1 uniBTC?Bedrock uniBTC 攻擊事件分析的詳細內容
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。



