S2. ポリシー、手続き、コード管理 (Policies, Procedures, and Code Management)

管理目標

セキュアコーディングプラクティス、徹底したコードレビュー、包括的なテストを推進するために開発ポリシーと手続きが整備されていることを確認します。その目的は、脆弱性を防ぎ、スマートコントラクトコードの保守性と明確性を高めることです。

S2.1 開発ポリシー (Development Policies)

管理目標

セキュアコーディング標準とレビュープロセスを確立して実施し、脆弱性を最小限に抑え、開発ライフサイクル全体を通じてベストプラクティスが遵守されるようにします。

S2.1.A セキュアコーディング標準 (Secure Coding Standards)

参照コード
要件
L1
L2
L3
SWE

S2.1.A1

開発者が古いバージョンのコンパイラを使用しておらず、最新のコンパイラ推奨に準拠していることを確認します。

S2.1.A2

コード内で非推奨関数が使用されていないことを検証します。

S2.1.B コードレビュープロセス (Code Review Processes)

参照コード
要件
L1
L2
L3
SWE

S2.1.B1

すべてのスマートコントラクトのコード変更が、メインブランチにマージする前に、スマートコントラクトセキュリティに精通した二人の独立した開発者によってレビューされていることを検証します。

S2.1.B2

スマートコントラクトのコードレビューには、スマートコントラクト専用に設計された自動静的解析ツールを使用し、フラグが立てられた問題はすべて、マージ前に対処されるか文書化されていることを確認します。

S2.1.B3

スマートコントラクトのコードレビュープロセスには、再入攻撃、整数オーバーフロー、不適切なアクセス制御などの脆弱性の徹底的な分析を含むことをチェックします。

S2.1.B4

コードレビューには、安全な数学ライブラリやセキュアデザインパターンの使用など、スマートコントラクト開発標準への準拠を含むことを検証します。

S2.1.B5

コードレビューには一般的なスマートコントラクトの脆弱性のチェックリストを組み込んでいること、およびコードが承認される前にそのリストの各項目が対処されていることを確認します。

S2.2 コードの明確性 (Code Clarity)

管理目標

徹底した文書化、論理的な構造、一貫したコーディング標準の準拠を通じてコードの明確性と保守性を促進し、開発者の理解と修正を容易にします。

S2.2.A 可読性と文書化 (Readability and Documentation)

参照コード
要件
L1
L2
L3
SWE

S2.2.A1

スマートコントラクトのすべての機能と重要なコードブロックが、その目的とロジックを説明する明確なコメントとともに文書化されていることを確認します。

S2.2.A2

スマートコントラクトの構造が論理的で、他の開発者が理解しやすく修正しやすいように整理されていることを検証します。

S2.2.A3

スマートコントラクトのドキュメントには、その機能の高レベルの概要、使用方法、他のコントラクトやシステムとの依存関係を含むことをチェックします。

S2.2.A4

スマートコントラクトのコードが、変数、関数、コントラクト名の一貫した命名規則に従っていて、可読性と保守性を向上していることを確認します。

S2.2.B コードリンティングとフォーマッティングツール (Code Linting and Formatting Tools)

参照コード
要件
L1
L2
L3
SWE

S2.2.B1

スマートコントラクト専用のコードリンティングツールが開発ワークフローに統合され、コーディング標準とスタイルガイドラインを適用していることを確認します。

S2.2.B2

すべてのスマートコントラクトコードが、リポジトリにコミットされる前に、エラーや警告なしでリンティングチェックに合格することを検証します。

S2.2.B3

スマートコントラクトコードにおいて、一貫したインデント、スペース、改行を維持するために、コードフォーマッティングツールが適用されていることをチェックします。

S2.2.B4

リンティングとフォーマッティングの設定が定期的にレビューされて更新され、スマートコントラクト開発における新しいベストプラクティスや新たな問題を反映していることを確認します。

S2.2.B5

リンティングツールとフォーマッティングツールが開発環境と互換性があり、スマートコントラクトコードに意図しない変更を加えないことを検証します。

S2.3 テストカバレッジ (Test Coverage)

管理目標

単体テスト、統合テスト、セキュリティ固有のテストを含むスマートコントラクトの包括的なテストカバレッジを確保し、脆弱性を特定して、開発全体を通じてコード品質を維持します。

S2.3.A 単体テスト、統合テスト、自動テスト (Unit Tests, Integration Tests, Automated Testing)

参照コード
要件
L1
L2
L3
SWE

S2.3.A1

スマートコントラクトのすべての重要な関数が、典型的なケースとエッジケースの両方をカバーする包括的な単体テストを持つことを検証します。

S2.3.A2

スマートコントラクトと他のコントラクトや外部システムとの間のインタラクションを検証するための統合テストが実装されていることを確認します。

S2.3.A3

自動テストが各コードコミットで実行されるようにセットアップされており、レグレッションを検出し、スマートコントラクトの継続的な品質を維持していることをチェックします。

S2.3.A4

テストカバレッジツールを使用して、スマートコントラクトのコードカバレッジを監視し、高い割合で達成していることを検証します。

S2.3.A5

テストフレームワークが外部依存関係のモックとシミュレーションをサポートし、スマートコントラクトの特定の機能を効果的に分離してテストしていることを確認します。

S2.3.B セキュリティ固有のテスト (Security-Specific Tests)

参照コード
要件
L1
L2
L3
SWE

S2.3.B1

スマートコントラクトのテストスイートには、再入可能性、整数オーバーフロー、不適切なアクセス制御などの脆弱性を特定するために設計されたセキュリティ固有のテストを含むことを検証します。

S2.3.B2

セキュリティテストがスマートコントラクト内のアクセス制御とパーミッションの適切な実装を検証していることを確認します。

S2.3.B3

さまざまな入力シナリオのもとでの予期しない動作や潜在的なセキュリティ問題を発見するためにファズテストが実行されていることをチェックします。

S2.3.B4

無効な入力やエッジケースに対応するスマートコントラクトのレスポンスが徹底的にテストされ、堅牢なセキュリティ対策が講じられていることを検証します。

Last updated