慢霧:Cream Finance 被黑簡要分析 - 冷萃財經

慢霧:Cream Finance 被黑簡要分析

慢霧:Cream Finance 被黑簡要分析

慢霧:Cream Finance 被黑簡要分析

2021 年 08 月 30 日,據慢霧區消息,DeFi 抵押借貸平台 Cream Finance 遭受閃電貸攻擊,損失約 1800 萬美元。慢霧安全團隊第一時間介入分析,並將簡要分析結果分享如下:

攻擊流程

1. 攻擊者從 Uniswap 閃電貸借出 500 ETH;

2. 將 500 ETH 抵押到 crETH 合約中,獲得 crETH 憑證;

3. 從 crAMP 合約借出 19,480,000 AMP;

-> 借貸時,cToken 合約會先通過 doTransferOut 函數將 AMP 代幣轉移給攻擊者,再記錄攻擊者的借貸數量到 accountBorrows 中;

-> 但 AMP 代幣的 transfer 函數會通過鉤子 (_callPostTransferHooks) 函數回調攻擊者合約的 tokensReceived 函數;

-> 攻擊者合約在 tokensReceived 函數中再次調用了 crETH 合約,借出 355 個 ETH;

-> 由於第一次借貸的合約是 crAMP 合約,第二次重入調用借貸的是 crETH 合約,所以 borrow 函數的防重入修飾器 (nonReentrant) 不起作用;

-> 並且 borrow 函數是在給用戶轉賬後再修改的借貸記錄 (accountBorrows),導致攻擊者可以進行超額借貸;

4. 隨後攻擊者使用另外一個合約 (0x0ec3) 對已經爆倉的合約 (0x38c4) 進行清算,使得不會因為超額借貸而導致交易失敗;

5. 之後攻擊合約 (0x38c4) 將 crETH 憑證轉給 0x0ec3 合約,0x0ec3 合約使用這些憑證贖回了約 187.58 個 ETH;

6. 最後在這筆交易中攻擊者獲得了約 542.58(187.58 + 355) 個 ETH 與 9,740,000 個 AMP 代幣;

7. 最後攻擊者歸還閃電貸,獲利走人。其他攻擊交易類似。

總結

本次攻擊是由於 Cream 借貸模型與 AMP 代幣不兼容導致的。由於 AMP 代幣轉賬時會使用鉤子函數回調目標地址,且 Cream cToken 合約是在借貸轉賬後才記錄借貸數量,最終造成了超額借貸的問題。

參考攻擊交易:

冷萃財經原創,作者:awing,轉載請註明出處:https://www.lccjd.top/2021/08/30/%e6%85%a2%e9%9b%be%ef%bc%9acream-finance-%e8%a2%ab%e9%bb%91%e7%ae%80%e8%a6%81%e5%88%86%e6%9e%90/?variant=zh-tw

0

掃一掃,分享到微信

猜你喜歡

文章評論

電子郵件地址不會被公開。 必填項已用*標註

後發表評論

    上一篇

    數據洞察:NFT市場再度爆發,整體活躍度上升

    下一篇

    為NFT打造以太坊Layer 2,讀懂即將上線Coinlist的Immutable X

    微信公眾號

    微信公眾號