# NFT契約のセキュリティ分析: 典型的な事例とよくある問題2022年上半期、NFT分野において安全事件が頻発し、重大な経済損失を引き起こしました。データプラットフォームの監視によると、この期間に合計10件の主要な安全事件が発生し、損失総額は約6490万ドルに達しました。攻撃手法は主に契約の脆弱性の悪用、秘密鍵の漏洩、フィッシングなどが含まれています。同時に、Discordサーバーは頻繁に攻撃を受けており、個人ユーザーがフィッシングリンクをクリックしたために損失を被るケースが頻発しています。! 【上半期のNFTセキュリティインシデントの分析:警戒すべき典型的なケースは何か】 ](https://img-cdn.gateio.im/social/moments-f85923b3f0a55ae7230fc5950c904d1e)## 典型的なセキュリティ事件の分析### TreasureDAOイベント2022年3月3日、TreasureDAO取引プラットフォームがハッキングされ、100以上のNFTが盗まれました。事件の根源は、TreasureMarketplaceBuyerコントラクトのロジックの脆弱性にあります。コントラクトのbuyItem関数では、トークンのタイプを判断せずに、直接_quantityと_pricePerItemを掛け算してtotalPriceを計算しているため、攻撃者はERC-20トークンの支払い額が0の場合でもトークンを購入できる状況が生じました。この問題は、ERC-1155とERC-721トークンの混用によって引き起こされたロジックの混乱に起因しています。ERC-721トークンには数量の概念が本来存在しないのに、コントラクトでは数量に基づいて価格を計算し、さらに送金の実装ではロジックの分離が行われていませんでした。### APE Coinエアドロップイベント2022年3月17日、ハッカーはフラッシュローンを利用して6万を超えるAPE Coinのエアドロップを取得しました。AirdropGrapesTokenのエアドロップ契約には論理的な脆弱性があり、alpha.balanceOf()とbeta.balanceOf()だけで呼び出し元のBAYC/MAYC NFTの所有権を判断していました。この方法では、ユーザーのNFT所有権の瞬時の状態しか取得できず、その状態はフラッシュローンによって操作可能でした。攻撃者はこの脆弱性を利用し、フラッシュローンを通じてBAYC NFTを借入れ、対応するエアドロップを取得しました。### Revest Financeイベント2022年3月27日、Revest Financeはハッキングを受け、約12万ドルの損失を被りました。Revestの契約にはERC-1155再入可能性の脆弱性が存在しました。ユーザーがdepositAdditionalToFNFT()を使用してFNFTの担保資産を追加する際、契約は最初に元のFNFTを破棄し、新しいFNFTを鋳造する必要があります。しかし、min()関数は、待機中のFNFTが既に存在するかどうかを確認しておらず、fnftIdのインクリメントは_mint()の後に実行されます。_min()内の_doSafeTransferAcceptanceCheck()の外部呼び出しが再入可能性の脆弱性を引き起こしました。### NBAのハウヤンマオ事件2022年4月21日、NBAプロジェクトがハッキングされました。The_Association_Sales契約は、署名検証ホワイトリストを使用する際に署名の使い回しと不正使用の2つの問題が存在しています。署名の使い回しは、契約が使用済みの署名を保存していないため、攻撃者が再利用できることによります。署名の不正使用は、vData memoryパラメータinfoを渡す際にmsg.senderを検証していないために発生します。### Akutarイベント2022年4月23日、AkutarプロジェクトのAkuAuction契約はスマートコントラクトの脆弱性により、11539ETH(約3400万ドル)がロックされました。契約には二つの論理的脆弱性があります。一つ目は、返金関数processRefundsがcall関数を使用して返金を行い、その結果をrequireの判定条件としているため、攻撃者がfallbackで悪意を持ってrevertを行い、返金を阻止することが可能です。二つ目は、返金関数内の判定条件がユーザーが複数のNFTに入札できる場合を考慮していないため、その後の返金操作が実行できなくなっています。### XCarnival イベント2022年6月24日,NFT貸付プロトコルXCarnivalが攻撃を受け、ハッカーは3087枚のイーサリアム(約380万ドル)を獲得しました。XNFT契約のpledgeAndBorrow関数はNFTを担保にする際にxTokenアドレスがホワイトリストにあるかどうかを確認せず、貸付時に担保記録の状態を検出しなかったため、攻撃者は無効な担保記録を繰り返し使用して貸付を行うことができました。! 【上半期のNFTセキュリティインシデントの分析:警戒すべき典型的なケースは何か】 ](https://img-cdn.gateio.im/social/moments-1888562fb8639d0fb586b639d3e5eb87)## NFT契約監査のよくある質問1. サインの悪用と再利用: - 署名データに再実行検証が欠けており、再利用可能な署名データがNFTを鋳造します。 - サインチェックが不合理で、任意のユーザーがチェックを通じてコインを鋳造できる2.論理的なバグ: - 管理者は特別な方法でコインを鋳造でき、総量制限を受けず、実際のNFTの量が予想を超えることになります。 - NFTをオークションする際、勝者は取引の順序依存攻撃を通じて入札価格を変更し、低価格でNFTを取得することができます。3. ERC721/ERC1155 リエントランシー攻撃: - 転送通知機能を使用する際、NFT契約がターゲット契約に呼び出しを送信すると、再入攻撃を引き起こす可能性があります。4. 権限の範囲が広すぎる: - ステーキングまたはオークション時に_operatorApprovalsの承認が必要であり、NFTが盗まれるリスクがある可能性があります5.価格操作: - NFTの価格は特定のコントラクトトークンの保有量に依存しています。攻撃者はフラッシュローンを利用して価格を吊り上げ、NFTの異常清算を引き起こすことができます。NFT契約のセキュリティ事件が頻発しており、監査でよく見られる脆弱性が実際に利用されることが多いため、専門のセキュリティ会社にNFT契約の包括的な監査を依頼することが非常に重要です。! 【上半期のNFTセキュリティインシデントの分析:警戒すべき典型的なケースは何か】 ](https://img-cdn.gateio.im/social/moments-d101c45dd9b43f58f7f9c7919dd3918)
NFT契約の安全リスク分析:6つの典型的な事件の分析と5つの一般的な問題の解説
NFT契約のセキュリティ分析: 典型的な事例とよくある問題
2022年上半期、NFT分野において安全事件が頻発し、重大な経済損失を引き起こしました。データプラットフォームの監視によると、この期間に合計10件の主要な安全事件が発生し、損失総額は約6490万ドルに達しました。攻撃手法は主に契約の脆弱性の悪用、秘密鍵の漏洩、フィッシングなどが含まれています。同時に、Discordサーバーは頻繁に攻撃を受けており、個人ユーザーがフィッシングリンクをクリックしたために損失を被るケースが頻発しています。
! 【上半期のNFTセキュリティインシデントの分析:警戒すべき典型的なケースは何か】 ](https://img-cdn.gateio.im/webp-social/moments-f85923b3f0a55ae7230fc5950c904d1e.webp)
典型的なセキュリティ事件の分析
TreasureDAOイベント
2022年3月3日、TreasureDAO取引プラットフォームがハッキングされ、100以上のNFTが盗まれました。事件の根源は、TreasureMarketplaceBuyerコントラクトのロジックの脆弱性にあります。コントラクトのbuyItem関数では、トークンのタイプを判断せずに、直接_quantityと_pricePerItemを掛け算してtotalPriceを計算しているため、攻撃者はERC-20トークンの支払い額が0の場合でもトークンを購入できる状況が生じました。この問題は、ERC-1155とERC-721トークンの混用によって引き起こされたロジックの混乱に起因しています。ERC-721トークンには数量の概念が本来存在しないのに、コントラクトでは数量に基づいて価格を計算し、さらに送金の実装ではロジックの分離が行われていませんでした。
APE Coinエアドロップイベント
2022年3月17日、ハッカーはフラッシュローンを利用して6万を超えるAPE Coinのエアドロップを取得しました。AirdropGrapesTokenのエアドロップ契約には論理的な脆弱性があり、alpha.balanceOf()とbeta.balanceOf()だけで呼び出し元のBAYC/MAYC NFTの所有権を判断していました。この方法では、ユーザーのNFT所有権の瞬時の状態しか取得できず、その状態はフラッシュローンによって操作可能でした。攻撃者はこの脆弱性を利用し、フラッシュローンを通じてBAYC NFTを借入れ、対応するエアドロップを取得しました。
Revest Financeイベント
2022年3月27日、Revest Financeはハッキングを受け、約12万ドルの損失を被りました。Revestの契約にはERC-1155再入可能性の脆弱性が存在しました。ユーザーがdepositAdditionalToFNFT()を使用してFNFTの担保資産を追加する際、契約は最初に元のFNFTを破棄し、新しいFNFTを鋳造する必要があります。しかし、min()関数は、待機中のFNFTが既に存在するかどうかを確認しておらず、fnftIdのインクリメントは_mint()の後に実行されます。_min()内の_doSafeTransferAcceptanceCheck()の外部呼び出しが再入可能性の脆弱性を引き起こしました。
NBAのハウヤンマオ事件
2022年4月21日、NBAプロジェクトがハッキングされました。The_Association_Sales契約は、署名検証ホワイトリストを使用する際に署名の使い回しと不正使用の2つの問題が存在しています。署名の使い回しは、契約が使用済みの署名を保存していないため、攻撃者が再利用できることによります。署名の不正使用は、vData memoryパラメータinfoを渡す際にmsg.senderを検証していないために発生します。
Akutarイベント
2022年4月23日、AkutarプロジェクトのAkuAuction契約はスマートコントラクトの脆弱性により、11539ETH(約3400万ドル)がロックされました。契約には二つの論理的脆弱性があります。一つ目は、返金関数processRefundsがcall関数を使用して返金を行い、その結果をrequireの判定条件としているため、攻撃者がfallbackで悪意を持ってrevertを行い、返金を阻止することが可能です。二つ目は、返金関数内の判定条件がユーザーが複数のNFTに入札できる場合を考慮していないため、その後の返金操作が実行できなくなっています。
XCarnival イベント
2022年6月24日,NFT貸付プロトコルXCarnivalが攻撃を受け、ハッカーは3087枚のイーサリアム(約380万ドル)を獲得しました。XNFT契約のpledgeAndBorrow関数はNFTを担保にする際にxTokenアドレスがホワイトリストにあるかどうかを確認せず、貸付時に担保記録の状態を検出しなかったため、攻撃者は無効な担保記録を繰り返し使用して貸付を行うことができました。
! 【上半期のNFTセキュリティインシデントの分析:警戒すべき典型的なケースは何か】 ](https://img-cdn.gateio.im/webp-social/moments-1888562fb8639d0fb586b639d3e5eb87.webp)
NFT契約監査のよくある質問
2.論理的なバグ:
ERC721/ERC1155 リエントランシー攻撃:
権限の範囲が広すぎる:
5.価格操作:
NFT契約のセキュリティ事件が頻発しており、監査でよく見られる脆弱性が実際に利用されることが多いため、専門のセキュリティ会社にNFT契約の包括的な監査を依頼することが非常に重要です。
! 【上半期のNFTセキュリティインシデントの分析:警戒すべき典型的なケースは何か】 ](https://img-cdn.gateio.im/social/moments-d101c45dd9b43f58f7f9c7919dd3918)