一次由存儲狀態引發的慘案 Cover協議被黑簡要分析

慢霧科技/2021-01-08/ 分類:技術/閱讀:
By :??Kong@慢霧安全團隊據慢霧區情報,2020 年 12 月 29 日,Cover 協議價格暴跌。慢霧安全團隊第一時間跟進相關事件并進行分析,以下為分 ...

By :??Kong@慢霧安全團隊

據慢霧區情報,2020 年 12 月 29 日,Cover 協議價格暴跌。慢霧安全團隊第一時間跟進相關事件并進行分析,以下為分析簡略過程。

攻擊流程簡析

1、在 Cover 協議的 Blacksmith 合約中,用戶可以通過 deposit 函數抵押 BPT 代幣;

2、攻擊者在第一次進行 deposit - withdraw 后將通過 updatePool 函數來更新池子,并使用 accRewardsPerToken 來記錄累計獎勵;

3、之后將通過 _claimCoverRewards 函數來分配獎勵并使用 rewardWriteoff 參數進行記錄;

4、在攻擊者第一次 withdraw 后還留有一小部分的 BPT 進行抵押;

5、此時攻擊者將第二次進行 deposit,并通過 claimRewards 提取獎勵;

6、問題出在 rewardWriteoff 的具體計算,在攻擊者第二次進行 deposit - claimRewards 時取的 Pool 值定義為 memory,此時 memory 中獲取的 Pool 是攻擊者第一次 withdraw 進行 updatePool 時更新的值;

7、由于 memory 中獲取的 Pool 值是舊的,其對應記錄的 accRewardsPerToken 也是舊的會賦值到miner;

8、之后再進行新的一次 updatePool 時,由于攻擊者在第一次進行 withdraw 后池子中的 lpTotal 已經變小,所以最后獲得的 accRewardsPerToken 將變大;

9、此時攻擊者被賦值的 accRewardsPerToken 是舊的是一個較小值,在進行 rewardWriteoff 計算時獲得的值也將偏小,但攻擊者在進行 claimRewards 時用的卻是池子更新后的 accRewardsPerToken 值;

10、因此在進行具體獎勵計算時由于這個新舊參數之前差值,會導致計算出一個偏大的數值;

11、所以最后在根據計算結果給攻擊者鑄造獎勵時就會額外鑄造出更多的 COVER 代幣,導致 COVER 代幣增發。

具體 accRewardsPerToken 參數差值變化如下圖:

閱讀:

熱門文章

HOT NEWS
  • 周榜
  • 月榜
長按圖片轉發給朋友
世鏈財經_區塊鏈_比特幣BTC_IPFS礦機挖礦_交易所平臺
  • 商務合作微信:juu3644
  • 世鏈粉絲群微信:qia3867
  • 新聞爆料微信:zefmk896
  • 微信二維碼
    Copyright 2018-2021       版權所有       粵ICP備20059285號
    二維碼
    意見反饋 二維碼
    ***码中文在线观看_色综合网熟女性国产_九九热线在线精品视频_中文字幕久精品视频在线观看