慢雾科技:Coverプロトコルのハッキングに関する簡単な分析
Summary:
12月29日、ハッカー攻撃を受けて、Coverプロトコルのトークン価格が暴落しました。
2020年12月29日、Slow Mistの情報によると、Coverプロトコルの価格が暴落しました。以下は、Slow Mistセキュリティチームによる攻撃プロセスの簡単な分析です。
- CoverプロトコルのBlacksmithコントラクトでは、ユーザーはdeposit関数を通じてBPTトークンを担保に入れることができます;
- 攻撃者は最初のdeposit - withdrawの後、updatePool関数を使用してプールを更新し、accRewardsPerTokenを使用して累積報酬を記録します;
- その後、_claimCoverRewards関数を通じて報酬を配分し、rewardWriteoffパラメータを使用して記録します;
- 攻撃者は最初のwithdrawの後に少量のBPTを担保として残します;
- この時、攻撃者は2回目のdepositを行い、claimRewardsを通じて報酬を引き出します;
- 問題はrewardWriteoffの具体的な計算にあります。攻撃者が2回目のdeposit - claimRewardsを行う際に取得するプール値はmemoryとして定義され、この時memoryに取得されるプールは攻撃者が最初のwithdrawでupdatePoolを行った際に更新された値です;
- memoryに取得されるプール値が古いため、それに対応するaccRewardsPerTokenの記録も古く、minerに代入されます;
- その後、新たにupdatePoolを行う際、攻撃者が最初にwithdrawした後にプール内のlpTotalが減少しているため、最終的に得られるaccRewardsPerTokenは大きくなります;
- この時、攻撃者に代入されるaccRewardsPerTokenは古いものであり、比較的小さな値です。rewardWriteoffの計算時に得られる値も小さくなりますが、攻撃者がclaimRewardsを行う際に使用するのはプール更新後のaccRewardsPerTokenの値です;
- したがって、具体的な報酬計算を行う際にこの新旧パラメータの差異により、大きな数値が計算されることになります;
- そのため、最終的に計算結果に基づいて攻撃者に報酬を鋳造する際に、追加でより多くのCOVERトークンが鋳造され、COVERトークンの増発を引き起こします。
具体的なaccRewardsPerTokenパラメータの差異変化は以下の図の通りです:

関連タグ
関連タグ










