audit-prep-assistant について
セキュリティレビューに向けてコードベースを整えるチーム向けの準備スキルです。目標設定、コード整理、ビルド手順の確認、文書化、進捗チェックリストを支援します。
主な機能
- 01レビュー目標の設定
- 02静的解析結果のトリアージ
- 03テストカバレッジと不要コードの確認
- 04ビルド手順と対象範囲の整理
- 05監査文書とチェックリストの作成
活用シーン
- 01監査の1~2週間前のコードベース準備
- 02監査担当者向けの対象範囲とビルド手順の整理
- 03未解決の問題と準備作業の追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ trailofbits/ skills --skill audit-prep-assistantインストール後、Claude Code で/audit-prep-assistantを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlassets/trail-of-bits-mark.svg
詳細
監査準備アシスタント
目的
Trail of Bits のチェックリストを使用して、セキュリティレビューの準備を支援します。十分に準備されたコードベースは、レビューのプロセスをより円滑かつ効果的にします。
利用するタイミング:セキュリティ監査の1〜2週間前
準備のプロセス
ステップ1:レビューの目標を設定する
レビューで何を達成したいかを定めるのに役立ちます。
主な質問:
- 目指している全体的なセキュリティレベルはどの程度ですか?
- 最も懸念している領域はどこですか?
- 過去の監査で指摘された問題ですか?
- 複雑なコンポーネントですか?
- 不安定な部分ですか?
- プロジェクトにとって最悪のシナリオは何ですか?
評価チームに共有する目標を文書化します。
ステップ2:簡単な問題を解決する
静的解析を実行し、すぐに対処できる問題の修正を支援します。
静的解析を実行する:
Solidity の場合:
slither . --exclude-dependencies
Rust の場合:
dylint --all
Go の場合:
golangci-lint run
Go/Rust/C++ の場合:
# CodeQL and Semgrep checks
その後、次のことを行います:
- すべての指摘事項をトリアージする
- 簡単な問題の修正を支援する
- 受容したリスクを文書化する
テストカバレッジを向上させる:
- 現在のカバレッジを分析する
- テストされていないコードを特定する
- 新しいテストを提案する
- テストスイート全体を実行する
デッドコードを削除する:
- 未使用の関数/変数を見つける
- 未使用のライブラリを特定する
- 古くなった機能を見つける
- 整理を提案する
目標:静的解析レポートをクリーンにし、高いテストカバレッジを確保し、デッドコードを最小限に抑える
ステップ3:コードへのアクセス性を確保する
コードを明確にし、アクセスしやすくするのに役立ちます。
詳細なファイル一覧を用意する:
- 対象範囲内のすべてのファイルを一覧にする
- 対象範囲外のファイルを明示する
- フォルダー構造を説明する
- 依存関係を文書化する
ビルド手順を作成する:
- セットアップ手順を順を追って記述する
- 新しい環境でテストする
- 依存関係とバージョンを文書化する
- ビルドが成功することを確認する
安定版を固定する:
- レビュー対象のコミットハッシュを特定する
- 専用のブランチを作成する
- リリースバージョンにタグを付ける
- 依存関係を固定する
ボイラープレートを特定する:
- コピーしたコード/フォークしたコードを明示する
- 独自の変更箇所を強調する
- サードパーティのコードを文書化する
- 独自コードを中心にレビューする
ステップ4:ドキュメントを作成する
ドキュメントの作成を支援します。
フローチャートとシーケンス図:
- 主要なワークフローを図示する
- コンポーネント間の関係を示す
- データの流れを視覚化する
- 重要な経路を特定する
ユーザーストーリー:
- ユーザーの役割を定義する
- ユースケースを文書化する
- やり取りを説明する
- 期待事項を明確にする
オンチェーン/オフチェーンの前提条件:
- データ検証手順
- オラクル情報
- ブリッジに関する前提条件
- 信頼境界
アクターと権限:
- すべてのアクターを一覧にする
- 役割を文書化する
- 権限を定義する
- アクセス制御を図示する
外部開発者向けドキュメント:
- ドキュメントをコードにリンクする
- 同期を保つ
- アーキテクチャを説明する
- API を文書化する
関数のドキュメント:
- システムと関数の不変条件
- パラメーターの範囲(最小値/最大値)
- 算術式と精度損失
- 複雑なロジックの説明
- Solidity の NatSpec
用語集:
- ドメイン用語を定義する
- 略語を説明する
- 用語の一貫性を保つ
- ビジネスロジックの概念を説明する
動画による解説(任意):
- 複雑なワークフロー
- 懸念のある領域
- アーキテクチャの概要
作業内容
呼び出されると、次のことを行います:
- レビューの目標設定を支援する - 懸念事項を尋ね、文書化します
- 静的解析を実行する - プラットフォームに適したツールを実行します
- テストカバレッジを分析する - 不足箇所を特定し、改善策を提案します
- デッドコードを見つける - 未使用のコードやライブラリを検索します
- アクセス性を確認する - ビルド手順と対象範囲の明確さを確認します
- ドキュメントを作成する - フローチャート、ユーザーストーリー、用語集を作成します
- 準備チェックリストを作成する - 完了事項と残りの作業を追跡します
次の内容に応じて調整します:
- プラットフォーム(Solidity、Rust、Go など)
- 利用可能なツール
- 既存のドキュメント
- レビューまでの期間
合理化(省略しないでください)
| 合理化 | それが誤りである理由 | 必要なアクション |
|---|---|---|
| 「READMEにセットアップ方法が書かれているので、詳しいビルド手順は不要です」 | READMEは、監査担当者が持っていない前提知識を想定しています | 新しい環境でビルドをテストし、すべての依存関係のバージョンを記載します |
| 「静的解析はすでに実行したので、もう実行する必要はありません」 | 最後に実行してからコードベースが変更されています | 静的解析ツールを実行し、新しいレポートを生成します |
| 「テストカバレッジは十分そうです」 | 「十分そう」は測定されたカバレッジではありません | カバレッジツールを実行し、テストされていない具体的なコードパスを特定します |
| 「気にするほどのデッドコードはありません」 | デッドコードは手動レビューでは見つからないことがあります | 自動検出ツールを使って、未使用の関数や変数を見つけます |
| 「アーキテクチャは単純なので、図は必要ありません」 | テキストによる説明では視覚的なパターンを捉えきれません | 実際のフローチャートとシーケンス図を生成します |
| 「監査の直前にバージョンを固定できます」 | 直前の固定は、慌ただしい引き継ぎにつながります | 今すぐコミットハッシュを特定して記録し、専用ブランチを作成します |
| 「用語の意味は自明です」 | ドメイン知識は誰もが持っているわけではありません | ドメイン固有の用語をすべて含む包括的な用語集を作成します |
| 「この手順は後で行います」 | 手順は相互に依存しているため、省略すると抜け漏れが生じます | 4つのステップを順番にすべて完了し、チェックリストで進捗を管理します |
出力例
準備のサポートを終えると、次のような具体的な成果物が揃います。
=== AUDIT PREP PACKAGE ===
Project: DeFi DEX Protocol
Audit Date: March 15, 2024
Preparation Status: Complete
---
## REVIEW GOALS DOCUMENT
Security Objectives:
- Verify economic security of liquidity pool swaps
- Validate oracle manipulation resistance
- Assess flash loan attack vectors
Areas of Concern:
1. Complex AMM pricing calculation (src/SwapRouter.sol:89-156)
2. Multi-hop swap routing logic (src/Router.sol)
3. Oracle price aggregation (src/PriceOracle.sol:45-78)
Worst-Case Scenario:
- Flash loan attack drains liquidity pools via oracle manipulation
Questions for Auditors:
- Can the AMM pricing model produce negative slippage under edge cases?
- Is the slippage protection sufficient to prevent sandwich attacks?
- How resilient is the system to temporary oracle failures?
---
## STATIC ANALYSIS REPORT
Slither Scan Results:
✓ High: 0 issues
✓ Medium: 0 issues
⚠ Low: 2 issues (triaged - documented in TRIAGE.md)
ℹ Info: 5 issues (code style, acceptable)
Tool: slither . --exclude-dependencies
Date: March 1, 2024
Status: CLEAN (all critical issues resolved)
---
## TEST COVERAGE REPORT
Overall Coverage: 94%
- Statements: 1,245 / 1,321 (94%)
- Branches: 456 / 498 (92%)
- Functions: 89 / 92 (97%)
Uncovered Areas:
- Emergency pause admin functions (tested manually)
- Governance migration path (one-time use)
Command: forge coverage
Status: EXCELLENT
---
## CODE SCOPE
In-Scope Files (8):
✓ src/SwapRouter.sol (456 lines)
✓ src/LiquidityPool.sol (234 lines)
✓ src/PairFactory.sol (389 lines)
✓ src/PriceOracle.sol (167 lines)
✓ src/LiquidityManager.sol (298 lines)
✓ src/Governance.sol (201 lines)
✓ src/FlashLoan.sol (145 lines)
✓ src/RewardsDistributor.sol (178 lines)
Out-of-Scope:
- lib/ (OpenZeppelin, external dependencies)
- test/ (test contracts)
- scripts/ (deployment scripts)
Total In-Scope: 2,068 lines of Solidity
---
## BUILD INSTRUCTIONS
Prerequisites:
- Foundry 0.2.0+
- Node.js 18+
- Git
Setup:
```bash
git clone https://github.com/project/repo.git
cd repo
git checkout audit-march-2024 # Frozen branch
forge install
forge build
forge test
検証: ✓ エラーなしでビルドが成功 ✓ 127件のテストがすべて成功 ✓ コンパイラーからの警告なし
ドキュメント
生成された成果物: ✓ ARCHITECTURE.md - 図を含むシステム概要 ✓ USER_STORIES.md - 12件のユーザー操作フロー ✓ GLOSSARY.md - 34件のドメイン用語の定義 ✓ docs/diagrams/contract-interactions.png ✓ docs/diagrams/swap-flow.png ✓ docs/diagrams/state-machine.png
NatSpec のカバレッジ:公開関数の100%
デプロイ情報
ネットワーク:Ethereum Mainnet コミット:abc123def456(audit-march-2024 ブランチ) デプロイ済みコントラクト:
- SwapRouter: 0x1234...
- PriceOracle: 0x5678... [... など]
パッケージの監査準備完了 ✓ 次のステップ:Trail of Bits の評価チームと共有します
---
## What You'll Get
**Review Goals Document**:
- Security objectives
- Areas of concern
- Worst-case scenarios
- Questions for auditors
**Clean Codebase**:
- Triaged static analysis (or clean report)
- High test coverage
- No dead code
- Clear scope
**Accessibility Package**:
- File list with scope
- Build instructions
- Frozen commit/branch
- Boilerplate identified
**Documentation Suite**:
- Flowcharts and diagrams
- User stories
- Architecture docs
- Actor/privilege map
- Inline code comments
- Glossary
- Video walkthroughs (if created)
**Audit Prep Checklist**:
- [ ] Review goals documented
- [ ] Static analysis clean/triaged
- [ ] Test coverage >80%
- [ ] Dead code removed
- [ ] Build instructions verified
- [ ] Stable version frozen
- [ ] Flowcharts created
- [ ] User stories documented
- [ ] Assumptions documented
- [ ] Actors/privileges listed
- [ ] Function docs complete
- [ ] Glossary created
---
## Timeline
**2 weeks before audit**:
- Set review goals
- Run static analysis
- Start fixing issues
**1 week before audit**:
- Increase test coverage
- Remove dead code
- Freeze stable version
- Start documentation
**Few days before audit**:
- Complete documentation
- Verify build instructions
- Create final checklist
- Send package to auditors
---
## Ready to Prep
Let me know when you're ready and I'll help you prepare for your security review!