DeFi 協議 Akropolis 重入攻擊簡析

11 月 13 日, 據  CoinDesk 訊息,Akropolis 協議遭受駭客攻擊,損失約 200 萬 DAI,慢霧安全團隊已於當天第一時間介入分析,並將結論同步給了相關關心方。以下為慢霧安全團隊對此事件的簡要分析,供大家參考。

背景提要

Akropolis 是執行在以太坊上的借貸和存款協議,使用者可以使用 Akropolis 進行借貸或在 Akropolis 存款收取借貸利息。

攻擊流程簡析

1. 攻擊者使用自己建立的 token 進行 deposit,此時 Akropolis 合約會先記錄一次合約中所有代幣的總量;

2. Akropolis 合約呼叫使用者自己建立的 token 的 transferFrom 函式的時候,攻擊者在 transferFrom 函式中重入 Akropolis 合約的 deposit 函式,並轉入 DAI 到 Akropolis 合約中;

3. 此時在重入的交易中,由於 Akropolis 合約會先獲取合約中所有代幣的總量,這個值和第一次呼叫 deposit 函式獲取的合約代幣總量的值一致;

4. Akropolis 合約計算充值前後合約中代幣總量的差值,攻擊者在充值 DAI 後,會得到一定量的 Delphi token,獲得 token 的數量就是充值 DAI 的數量;

5. 鑄幣完成後,流程回到第一次 deposit 往下繼續執行,這時合約會再次獲取合約中所有代幣的總量,這時由於在重入交易時,攻擊者已經轉入一定量的 DAI,所以得到的代幣總餘額就是攻擊者在重入交易完成後的代幣總餘額;

6. 此時合約再次計算差值,由於第一次 deposit 的時候合約中所有代幣的總量已經儲存,此時計算出來的差值和重入交易中計算的差值一致,Akropolis 合約再次鑄幣給攻擊者。

總結

攻擊者使用自己構造的 token,對 Akropolis 合約的 deposit 函式進行重入,導致 Akropolis 合約使用相同的差值鑄幣了兩次,但是隻觸發了一次轉賬,當攻擊者提現的時候,就可以提兩倍的收益,從而獲利。

相關連結:

(1) CoinDesk 關於 Akropolis 合約被攻擊的報道:
https://www.coindesk.com/defi-project-akropolis-token-pool-drained

(2) 分析樣本:
https://etherscan.io/tx/0x3db8d4618aa3b97eeb3af01f01692897d14f2da090d5d6407f550a1b10c15133

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读