ハッカー「フィッシング攻撃」がOpenSeaユーザーを襲撃
著者:ジャスミン、ハニカムTech
2月19日、世界最大のNFT取引プラットフォームOpenSeaがユーザーによる新しい契約の使用をサポートし始めたところ、一部のユーザーのNFT資産が盗まれました。
翌日、OpenSeaのCEOデビン・フィンザーはツイッターで「これはフィッシング攻撃です。OpenSeaのウェブサイトとは関連していないと考えています。これまでのところ、攻撃者からの悪意のある有効なトークンに署名したユーザーは32人のようです。その中のいくつかのNFTが盗まれました。」と明らかにしました。フィンザーによれば、攻撃者のウォレットは一時的に盗まれたNFTを販売することで170万ドル相当のETHを得たとのことです。
ユーザーのNFTが盗まれた後、多くの人々がツイッターで、フィッシング攻撃のリンクは偽の「OpenSeaからのユーザーへの通知」メールに隠されている可能性があると推測しました。なぜなら、19日当日、取引プラットフォームはスマートコントラクトのアップグレードを行っており、ユーザーはリストを新しいスマートコントラクトに移行する必要があったからです。攻撃者はこのアップグレードの通知を利用して、フィッシングリンクを通知メールに偽装した可能性が高いです。
2月21日、OpenSeaの公式ツイッターは、攻撃は電子メールに基づいていないようだと更新して応答しました。現在のところ、フィッシング攻撃の出所はまだ調査中です。
OpenSeaユーザーが「フィッシング」によりNFTを失う
2月18日、OpenSeaはプラットフォーム上の非アクティブリストの問題を解決するためにスマートコントラクトのアップグレードを開始しました。契約のアップグレードの一環として、すべてのユーザーはイーサリアム上のNFTリストを新しいスマートコントラクトに移行する必要があり、移行期間は7日間続き、米東部時間の2月25日午後2時に完了します。移行期間中、ユーザーのNFTはOpenSea上の旧価格が期限切れになります。
2月19日、ユーザーは完了するための操作を開始しました。人々は、移行の混乱の中で、ハッカーの「手」がOpenSeaユーザーのウォレットに伸びているとは思いもしませんでした。ユーザーたちのソーシャルメディアでのフィードバックによれば、大部分の攻撃は米東部時間の午後5時から午後8時の間に発生しました。
後にイーサリアムのブロックチェーンブラウザで「フィッシング/ハッキング」としてマークされたアドレスによると、19日の午後6時56分に盗まれた資産がハッカーのアドレスから移転し、2月20日の午前10時30分にはミキシングツールTornado Cashを使用して「洗浄」される操作が見られました。
ハッカーのチェーン上アドレスの一部の動向
ユーザーのNFTが盗まれた後、「OpenSeaがハッカーに攻撃され、2億ドルの資産が盗まれた」という主張がネット上で広まりましたが、盗難事件の正確な原因は不明で、どれだけのユーザーが影響を受けたのかも確認できませんでした。
2月20日まで、OpenSeaのCEOデビン・フィンザーはツイッターで「私たちの知る限り、これはフィッシング攻撃です。OpenSeaのウェブサイトとは関連していないと考えています。これまでのところ、攻撃者からの悪意のある有効なトークンに署名したユーザーは32人のようです。その中のいくつかのNFTが盗まれました。」と明らかにしました。フィンザーは「2億ドルのハッカー攻撃の噂」を否定し、攻撃者のウォレットは盗まれたNFTを販売することで170万ドルのETHを得たと述べました。
ブロックチェーンセキュリティ監査機関PeckShieldは、盗まれたNFTの数をリストアップし、合計315のNFT資産が盗まれ、そのうち254がERC-721標準のNFT、61がERC-1155標準のNFTであることを明らかにしました。関与するNFTブランドには、著名なメタバースプロジェクトDecentralandの資産やNFTアバター「ボアードエイプ」Bored Ape Yacht Clubなどが含まれています。この機関はまた、ハッカーがTornado Cashを利用して1100 ETHを洗浄したことを明らかにし、ETHの当時の価格2600ドルで計算すると、洗浄された価値は286万ドルです。
攻撃者はどのようにユーザーの「署名」権限を取得したのか?
ユーザーのNFT盗難事件が発生した後、あるネットユーザーは、ハッカーがOpenSeaのアップグレードの通知を利用してフィッシングリンクを偽装したメールを作成し、ユーザーが危険なリンクをクリックするように仕向けたのではないかと推測しました。
これに対し、デビン・フィンザーは、これはフィッシング攻撃であると確信しているが、フィッシングがどこで発生したのかはわからないと述べました。影響を受けた32人のユーザーとの対話に基づき、彼らは以下の可能性を排除しました:攻撃はOpenSeaの公式ウェブサイトのリンクからではない;OpenSeaの電子メールとのやり取りも攻撃の手段ではない;OpenSeaでのNFTの鋳造、購入、販売、またはリスト作成も攻撃の手段ではない;新しいスマートコントラクト(Wyvern 2.3コントラクト)への署名も攻撃の手段ではない;OpenSeaのリスト移行ツールを使用して新しいコントラクトにリストを移行することも攻撃の手段ではない;公式ウェブサイトのバナーをクリックすることも攻撃の手段ではない。
要するに、フィンザーはフィッシング攻撃がOpenSeaのウェブサイト内部から来ていないことを説明しようとしました。2月21日未明、OpenSeaの公式ツイッターは、攻撃は電子メールに基づいていないようだと明確に述べました。
現在のところ、フィッシング攻撃がどのリンクからユーザーに導かれたのかについては正確な情報はありません。しかし、フィンザーが認めた見解は、攻撃者がフィッシング攻撃を通じてユーザーのNFT移行の権限を取得したということです。
ツイッターユーザーNesoの発言はフィンザーによってリツイートされました。このユーザーは、攻撃者が人々に「半有効なWyvernオーダー」に署名させたと述べました。なぜなら、攻撃者の契約と呼び出しデータ(calldata)を除いて、オーダーは基本的に空だからです。攻撃者はオーダーのもう一方の半分に署名しました。
この攻撃はWyvernプロトコルの柔軟性を利用しているようで、このプロトコルはほとんどのNFTスマートコントラクト(OpenSeaで作成された契約を含む)の基盤となるオープンソース標準です。OpenSeaはそのフロントエンド/APIでオーダーを検証し、ユーザーが署名した内容が期待通りに機能することを確認しますが、この契約は他のより複雑なオーダーでも使用される可能性があります。
Nesoによれば、まず、ユーザーはWyvernで部分的な契約を承認しました。これは一般的な承認であり、大部分のオーダー内容は空白のままです。その後、攻撃者は自分の契約を呼び出してオーダーの残りの部分を完了させることで、支払いなしにNFTの所有権を移転することができました。
簡単に言えば、ハッカーはユーザーが署名した「空の小切手」を手に入れ、その小切手の他の内容を記入してユーザーの資産を持ち去ったということです。
また、あるネットユーザーは、フィッシング攻撃の出所に関して、OpenSeaがアップグレードされた新しいWyvern 2.3コントラクトを排除したため、アップグレード前のユーザーが承認した旧バージョンの契約がハッカーに利用された可能性があると指摘しました。この見解に対して、OpenSeaはまだ回答を出していません。
現在のところ、OpenSeaはフィッシング攻撃の出所を調査中です。フィンザーは、不安を感じるユーザーに対し、イーサリアムブラウザのトークン承認チェックプログラム(Ethereum Token Approval)で自分のNFTの承認を取り消すことを勧めています。