DeFi保険関連銘柄COVER、一時95%下落──カバープロトコルに何があったのか

カバープロトコルが攻撃を受ける

12月28日、分散型金融(DeFi)でP2P保険マーケットを構築するカバープロトコル(Cover Protocol)のスマートコントラクトが攻撃を受け、ハッカーが4000京(4000×10の16乗)ものカバートークンを鋳造するという事件が起こった。

これを受けて、カバープロトコルは流動性プロバイダーにサービス停止を要請。さらに大手取引所バイナンスがカバートークンの取引を停止したことから、同トークンの価格は一時95%以上暴落した。しかし、その数時間後、実行犯がトークン売却で得た全資金を返還したとツイートしたことから、執筆時にはトークン価格は70%程度の下落まで一時値を戻している。

「次回は、自分で尻拭いしろよ」

攻撃手法

カバープロトコルチームは事件の原因について、流動性ファーミング契約「Blacksmith」が、「無制限の」カバートークンを鋳造するために悪用されたと説明している。現在は、さらなる被害を食い止めるために、Blacksmithの鋳造アクセスは削除されている。調査は継続中だが、11月に合併したYearn Financeのチームもサポートに加わっているとのことだ。

一方、Polymath NetworkのセキュリティエンジニアであるMudit Gupta氏は、自身のブログで悪用されたスマートコントラクトのバグについて次のように解説している。

「Blacksmithの契約では手数料であるガスを節約するために、プールデータをメモリにキャッシュする。ストレージのプールデータは更新するが、キャッシュされたデータを更新するのを放置してしまう。このキャッシュされた古いデータが利用されハッキングを可能にする。」

Blacksmith契約では、トークンごとの報酬を記録し、多くのトークンがロックされている場合はトークンごとの報酬は少なくなる。一方、少数のトークンがロックされている場合、1トークンあたりの報酬は多くなる。この報酬を計算するための関数が「accRewardsPerToken」で、プール報酬合計・トークン残高合計を算出するために使われる。

ハッカーはaccRewardsPerTokenの数値を高める複数のステップを踏み、システムから支払われる報酬総額を巨大に膨らませたようだ。

1. 新たに承認されたBlacksmith契約にLPトークンを入金(他者のトークンがロックされていない状態)

2.ほぼ全てのLPトークンを引き出す
=accRewardsPerTokenの数値が大きくなる

3.LPトークンを再度入金
 =上記のバグによって、古い数値(小さい数値)が報酬の算出に使用される

4.算出された巨額の報酬を引き出す

被害額

この手法を使い、実行を認めたハッカー「GrapFinance」は、引き出したカバートークンをETHをはじめDAI、WBTCなどに換金したが、GrapFinanceは4350ETHを含む精算された資金全てをカバープロトコルに返還した。しかし、UniswapとSushiswap等を介して換金されたカバートークンは7万2900のみだと報道されており、引き出された残りのカバートークンはバーンされたようだ。GrapFinanceがカバープロトコルに返還した額は約300万ドル(3.1億円相当)だという。

ただし、カバープロトコルはGrapFinanceだけではなく、複数のハッカーによって攻撃されたと見られており、Mudit Gupta氏によると、この攻撃で鋳造された約7万のカバートークンが流通しているという。他のハッカーがGrapFinance同様、このトークンをバーンするかどうかは今後の展開を待つしかないようだ。

新しいトークンを発行する可能性

カバープロトコルは、今回の違法な鋳造以前のLPトークン保有者のスナップショットに基づいた新たなカバートークンの発行を検討中だと発表した。ハッカーによって返還された4350ETHも、スナップショットにより処理されるとのことだ。

カバープロトコルチームは、調査結果が明らかになるまで、カバートークンの購入を控えるようにとユーザーに呼びかけている。

著者:幸田直子

画像はShutterstockのライセンス許諾により使用
「仮想通貨」とは「暗号資産」のことを指します