慢霧科技:Cover 協議被黑簡要分析
12 月 29 日,由於受到黑客攻擊,Cover 協議代幣價格發生暴跌。
2020 年 12 月 29 日,据慢霧區情報 Cover 協議價格暴跌,以下是慢霧安全團隊對整個攻擊流程的簡要分析。
- 在 Cover 協議的 Blacksmith 合約中,用戶可以通過 deposit 函數抵押 BPT 代幣;
- 攻擊者在第一次進行 deposit - withdraw 後將通過 updatePool 函數來更新池子,並使用 accRewardsPerToken 來記錄累計獎勵;
- 之後將通過 _claimCoverRewards 函數來分配獎勵並使用 rewardWriteoff 參數進行記錄;
- 在攻擊者第一次 withdraw 後還留有一小部分的 BPT 進行抵押;
- 此時攻擊者將第二次進行 deposit,並通過 claimRewards 提取獎勵;
- 問題出在 rewardWriteoff 的具體計算,在攻擊者第二次進行 deposit - claimRewards 時取的 Pool 值定義為 memory,此時 memory 中獲取的 Pool 是攻擊者第一次 withdraw 進行 updatePool 時更新的值;
- 由於 memory 中獲取的 Pool 值是舊的,其對應記錄的 accRewardsPerToken 也是舊的會賦值到miner;
- 之後再進行新的一次 updatePool 時,由於攻擊者在第一次進行 withdraw 後池子中的 lpTotal 已經變小,所以最後獲得的 accRewardsPerToken 將變大 ;
- 此時攻擊者被賦值的 accRewardsPerToken 是舊的是一個較小值,在進行 rewardWriteoff 計算時獲得的值也將偏小,但攻擊者在進行 claimRewards 時用的卻是池子更新後的 accRewardsPerToken 值 ;
- 因此在進行具體獎勵計算時由於這個新舊參數之前差值,會導致計算出一個偏大的數值;
- 所以最後在根據計算結果給攻擊者鑄造獎勵時就會額外鑄造出更多的 COVER 代幣,導致 COVER 代幣增發。
具體 accRewardsPerToken 參數差值變化如下圖:
關聯標籤
鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
關聯標籤