固定移動

Dec 13 2022
Aptos Labs と OtterSec による Aptos Network は、基礎となるプログラミング モデルとして Move スマート コントラクト言語を使用します。Move は安全なスマート コントラクトのエコシステム向けに設計されていますが、Move 自体の実装に問題があると、これらのプロパティが危険にさらされる可能性があります。

Aptos Labs および OtterSec による

Aptos Network は、Move スマート コントラクト言語を基礎となるプログラミング モデルとして使用します。Move は安全なスマート コントラクトのエコシステム向けに設計されていますが、Move 自体の実装に問題があると、これらのプロパティが危険にさらされる可能性があります。Aptos Labs では、コミュニティと共に Move を可能な限り安全なものにすることに取り組んでいます。私たちは、正しいスマート コントラクトを作成するためのツール (主に Aptos によって開発された Move Prover など) と、Move Virtual Machine などのランタイム コア コンポーネントの正確性に投資しています。この記事では、パートナーと協力して、基盤となる実装の監査、バグ報奨金、ファジング、およびセキュリティ強化を通じて後者を達成する方法について説明します。

私たちは何を確保していますか?

Move のセキュリティは、いくつかの基本的なプロパティに基づいています。これらのプロパティは、Move 実行エンジンが消費するバイトコードに関して定義され、ソース言語から独立しています。

  • 型の安全性: 各値には一意で偽造できない型があります。たとえば、「アドレス」タイプの値を取得して、それを「署名者」タイプのセキュリティ関連トークンに変換することはできません。
  • モジュールのカプセル化: ストレージ内のリソースは、それらのリソースを宣言しているモジュール内のコードからのみ操作できます。可視性が一致する関数のみをクロスモジュールと呼ぶことができます。
  • 所有権とライフタイム: Move のアビリティ システムは、対応するアビリティが値の型に対して宣言されていない限り、値をコピー、削除、保存、またはキーとして使用しないことを強制します。
  • 参照の安全性: 参照は、それらが指している値よりも長く存続しません。変更可能な参照は排他的に所有されているため、エイリアシングは不可能です。

私たちが関心を持っている質問は次のとおりです。

  1. バイトコード検証ツールは完全であり、すべてのプログラムで上記のすべてのプロパティが満たされることを保証しますか? 上記のプロパティのいずれかに違反すると、資産が失われる可能性があるため、これは重要です。
  2. 特定の Move バイトコード プログラムが実行エンジンをクラッシュさせる可能性はありますか? 複製されたステート マシンでは、すべてのノードが同じプログラムを実行するため、これを使用してネットワークを停止できます。
  3. 特定のプログラムが実行エンジンのリソース (メモリまたは時間) を使い果たす可能性はありますか? これは、ネットワークを遅くしたり中断したりする DoS 攻撃に悪用される可能性があります。

バグのないコードを開発するための中核となるのは、適切なツールと組み合わせた、規律あるソフトウェア エンジニアリングの実践です。Aptos では、Rust エコシステムのベスト プラクティスと組み合わせて、必須のコード レビューと継続的なテストと統合の厳格なプロセスに従っています。これらの従来の側面に加えて、Move を設計どおりに安全に保つために、次の測定も適用しています。

監査とコンサルティング

ブロックチェーン ネットワークに対する信頼を得るために業界で最も評価されている測定法の 1 つは、監査です。Aptos Labs では、Certik (レポート) と Holburn に Move Virtual マシンの監査を依頼しました。複数の重大な問題が見つかりました。そのうちの 1 つはタイプ セーフのカテゴリにありました。

外部監査に加えて、Aptos Labs は、バイトコード検証に焦点を当てたコミュニティ監査の取り組みを主導し、組織しました。Mysten Labs、Starcoin、および MoveBit や OtterSec などの監査会社のエンジニアは、この取り組みのために Aptos エンジニアとチームを組み、約 6 人週間の監査時間を費やしました。この結果は、この監査中に作成された数十のドキュメントを参照して、このスプレッドシートに取り込まれます。この監査の取り組みにより、Aptos がメインネットにヒットする前に複数の問題が発見され、対処されました。

最後になりましたが、私たちはOtterSecと緊密に協力しています。OtterSec チームは手動でコード レビューを行い、さまざまなターゲット向けのファジング テクノロジを開発し、Move VM と Aptos フレームワーク コードの両方で複数の重大な問題を特定しました。また、Move VM に冗長な多層防御ロジックを追加する取り組みも主導し (以下を参照)、さらなる資金損失の脆弱性を軽減するための進行中の設計作業に影響を与えました。

バグ報奨金

Aptos Labs はバグ報奨金プログラムを運営しています。資産の損失につながる重大なバグには、最大 1,000,000 ドルの報奨金が提供されます。同様に、クラッシュ バグには最大 $100,000 の報酬が与えられます。

報奨金プログラムでは、バグを見つけて修正するために、有能なセキュリティ研究者のセットと緊密に協力してきました。これらのバグのいくつかは重大なカテゴリに属していましたが、他のバグはファザーを使用して発見されたクラッシュでした。

Aptos Labs はバグ報奨金での約束を守り、かなりの報奨金が支払われました。さらに、Aptos Labs は報奨金プログラムを通じて出会ったホワイトハットの専門知識を引き続き活用しており、このコミュニティと協力し続けるつもりです。

ファジング

報奨金プログラムは、私たちが Aptos Labs でのファジングに投資する動機となりました。Move VM コードは、関連するポイントで「任意の」Rust ファジング トレイトを実装するように変更されているため、「cargo fuzz」を使用してバイトコード モジュールを動的に生成および検証できます。

冗長性

セキュリティをさらに保証する 1 つの方法は、冗長性を利用することです。Move VM にいわゆるパラノイド モードを追加しました。これにより、実行時にタイプ セーフと上記のその他のルールが適用されます。バイトコード検証ツールは、コードがシステムに入るときにそのようなプロパティを既にチェックしていますが、パラノイド モードでは、バイトコードの実行時に同じチェックを再度検証します。パラノイド モードは、Move コミュニティ内で広く議論され、Aptos のエンジニアが設計を主導しました。詳細については、この PR (最終バージョン)とこの PR (中間バージョン) を参照してください。

次は何ですか?

Aptos Labs では、Move を可能な限り安全にすることに取り組んでおり、この分野に多額の投資を行っています。ここでは、監査、バグ報奨金、ファジング、強化に関する、私たちとパートナーによる継続的な取り組みについて説明しました。今後も、この分野への投資を継続する予定です。今後もバグ報奨金プログラムを提供し、定評のあるセキュリティ監査人と連携し、ファジング技術などのセキュリティ強化ツールの開発を推進していきます。