スマート・コントラクトのセキュリティ脆弱性 12/4
本記事のオリジナルはこちらとなっております。
https://blog.thirdweb.com/security-vulnerability/
thirdwebのミッションは、Web3のための完全な開発者ツールを提供することであり、セキュリティは私たちが行うすべてのことの最前線にあります。創業以来、私たちはツールを構築し、継続的な開発者サポートを提供する際に、堅牢なセキュリティ対策を採用するために多大なリソースを投資してきました。これらの対策には、当社のプラットフォーム上のすべてのコントラクトに対する定期的なスマートコントラクト監査の実施、バグ報奨金の支払い、当社の顧客と開発者のセキュリティを強化するためのすべてのツールのオープンソース化などが含まれます。
私たちのプロセスの一環として、2023年11月20日午後6時(太平洋標準時)、私たちは、thirdwebの事前構築済みスマートコントラクトの一部を含む、web3スマートコントラクト用の一般的に使用されているオープンソースライブラリにセキュリティ脆弱性があることを認識しました。
以下の事前構築済みスマートコントラクトがこの脆弱性の影響を受けます:
・AirdropERC20(v1.0.3以降)、ERC721(v1.0.4以降)、ERC1155(v1.0.4以降)、ERC20Claimable、ERC721Claimable、ERC1155Claimable
・BurnToClaimDropERC721(すべてのバージョン)
・DropERC20、ERC721、ERC1155(すべてのバージョン)
・ロイヤリティカード
・MarketplaceV3(すべてのバージョン)
・マルチラップ、マルチラップ_OSロイヤリティフィルタ
・OpenEditionERC721(v1.0.0以降)
・PackおよびPack_OSRoyaltyFilter
・TieredDrop(すべてのバージョン)
・TokenERC20、ECRC721、ERC1155(すべてのバージョン)
・SignatureDrop、SignatureDrop_OSRoyaltyFilter
・スプリット(低インパクト)
・TokenStake、NFTStake、EditionStake(すべてのバージョン)
我々の監査パートナーと一緒に調査したところ、この脆弱性はサードウェブのスマートコントラクトでは悪用されていない。
私たちの当面の優先事項は、この脆弱性の影響を受けたお客様を保護することです。11月22日午後7時(太平洋標準時)までに、thirdwebのダッシュボードまたはSDKを使用して、影響を受けるこれらの事前構築スマートコントラクトのいずれかをデプロイしたユーザーは、いくつかの緩和措置を実行する必要があります。
当社と当社のセキュリティ・パートナーは、この脆弱性を認識して以来、お客様が取るべき緩和策を簡単に決定し、実行するためのツールを構築するためにフル稼働しています。https://mitigate.thirdweb.com/ からアクセスできます。
緩和サイトでの手順を完了する前に、URLを再確認してください。https://mitigate.thirdweb.com
ほとんどの場合、緩和ステップでは、コントラクトをロックし、スナップショットを取得し、既知の脆弱性のない新しいコントラクトに移行します。正確な手順は、スマートコントラクトの性質によって異なります。
緩和ツールの使い方のステップバイステップガイドもこちらでご覧いただけます。
注意:保有者がトークンを流動性プールまたはステーキングプールにロックしている場合、これらのステップを開始する前にこれらのトークンを引き出す必要があります。そうしないと、資産を失うことになります。さらに、revoke.cashを使用して、すべてのサードウェブ契約の承認を取り消すようユーザーに要求してください。
今後のスマート・コントラクトの展開
脆弱性を認識した後、私たちはセキュリティチームを活性化し、監査パートナーと緊密に連携して問題を調査しました。私たちは、11月22日午後7時(太平洋標準時)以降に作成された、影響を受けたthirdwebのすべての事前構築済みコントラクトの修復をプッシュすることに成功しました。
したがって、11月22日午後7時(PST)以降にデプロイされたthirdwebのスマートコントラクト(最新バージョンである限り)は、この既知の脆弱性の影響を受けません。その他の全てのthirdwebサービス(ウォレット、ペイメント、インフラサービスを含む)も影響を受けず、通常通り機能しています。
当社のSolidity SDKを使用して基本契約を拡張した場合、またはカスタム契約を構築した場合、脆弱性がお客様の契約に及ぶとは考えておりません。ただし、個々の契約を監査することができないため、これを保証することはできません。
また、脆弱性の根源となっているオープンソースライブラリ(悪用の可能性を軽減するために明記していない)のメンテナにも連絡を取り、同じ問題の影響を受けていると思われる他のプロトコルや組織にも連絡を取り、調査結果と緩和策を共有しています。セキュリティ研究者やその他の組織で、さらに詳しい情報をお知りになりたい方は、support@thirdweb.com までご連絡ください。
今後の展望
今後は、セキュリティ対策への投資を増やしていきます。これには、バグ報奨金の支払いを1件あたり25,000ドルから50,000ドルに倍増することや、より厳格な監査プロセスを導入することなどが含まれます。
私たちは、これが混乱を引き起こすことを理解し、問題の軽減に最大限の注意を払っています。契約緩和のための費用をカバーするため、遡及的にガス補助金を提供する予定です。ガス補助金を受けられるかどうかは、さまざまな要因によって決まります。こちらのフォームに必要事項をご記入の上、送信してください。
脆弱性とその緩和策に関するすべてのサポートに関するご質問は、support@thirdweb.com まで直接Eメールにてお問い合わせください。
よくある質問
私の契約は脆弱ですか?
契約書にこの脆弱性が含まれているかどうかを確認するには、緩和ツールを使用してください。
どのコントラクトが脆弱性の影響を受けますか?
以下のビルド済みスマートコントラクトがこの脆弱性の影響を受けます:
・AirdropERC20(v1.0.3以降)、ERC721(v1.0.4以降)、ERC1155(v1.0.4以降)、ERC20Claimable、ERC721Claimable、ERC1155Claimable
・BurnToClaimDropERC721(すべてのバージョン)
・DropERC20、ERC721、ERC1155(すべてのバージョン)
・ロイヤリティカード
・MarketplaceV3(すべてのバージョン)
・マルチラップ、マルチラップ_OSロイヤリティフィルタ
・OpenEditionERC721(v1.0.0以降)
・PackおよびPack_OSRoyaltyFilter
・TieredDrop(すべてのバージョン)
・TokenERC20、ECRC721、ERC1155(すべてのバージョン)
・SignatureDrop、SignatureDrop_OSRoyaltyFilter
・スプリット(低インパクト)
・TokenStake、NFTStake、EditionStake(すべてのバージョン)
したがって、11月22日午後7時(PST)以降にデプロイされたthirdwebスマートコントラクト(最新バージョンである限り)は、この既知の脆弱性の影響を受けません。当社のウォレット、決済、インフラサービスを含む他のすべてのthirdwebサービスも影響を受けず、通常通り機能しています。
弊社のSolidity SDKを使用して基本契約を拡張した場合、またはカスタム契約を構築した場合、脆弱性がお客様の契約に及ぶとは考えておりません。ただし、個々の契約を監査することができないため、これを保証することはできません。
私の契約は悪用されましたか?
これまでの調査によると、サードウェブのスマート・コントラクトでこの脆弱性が悪用された例は知りません。これは、あなたのコントラクトが悪用される脆弱性があるかどうかを尋ねることとは異なります。私たちのツールを使って、あなたのコントラクトが悪用されやすいかどうかを調べてください。
いつ、どのように自分の契約を緩和すべきですか?
コントラクトを安全に緩和する方法については、こちらのリンクを参照してください。直ちに対策を講じることをお勧めします。
ユーザはどのようにして脆弱性のない新しい契約で新しいアセットを入手できますか?
緩和ツールが提供する請求ページを使ってユーザーに新しいトークンを請求させるか、ユーザーに新しいトークンをエアドロップすることができます。緩和ツールを使用して、ご希望のオプションを選択できます。
スナップショット ツールはどのように機能しますか?
スナップショットツールは、すべての所有者を、彼らが契約上で持っている正確なトークンにマッピングします。ステーキングまたは流動性プールで保有されているトークンは、エスクロー契約(すなわち流動性またはステーキングプール)でステーキングされているため、含まれません。コントラクトがロックされると、トークンの移動が無効になるため、これらのユーザーはトークンを引き出すことができなくなります。コントラクトをロックしてスナップショットを取得する前に、エスクローコントラクトからトークンを引き出すようユーザーに依頼することをお勧めします。
自分のスナップショット・データにアクセスできますか?
はい、スナップショットデータをCSV形式でダウンロードできます。
この脆弱性について質問がある場合、どこに連絡すればよいですか?
support@thirdweb.com までご連絡ください。
影響を受ける他のサードウェブ製品はありますか?
11月22日午後7時(PST)以降にデプロイされたthirdwebスマートコントラクト(最新バージョンである限り)は、この既知の脆弱性の影響を受けません。
当社のウォレット、ペイメント、インフラストラクチャーサービスを含む他のすべてのサードウェブサービスにも影響はなく、通常通り機能しています。
thirdwebのスマートコントラクト監査とバグ報奨金プログラムの詳細を教えてください。
thirdwebは2022年4月から0xMacroと提携し、ダッシュボード上のすべての事前構築済みスマートコントラクトを監査しています。thirdwebはまた、公開バグ報奨金プログラムを持っており、昨年1年間で〜5万ドル以上のバグ報奨金を支払っています。
脆弱性の詳細を教えてください。
この脆弱性の影響を受けるユーザーを保護するため、技術的な詳細は現在共有していません。
この脆弱性は、他の場所にデプロイされたコントラクトに影響を与える可能性はありますか?
この問題はオープンソースのライブラリに起因しているため、thirdwebのエコシステム以外にも影響を受けるスマートコントラクトが存在する可能性があります。
緩和措置に関連する取引手数料は返金されますか?
契約緩和のための手数料をカバーするために、遡及的なガス補助金を提供する予定です。ガス補助金を受け取れるかどうかは、多くの要因によって決まります。こちらのフォームに必要事項をご記入の上、送信してください。
サードウェブ推奨の緩和策に従わない場合、どのようなリスクがありますか?
推奨されるサードウェブ緩和ツールを使用しない場合、あなたの契約は不正行為者によって悪用される可能性があります。
顧客のために契約書を作成し、所有者でなくなった場合はどうなりますか?
あなたが所有者でなくなった場合、軽減措置を実行することはできません。契約の所有者に連絡し、契約をロックして再作成する手順を実行するよう依頼してください。
管理ウォレットにアクセスできなくなりました。どうすれば緩和できますか?
管理者ウォレットにアクセスできない場合、コントラクトをロックまたは再作成することはできません。
脆弱性のある旧バージョンのコントラクトをデプロイすることは可能ですか?
11月22日午後7時(PST)以降にthirdwebのダッシュボードおよびSDKを使用してデプロイされるすべてのコントラクトは、脆弱性のない新しいバージョンとなります。
トークンを請求する代わりに、トークンを保有者にエアドロップすることはできますか?
はい。緩和ツールには、保有者にトークンをエアドロップするか、請求可能なトークンのページを作成するオプションが含まれています。トークンをエアドロップする場合は契約所有者が、トークンを請求する場合はトークン保有者がガスを支払います。