secure-workflow-guide について
secure-workflow-guide は、Slither のスキャンや適用可能な機能の確認から、図の作成、プロパティの記録、手動分析まで、スマートコントラクトの5段階セキュリティレビューを案内します。プロジェクト固有の指摘と優先順位付きの対応計画を作成します。
主な機能
- 01Slither による脆弱性スキャンとトリアージ
- 02アップグレード可能性と ERC 準拠の確認
- 03コントラクトのセキュリティ図作成
- 04セキュリティプロパティとテストのガイド
- 05一般的なリスク領域の手動レビュー
- 06優先順位付きの指摘と対応計画
活用シーン
- 01コミット時のコントラクトレビュー
- 02デプロイ前のセキュリティ確認
- 03プロパティテストやシンボリック実行の計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ trailofbits/ skills --skill secure-workflow-guideインストール後、Claude Code で/secure-workflow-guideを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/trail-of-bits-mark.svgresources/EXAMPLE_REPORT.mdWORKFLOW_STEPS.md詳細
セキュアなワークフローガイド
目的
Trail of Bits のセキュアな開発ワークフローを案内します。開発全体を通じてスマートコントラクトのセキュリティを強化する、5 つのステップからなるプロセスです。
次の場合に使用してください:チェックインのたびに、デプロイ前に、またはセキュリティレビューが必要なとき
5 つのステップからなるワークフロー
以下を含むセキュリティワークフローを実施します。
ステップ 1:既知のセキュリティ問題を確認する
70 種類以上の検出器を内蔵した Slither を実行し、一般的な脆弱性を見つけます。
- 検出結果を深刻度別に分類する
- ファイル参照とともに各問題を説明する
- 修正方法を提案する
- 誤検知のトリアージを支援する
目標:問題のない Slither レポート、またはトリアージの記録
ステップ 2:特殊な機能を確認する
該当する機能を検出し、検証します。
- アップグレード可能性:slither-check-upgradeability(アップグレードに関する 17 のリスク)
- ERC 準拠:slither-check-erc(一般的な 6 つの仕様)
- トークン統合:token-integration-analyzer スキルを推奨
- セキュリティプロパティ:ERC20 向けの slither-prop
注:コードベースに該当するチェックのみを実行します。
ステップ 3:セキュリティを視覚的に検査する
セキュリティに関する 3 つの図を生成します。
- 継承グラフ:シャドーイングと C3 線形化の問題を特定する
- 関数の概要:可視性とアクセス制御を示す
- 変数と認可:誰が状態変数を書き込めるかをマッピングする
各図を確認し、セキュリティ上の懸念がないか検討します。
ステップ 4:セキュリティプロパティを文書化する
重要なセキュリティプロパティの文書化を支援します。
- 状態遷移と不変条件
- アクセス制御の要件
- 算術演算の制約と精度
- 外部とのやり取りの安全性
- 標準への準拠
次に、テストを設定します。
- Echidna:不変条件を用いたプロパティベースのファジング
- Manticore:シンボリック実行による形式検証
- カスタム Slither チェック:プロジェクト固有のビジネスロジック
注:セキュリティにとって最も重要な作業です。
ステップ 5:手動レビューの対象領域
自動化ツールでは検出できない領域を分析します。
- プライバシー:オンチェーンの秘密情報、コミット・リビールの必要性
- フロントランニング:スリッページ保護、実行順序のリスク、MEV
- 暗号技術:弱い乱数、署名の問題、ハッシュの衝突
- DeFi との連携:オラクル操作、フラッシュローン、プロトコルの前提条件
コードベースでこれらのパターンを検索し、リスクを指摘します。
各ステップの詳しい手順、コマンド、説明については、WORKFLOW_STEPS.md を参照してください。
作業の進め方
呼び出されると、次の作業を行います。
- コードベースを調査して構成を把握する
- ステップ 1 を実行:Slither によるセキュリティスキャン
- ステップ 2 を検出して実行:特殊な機能のチェック(該当するもののみ)
- ステップ 3 を生成:セキュリティに関する図
- ステップ 4 を案内:セキュリティプロパティの文書化
- ステップ 5 を分析:手動レビューの対象領域
- アクションプランを提示:優先順位を付けた修正と次のステップ
次の要素に応じて調整します。
- インストール済みのツール
- プロジェクトへの適用可否
- 開発の進行状況
正当化(省略しないでください)
| 正当化 | なぜ誤りなのか | 必要な対応 |
|---|---|---|
| 「Slitherが使えないので、手動で確認します」 | 手動確認では70以上の検出パターンを見落とします | Slitherをインストールして実行するか、実行できない理由を記録してください |
| 「図を生成できないので、アーキテクチャを説明します」 | 説明は視覚的ではありません。図を使えば、文章では見落とすパターンを把握できます | slither --print コマンドを実行し、実際の図を生成してください |
| 「アップグレードは検出されなかったので、アップグレード可能性のチェックは省略します」 | プロキシやアップグレードは、明示されていない、または計画段階であることがよくあります | Step 2のチェックを省略する前に、コードベースを検索して確認してください |
| 「トークンではないので、ERCのチェックは省略します」 | 明白なERC継承がなくても、トークンが統合されている場合があります | 省略する前に、トークンとの連携、送金、残高を確認してください |
| 「今はEchidnaをセットアップできないので、後で提案します」 | プロパティベーステストはStep 4の必須項目であり、任意ではありません | 今すぐプロパティを記録し、ファジングのインフラストラクチャをセットアップしてください |
| 「DeFiとの連携はないので、オラクルやフラッシュローンのチェックは省略します」 | DeFiのパターンは予想外の箇所(価格フィードや外部呼び出しなど)に現れます | Step 5の手動レビューを完了し、コードベース内で該当するパターンを検索してください |
| 「このStepは自分のプロジェクトには該当しません」 | 検証せずに「該当なし」と判断すると、脆弱性を見落とします | 該当なしと判断する前に、コードベースを明示的に検索して確認してください |
| 「ワークフローを実行する代わりに、一般的なセキュリティのアドバイスをします」 | 一般的なアドバイスは具体的な対策につながりません。ワークフローなら具体的な問題を見つけられます | 5つのStepをすべて実行し、ファイル名と行番号を示したプロジェクト固有の調査結果を作成してください |
出力例
ワークフローの完了後、以下を網羅した包括的なセキュリティレポートをお渡しします。
- Step 1:重大度、ファイル参照、修正の推奨事項を含むSlitherの検出結果
- Step 2:特別な機能の検証結果(アップグレード可能性、ERC準拠など)
- Step 3:継承、関数、状態変数の認可を分析する図
- Step 4:記録されたセキュリティプロパティとテスト環境(Echidna/Manticore)
- Step 5:手動レビューの調査結果(プライバシー、フロントランニング、暗号技術、DeFiのリスク)
- アクションプラン:工数の見積もりを含む、重大・高・中優先度のタスク
- ワークフローのチェックリスト:5つすべてのStepの進捗状況
ワークフローの完全なレポート例については、EXAMPLE_REPORT.mdを参照してください。
得られるもの
セキュリティレポート:
- 重大度と修正方法を含むSlitherの検出結果
- 特別な機能の検証結果
- 図(PNG/PDF)
- 手動レビューの調査結果
アクションプラン:
- 直ちに修正すべき重大な問題
- 記録すべきセキュリティプロパティ
- セットアップすべきテスト(Echidna/Manticore)
- レビューすべき手動確認項目
ワークフローのチェックリスト:
- Slitherのレポートに問題がない
- 特別な機能の検証が完了している
- 図による確認が完了している
- プロパティを記録した
- 手動レビューが完了している
サポート
Trail of Bitsのリソース:
- オフィスアワー:毎週火曜日(スケジュール)
- Empire Hacking Slack:#cryticチャンネルと#ethereumチャンネル
その他のセキュリティ情報:
- セキュリティはスマートコントラクトだけの問題ではないことを忘れないでください
- オフチェーンのセキュリティ(オーナーキー、インフラストラクチャ)も同様に重要です
開始する準備ができたら
準備ができたらお知らせください。コードベースを使ってワークフローを進めます。