安全な移動
Aptos Network は Move スマートコントラクト言語を基盤のプログラミングモデルとして使用しています。Move は安全なスマートコントラクトのエコシステムのために設計されていますが、Move 自体の誤った実装はこれらの特性を脅かす可能性があります。Aptos Labs では、コミュニティと協力して Move をできる限り安全にすることに取り組んでいます。
私たちは、正しいスマートコントラクトを書くためのツール(例えば、主に Aptos によって開発された Move Prover)や、Move 仮想マシンなどのランタイムコアコンポーネントの正確性に投資しています。本記事では、監査、バグバウンティ、ファジング、および基盤実装のセキュリティ強化を通じて、どのようにパートナーと協力しているかを説明します。
私たちが保護したいものは何ですか?
Move の安全性は、いくつかの基本的な特性に基づいています。これらの特性は、Move 実行エンジンで使用されるバイトコードに基づいて定義されており、ソース言語に依存しません:
- タイプ安全性:各値には一意で偽造不可能なタイプがあります。例えば、タイプが「address」の値を取得して、タイプが「signer」の安全関連トークンに変換することは不可能です。
- モジュール化カプセル化:ストレージ内のリソースは、それらのリソースを宣言したモジュール内のコードによってのみ操作できます。マッチする可視性を持つ関数のみがモジュール間で呼び出すことができます。
- 所有権とライフサイクル:Move の能力システムは、値タイプに対して適切な能力が宣言されていない限り、コピー、削除、ストレージ、またはキーとして使用することを強制します。
- 参照安全性:参照は、それらが指す値よりも長生きしません。可変参照は専有的であるため、エイリアスを使用することは不可能です。
Move 仮想マシンの従来のアーキテクチャは、上記の特性の検証を(バイトコード)検証器に委任しています。以下の図を参照してください:
私たちが興味を持っているのは次の質問です:バイトコード検証器は完全ですか?すべてのプログラムが上記のすべての特性を満たすことを保証しますか?これは重要です。なぜなら、上記のいずれかの特性に違反すると、資産の損失を引き起こす可能性があるからです。与えられた Move バイトコードプログラムは、実行エンジンをクラッシュさせる可能性がありますか?状態機械の複製において、すべてのノードが同じプログラムを実行するため、ネットワークを停止させることができます。与えられたプログラムは、実行エンジンがリソース(メモリまたは時間)を枯渇させる原因になりますか?これは DoS 攻撃に利用され、ネットワークを遅くしたり、一時停止させたりすることができます。
私たちはどのように実現していますか?
無エラーコードを開発するための核心は、厳格なソフトウェア工学の実践と正しいツールの組み合わせです。Aptos では、厳格な強制コードレビューと継続的なテストおよび統合プロセスに従い、Rust エコシステムのベストプラクティスを組み合わせています。これらの従来の側面に加えて、Move の安全性がその設計要件を満たすことを保証するために、以下の措置を講じています。
監査とコンサルティング
業界で最も信頼されているブロックチェーンネットワークの信頼性を測る手段の一つは監査です。Aptos Labs では、Certik(レポート)および Halborn と契約を結び、Move 仮想マシンの監査を実施しました。いくつかの重要な問題が発見され、そのうちの一つはタイプ安全性のカテゴリに属します。
外部監査に加えて、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 コードは、関連するポイントで「Arbitrary」Rust ファジング機能を実装するように変更され、「cargo fuzz」を使用してバイトコードモジュールを動的に生成および検証できるようになりました。私たちはこれらのファジングターゲットを実行するための継続的な作業を行っています。
冗長性
追加のセキュリティ保証を実現する方法の一つは、冗長性を通じてです。私たちは Move VM にいわゆる偏執モードを追加し、実行時にタイプ安全性および上記の他のルールを強制します。バイトコード検証器がコードがシステムに入るときにこれらの特性をチェックしますが、偏執モードはバイトコード実行中に同じチェックを再度検証します。偏執モードは Move コミュニティ内で広く議論され、Aptos エンジニアが設計を主導しました。詳細については、この PR(最終版)およびこの PR(中間版)を参照してください。次のステップは何ですか?
Aptos Labs では、Move をできる限り安全にすることに取り組んでおり、この分野に多大な投資を行っています。ここでは、私たちと私たちのパートナーが監査、バグバウンティ、ファジング、および強化に関して行っている継続的な努力を説明しました。今後もこの分野への投資を続ける予定です。私たちは引き続きバグバウンティプログラムを提供し、信頼できるセキュリティ監査人と協力し、ファジング技術などのセキュリティ強化ツールの開発を推進していきます。