mcpField
A
audit-prep-assistant

audit-prep-assistant

github.com/trailofbitsセキュリティ7.9k5.8k 回インストール今日更新
リポジトリ

audit-prep-assistant について

セキュリティレビューに向けてコードベースを整えるチーム向けの準備スキルです。目標設定、コード整理、ビルド手順の確認、文書化、進捗チェックリストを支援します。

主な機能

  1. 01レビュー目標の設定
  2. 02静的解析結果のトリアージ
  3. 03テストカバレッジと不要コードの確認
  4. 04ビルド手順と対象範囲の整理
  5. 05監査文書とチェックリストの作成

活用シーン

  1. 01監査の1~2週間前のコードベース準備
  2. 02監査担当者向けの対象範囲とビルド手順の整理
  3. 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

用語集:

  • ドメイン用語を定義する
  • 略語を説明する
  • 用語の一貫性を保つ
  • ビジネスロジックの概念を説明する

動画による解説(任意):

  • 複雑なワークフロー
  • 懸念のある領域
  • アーキテクチャの概要

作業内容

呼び出されると、次のことを行います:

  1. レビューの目標設定を支援する - 懸念事項を尋ね、文書化します
  2. 静的解析を実行する - プラットフォームに適したツールを実行します
  3. テストカバレッジを分析する - 不足箇所を特定し、改善策を提案します
  4. デッドコードを見つける - 未使用のコードやライブラリを検索します
  5. アクセス性を確認する - ビルド手順と対象範囲の明確さを確認します
  6. ドキュメントを作成する - フローチャート、ユーザーストーリー、用語集を作成します
  7. 準備チェックリストを作成する - 完了事項と残りの作業を追跡します

次の内容に応じて調整します:

  • プラットフォーム(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!

コメント