8月以来、SUIエコシステムの開発は急速に進んでいます。DefiLlamaによると、SUIのTVLは過去2ヶ月間で200%増加し、現在、SUI上に構築されたDexのCetusの取引高は1日あたり1億6000万ドルを超えています。
10月9日、SUIのネイティブUSDCがメインネット上で利用可能になり、これによりSUIエコシステムへの資金流入がさらに増えることが期待されています。Moveエコシステムの重要なメンバーとして、SUIはさまざまなブロックチェーンアプリケーションシナリオに対して、迅速かつ安全なトランザクションサービスを提供することをお約束します。
この記事では、Beosinが、数年にわたるセキュリティ監査の経験を持つSUIエコシステムのユーザーと開発者が直面するセキュリティの課題について理解するのに役立ちます。
Suiはスマートコントラクトのプログラミング言語としてMoveを使用しています。Moveは、組み込みのセキュリティアルゴリズムとバイトコード検証機構を備えた実行可能なバイトコード言語として設計されており、契約の呼び出し時に静的呼び出しを使用しています。
この設計は、再入攻撃、整数オーバーフロー、二重支払い、および潜在的なコンパイラの問題など、スマートコントラクトにおける一般的な脆弱性に対処することを可能にしますが、開発者が契約の開発中に無意識に脆弱性を導入することはまだ可能です。Beosinはその対応として、2023年にMove Lintを導入しました。これは契約における潜在的なセキュリティリスクを自動的に検出し、脆弱性の位置を特定する静的検出ツールです。
検出ツールに加えて、Move契約の開発においてセキュリティを向上させるために、開発者が追加で注意を払う必要があるセキュリティの問題が以下に挙げられます:
他のスマートコントラクト言語と比較して、Moveは整数演算を行う際にデフォルトでオーバーフローチェックを自動的に行います。これにより、多くのオーバーフロー問題を防ぐことができますが、注意するべき点が2つあります:
Move言語のビット演算は、整数演算とは異なる動作をするデータのビットレベル演算であるため、オーバーフローチェックが自動的に実行されません。
Moveの自動オーバーフローチェックが有効になると、関数の実行が例外をスローします。不適切に設計されている場合、プロジェクトビジネスが期待どおりに実行されなくなり、DoS攻撃が発生する可能性があります。
特権オブジェクトと特権関数呼び出しの受け渡しは、これらの機能とオブジェクトが資金のセキュリティに関与しているため、慎重に認証する必要があります。さらに、オブジェクトの種類をチェックして、それがプライベートオブジェクトか共有オブジェクトかを判断する必要があります。オブジェクトが誤ってプライベートオブジェクトから共有オブジェクトに変換された場合、不正なユーザーがオブジェクトにアクセスできる可能性があり、潜在的なセキュリティリスクが生じる可能性があります。
開発者は、Move Proverを使用して、プログラムが明示的なアクセス制御ポリシーを強制していることを検証できます。たとえば、std::offerでは、受取人がホワイトリストに含まれていない場合、関数が終了することがわかります。
トランザクションの順序依存性(TOD)は、契約の動作がトランザクションの実行順序によって異なる結果を持つことを指します。特に、マイナーや検証者がトランザクションの順序を選択できる分散環境では、フロントランニング攻撃などのリスクが生じる可能性があります。
SUIでは、トランザクションの順序に依存するように設計されている場合、MOVE契約はまだこの問題の影響を受ける可能性があります。
Suiチェーンでは、MoveスマートコントラクトのGas問題は、主に契約の実行に必要な計算およびストレージコストに現れます。契約の複雑さと状態変更の増加に伴い、Gas消費もそれに応じて上昇します。開発者は契約ロジックの最適化に注力し、不必要な計算や状態更新を減らしてユーザーの取引コストを削減し、特に契約における制御できない反復の状況を避ける必要があります。これはガスが不足してビジネスを正しく実行できない可能性があるためです。
現在、Moveでサポートされている数値型は符号なし整数であり、浮動小数点をサポートしていないため、除算操作中に小数部が切り捨てられ、不正確な計算結果をもたらす可能性があり、いくつかの重要なポリシーに影響を与え、収益損失を引き起こし、さらにはセキュリティ上の脆弱性となる可能性があります。
この問題に対する通常の緩和策は精度を高めることですが、最終結果が得られたときには精度を元に戻す必要があることに注意する必要があります。
Sui ブロックチェーン上の Move スマートコントラクトでは、オブジェクトの管理は、オブジェクトのライフサイクル、所有権、並行アクセス、シリアル化、およびストレージコストの複数の側面をカバーする重要な課題です。開発者は、リソースの浪費や状態の不整合を防ぐために、オブジェクトの作成、更新、破棄を正確に管理する必要があります。同時に、コントラクトロジックの合理的な設計により、オブジェクトの所有権とアクセス権を制御し、複数のユーザーが同じオブジェクトに同時にアクセスする場合の取り扱いは、スマートコントラクトの安全かつ効率的な運用を確保するための重要な要素です。
例えば、Sui DeFi プロジェクトでのライトニングローンの実装により、攻撃者はフラッシュローンを使用して価格操作などの大規模な資金攻撃を行うことができます。
一般的なAMMトークンスワッピング機能では、開発者はMove Proverを使用してトークンの数が正しく変更されたことを検証できます:
たとえば、貸出プロトコルは、入金、借入、引出しの一連の後に常に完全に保護されている必要があります。オンチェーン永続契約取引の注文が出された後に注文ブックがキャンセルされた場合、元帳に変更がない必要があり、開発者によって確認および検証する必要があります。
現在、SUIのDeFiとMemecoinsが盛んであり、取引量とTVLが爆発的な成長を見せています。その結果、ユーザーが避ける必要がある詐欺やスパム取引がますます増えています。
今年、Sui Ecoに登場したSuissesというエアドロップ詐欺により、多くのユーザーが資産を盗まれることになりました。ユーザーがSuissesのウェブサイト上のウォレットに接続し、Claimをクリックすると、ユーザーの資産の送金を要求する取引要求が表示されます。ユーザーが取引に署名すると、ウォレットのすべての資産が送金されていることに気づくでしょう。
SUIの特性のため、すべてが対象であり、ユーザーのウォレット内のトークンだけでなく、NFTも対象であり、ユーザーのDeFiマイニング、流動性の担保なども対象です。フィッシング攻撃が発生した場合、SUIエコシステム内のユーザーのすべての資産が一度にハッカーによって移動される可能性があります。
SUIエコシステムには、多くの偽のトークンやハニーポットが存在します。特に、SUIエコシステム内でユーザーがメメコインを取引する際には、誤って捕まる可能性があります。
以下のように、SUIでトークンを作成する際、ハッカーは一般のユーザーには区別できないほど人気のあるトークンや主要なトークンと同じアイコンや名前を定義することができます。したがって、ユーザーはトークンを購入する際にトークンのデータ形式が正しいかどうかを確認する必要があります。
さらに、ハッカーはトークン契約にDenyList機能を追加することもできます。これにより、トークンを購入したユーザーは売却できず、ユーザーに損失をもたらします。
MEVは最大抽出可能価値の略です。MEVは元々マイナー抽出可能価値を指し、BTCネットワークのマイナーはトランザクションを並べ替えることでブロック内で手数料を超える報酬を得ます。MEVはブロックチェーンネットワークの種類とは無関係です。MEVはすべてのブロックチェーンに存在し、SUIも例外ではありません。
SUIは、未完了の取引をノードに割り当てるためにナーワルをメモリプールとして使用し、コンセンサスエンジンとしてブルシャークアルゴリズムを使用して取引をソートします。
Suiの取引の注文ルールは、ガス料金に基づいています。さらに、Suiは並列と直列を組み合わせたトランザクション実行方式を採用しているため、同じAMMトランザクションプールの状態を共有するトランザクションは、直列でのみ実行できます。したがって、サンドイッチ攻撃/フロントランニングトランザクションは実行可能です。攻撃者は、より高いガス料金を通じてサンドイッチ攻撃を行うことができるため、DeFiトレーディングに参加しているユーザーは損失を被る可能性があります。
8月以来、SUIエコシステムの開発は急速に進んでいます。DefiLlamaによると、SUIのTVLは過去2ヶ月間で200%増加し、現在、SUI上に構築されたDexのCetusの取引高は1日あたり1億6000万ドルを超えています。
10月9日、SUIのネイティブUSDCがメインネット上で利用可能になり、これによりSUIエコシステムへの資金流入がさらに増えることが期待されています。Moveエコシステムの重要なメンバーとして、SUIはさまざまなブロックチェーンアプリケーションシナリオに対して、迅速かつ安全なトランザクションサービスを提供することをお約束します。
この記事では、Beosinが、数年にわたるセキュリティ監査の経験を持つSUIエコシステムのユーザーと開発者が直面するセキュリティの課題について理解するのに役立ちます。
Suiはスマートコントラクトのプログラミング言語としてMoveを使用しています。Moveは、組み込みのセキュリティアルゴリズムとバイトコード検証機構を備えた実行可能なバイトコード言語として設計されており、契約の呼び出し時に静的呼び出しを使用しています。
この設計は、再入攻撃、整数オーバーフロー、二重支払い、および潜在的なコンパイラの問題など、スマートコントラクトにおける一般的な脆弱性に対処することを可能にしますが、開発者が契約の開発中に無意識に脆弱性を導入することはまだ可能です。Beosinはその対応として、2023年にMove Lintを導入しました。これは契約における潜在的なセキュリティリスクを自動的に検出し、脆弱性の位置を特定する静的検出ツールです。
検出ツールに加えて、Move契約の開発においてセキュリティを向上させるために、開発者が追加で注意を払う必要があるセキュリティの問題が以下に挙げられます:
他のスマートコントラクト言語と比較して、Moveは整数演算を行う際にデフォルトでオーバーフローチェックを自動的に行います。これにより、多くのオーバーフロー問題を防ぐことができますが、注意するべき点が2つあります:
Move言語のビット演算は、整数演算とは異なる動作をするデータのビットレベル演算であるため、オーバーフローチェックが自動的に実行されません。
Moveの自動オーバーフローチェックが有効になると、関数の実行が例外をスローします。不適切に設計されている場合、プロジェクトビジネスが期待どおりに実行されなくなり、DoS攻撃が発生する可能性があります。
特権オブジェクトと特権関数呼び出しの受け渡しは、これらの機能とオブジェクトが資金のセキュリティに関与しているため、慎重に認証する必要があります。さらに、オブジェクトの種類をチェックして、それがプライベートオブジェクトか共有オブジェクトかを判断する必要があります。オブジェクトが誤ってプライベートオブジェクトから共有オブジェクトに変換された場合、不正なユーザーがオブジェクトにアクセスできる可能性があり、潜在的なセキュリティリスクが生じる可能性があります。
開発者は、Move Proverを使用して、プログラムが明示的なアクセス制御ポリシーを強制していることを検証できます。たとえば、std::offerでは、受取人がホワイトリストに含まれていない場合、関数が終了することがわかります。
トランザクションの順序依存性(TOD)は、契約の動作がトランザクションの実行順序によって異なる結果を持つことを指します。特に、マイナーや検証者がトランザクションの順序を選択できる分散環境では、フロントランニング攻撃などのリスクが生じる可能性があります。
SUIでは、トランザクションの順序に依存するように設計されている場合、MOVE契約はまだこの問題の影響を受ける可能性があります。
Suiチェーンでは、MoveスマートコントラクトのGas問題は、主に契約の実行に必要な計算およびストレージコストに現れます。契約の複雑さと状態変更の増加に伴い、Gas消費もそれに応じて上昇します。開発者は契約ロジックの最適化に注力し、不必要な計算や状態更新を減らしてユーザーの取引コストを削減し、特に契約における制御できない反復の状況を避ける必要があります。これはガスが不足してビジネスを正しく実行できない可能性があるためです。
現在、Moveでサポートされている数値型は符号なし整数であり、浮動小数点をサポートしていないため、除算操作中に小数部が切り捨てられ、不正確な計算結果をもたらす可能性があり、いくつかの重要なポリシーに影響を与え、収益損失を引き起こし、さらにはセキュリティ上の脆弱性となる可能性があります。
この問題に対する通常の緩和策は精度を高めることですが、最終結果が得られたときには精度を元に戻す必要があることに注意する必要があります。
Sui ブロックチェーン上の Move スマートコントラクトでは、オブジェクトの管理は、オブジェクトのライフサイクル、所有権、並行アクセス、シリアル化、およびストレージコストの複数の側面をカバーする重要な課題です。開発者は、リソースの浪費や状態の不整合を防ぐために、オブジェクトの作成、更新、破棄を正確に管理する必要があります。同時に、コントラクトロジックの合理的な設計により、オブジェクトの所有権とアクセス権を制御し、複数のユーザーが同じオブジェクトに同時にアクセスする場合の取り扱いは、スマートコントラクトの安全かつ効率的な運用を確保するための重要な要素です。
例えば、Sui DeFi プロジェクトでのライトニングローンの実装により、攻撃者はフラッシュローンを使用して価格操作などの大規模な資金攻撃を行うことができます。
一般的なAMMトークンスワッピング機能では、開発者はMove Proverを使用してトークンの数が正しく変更されたことを検証できます:
たとえば、貸出プロトコルは、入金、借入、引出しの一連の後に常に完全に保護されている必要があります。オンチェーン永続契約取引の注文が出された後に注文ブックがキャンセルされた場合、元帳に変更がない必要があり、開発者によって確認および検証する必要があります。
現在、SUIのDeFiとMemecoinsが盛んであり、取引量とTVLが爆発的な成長を見せています。その結果、ユーザーが避ける必要がある詐欺やスパム取引がますます増えています。
今年、Sui Ecoに登場したSuissesというエアドロップ詐欺により、多くのユーザーが資産を盗まれることになりました。ユーザーがSuissesのウェブサイト上のウォレットに接続し、Claimをクリックすると、ユーザーの資産の送金を要求する取引要求が表示されます。ユーザーが取引に署名すると、ウォレットのすべての資産が送金されていることに気づくでしょう。
SUIの特性のため、すべてが対象であり、ユーザーのウォレット内のトークンだけでなく、NFTも対象であり、ユーザーのDeFiマイニング、流動性の担保なども対象です。フィッシング攻撃が発生した場合、SUIエコシステム内のユーザーのすべての資産が一度にハッカーによって移動される可能性があります。
SUIエコシステムには、多くの偽のトークンやハニーポットが存在します。特に、SUIエコシステム内でユーザーがメメコインを取引する際には、誤って捕まる可能性があります。
以下のように、SUIでトークンを作成する際、ハッカーは一般のユーザーには区別できないほど人気のあるトークンや主要なトークンと同じアイコンや名前を定義することができます。したがって、ユーザーはトークンを購入する際にトークンのデータ形式が正しいかどうかを確認する必要があります。
さらに、ハッカーはトークン契約にDenyList機能を追加することもできます。これにより、トークンを購入したユーザーは売却できず、ユーザーに損失をもたらします。
MEVは最大抽出可能価値の略です。MEVは元々マイナー抽出可能価値を指し、BTCネットワークのマイナーはトランザクションを並べ替えることでブロック内で手数料を超える報酬を得ます。MEVはブロックチェーンネットワークの種類とは無関係です。MEVはすべてのブロックチェーンに存在し、SUIも例外ではありません。
SUIは、未完了の取引をノードに割り当てるためにナーワルをメモリプールとして使用し、コンセンサスエンジンとしてブルシャークアルゴリズムを使用して取引をソートします。
Suiの取引の注文ルールは、ガス料金に基づいています。さらに、Suiは並列と直列を組み合わせたトランザクション実行方式を採用しているため、同じAMMトランザクションプールの状態を共有するトランザクションは、直列でのみ実行できます。したがって、サンドイッチ攻撃/フロントランニングトランザクションは実行可能です。攻撃者は、より高いガス料金を通じてサンドイッチ攻撃を行うことができるため、DeFiトレーディングに参加しているユーザーは損失を被る可能性があります。