Claude Codeでセキュリティ監査|脆弱性検出とコード安全性チェックの実践

kento_morota 13分で読めます

中小企業のWebアプリケーションがサイバー攻撃の標的となるケースは年々増加しています。「うちは小さい会社だから狙われない」という認識は、もはや通用しません。しかし、専任のセキュリティエンジニアを雇用する余裕がない企業も多いのが現実です。そこで注目したいのが、Claude Codeを活用したセキュリティ監査です。OWASP Top 10に基づく脆弱性チェック、依存パッケージの安全性監査、シークレット情報の検出、SQLインジェクションやXSSの防止まで、専門知識がなくても実践可能なセキュリティ監査の方法を体系的に解説します。

セキュリティ監査におけるClaude Codeの位置づけ

AIセキュリティ監査のメリットと限界

Claude Codeをセキュリティ監査に活用する最大のメリットは、コードベース全体を短時間で網羅的にスキャンできる点です。人間の監査者は集中力に限界がありますが、AIは何千行ものコードを一貫した基準でチェックし続けることができます。

ただし、重要な前提として理解しておくべきことがあります。Claude Codeによるセキュリティ監査は、専門家による監査やペネトレーションテストの代替ではありません。あくまで「第一段階のスクリーニング」として位置づけるべきです。AIは既知のパターンに基づく脆弱性の検出には強いものの、ビジネスロジックに起因する脆弱性や、複数のコンポーネントが組み合わさって初めて顕在化する複合的な問題の発見には限界があります。

とはいえ、セキュリティ専門家のレビュー前にClaude Codeで基本的な問題を洗い出しておくことで、専門家はより高度な問題の発見に集中でき、監査全体の効率と品質が向上します。

監査の全体フレームワーク

Claude Codeを使ったセキュリティ監査は、以下の5つのフェーズで進めるのが効果的です。

  1. 全体スキャン:コードベース全体の概要を把握し、高リスクな箇所を特定する
  2. OWASP Top 10チェック:Webアプリケーションの代表的な脆弱性を体系的に確認する
  3. 依存パッケージ監査:サードパーティライブラリの安全性を評価する
  4. シークレット検出:コードに埋め込まれた機密情報を発見する
  5. 対策実装:発見された問題の修正コードを生成する

OWASP Top 10に基づく脆弱性チェック

包括的なOWASPスキャンの実行

OWASP Top 10は、Webアプリケーションで最も頻繁に発見される脆弱性のカテゴリをまとめたものです。Claude Codeを使って、これらの脆弱性に対する網羅的なチェックを実施できます。

claude "このプロジェクトのコードベースに対して、
OWASP Top 10 (2021)に基づくセキュリティ監査を実施してください。

各カテゴリについて以下を報告してください:
A01 アクセス制御の不備
A02 暗号化の失敗
A03 インジェクション
A04 安全でない設計
A05 セキュリティの設定ミス
A06 脆弱で古いコンポーネント
A07 識別と認証の失敗
A08 ソフトウェアとデータの整合性の不備
A09 セキュリティログとモニタリングの不備
A10 SSRF(サーバーサイドリクエストフォージェリ)

各項目について:
- リスクレベル(High/Medium/Low/N/A)
- 該当するコード箇所(ファイル名と行番号)
- 具体的な問題の説明
- 推奨される修正方法"

拡張思考モードを有効にすることで、より深い分析が可能になります。複雑なコードの流れを追跡し、間接的な脆弱性も検出しやすくなります。

インジェクション攻撃の検出

SQLインジェクション、コマンドインジェクション、LDAPインジェクションなど、インジェクション系の脆弱性は今なお深刻な被害を引き起こしています。

claude "このプロジェクト内の全てのデータベースクエリを洗い出し、
以下の観点で監査してください:
- 文字列連結によるSQL組み立て(SQLインジェクションリスク)
- パラメータ化クエリの使用状況
- ORMを使用している場合のraw query利用箇所
- ユーザー入力がクエリに含まれる経路の追跡
問題が見つかった場合は、パラメータ化クエリへの修正コードも
提示してください。"

Claude Codeはコードの実行フローを追跡できるため、ユーザー入力がどの経路を通ってSQLクエリに到達するかを分析し、間接的なインジェクションリスクも検出できます。

XSS(クロスサイトスクリプティング)の検出

フロントエンド・バックエンドの両方でXSSリスクをチェックします。

claude "XSS脆弱性に関する監査を実施してください:
1. ユーザー入力を直接DOMに出力している箇所
2. dangerouslySetInnerHTML(React)の使用箇所
3. v-html(Vue)の使用箇所
4. テンプレートエンジンでのエスケープ無効化箇所
5. Content-Security-Policyヘッダーの設定状況
6. HTTPOnlyフラグなしのCookie設定
各箇所について、リスクレベルと修正提案を報告してください。"

依存パッケージのセキュリティ監査

脆弱なパッケージの特定

現代のアプリケーションは多数のサードパーティパッケージに依存しています。これらの依存関係に既知の脆弱性がないかを確認することは、セキュリティ対策の基本です。

claude "package.json(またはrequirements.txt)の依存パッケージについて、
セキュリティ観点で以下を分析してください:
- npm auditやpip-auditの結果を確認
- 非推奨(deprecated)のパッケージ
- 長期間メンテナンスされていないパッケージ
- ダウンロード数が極端に少ないパッケージ(サプライチェーンリスク)
- 不要に広い権限を要求するパッケージ
リスクの高いパッケージについては代替案も提示してください。"

サプライチェーン攻撃への対策

近年増加しているサプライチェーン攻撃に対する防御策もClaude Codeで検討できます。lock fileの整合性チェック、postinstallスクリプトの安全性確認、依存関係のツリー分析などを通じて、潜在的なリスクを洗い出します。

claude "以下のサプライチェーンセキュリティ対策の実施状況を
チェックしてください:
- package-lock.jsonまたはyarn.lockがコミットされているか
- postinstallスクリプトを持つパッケージの一覧と安全性
- 直接的な依存パッケージと推移的な依存パッケージの数
- typosquattingの可能性があるパッケージ名
- .npmrcまたは.yarnrcの設定の安全性"

シークレット情報の検出と管理

コード内のシークレット検出

APIキー、パスワード、トークンなどのシークレット情報がコードにハードコーディングされていないかを検出します。これは最も基本的かつ重要なセキュリティチェックの一つです。

claude "プロジェクト全体をスキャンし、以下のシークレット情報が
コードにハードコーディングされていないかチェックしてください:
- APIキー・アクセストークン
- データベース接続文字列
- パスワード
- 秘密鍵・証明書
- AWS/GCP/Azureの認証情報
- JWTシークレット
- Webhook URL
- SMTP認証情報

検出対象:ソースコード、設定ファイル、テストコード、
コメント、gitの履歴(直近のコミット)

検出された場合は、環境変数への移行方法も提示してください。"

.gitignoreとシークレット管理の改善

シークレットの漏洩を防ぐための設定も重要です。

claude ".gitignoreファイルを確認し、以下が適切に除外されているか
チェックしてください:
- .envファイル(.env, .env.local, .env.production)
- 秘密鍵ファイル(*.pem, *.key)
- IDE設定ファイル
- ビルド成果物
- ログファイル
不足している項目があれば.gitignoreを更新し、
既にコミットされている機密ファイルがあれば対処法を提示してください。"

Claude CodeのGitワークフローと組み合わせることで、シークレットのコミットを未然に防ぐ仕組みも構築できます。

セキュリティ重視のプロンプト設計

Claude.mdでのセキュリティルール定義

プロジェクトのClaude.mdにセキュリティルールを明記しておくことで、Claude Codeがコード生成やレビュー時に自動的にセキュリティを考慮するようになります。

# CLAUDE.md のセキュリティセクション例
## Security Rules
- ユーザー入力は必ずバリデーションとサニタイズを行う
- SQLクエリは必ずパラメータ化クエリを使用する
- パスワードはbcryptでハッシュ化する(平文保存は絶対禁止)
- APIキー・シークレットは環境変数で管理する
- CORSは必要最小限のオリジンのみ許可する
- レスポンスに内部エラーの詳細を含めない
- ファイルアップロードは種類とサイズを制限する
- 認証トークンはHTTPOnly Cookieで管理する

定期監査用のプロンプトテンプレート

セキュリティ監査は一度きりではなく、定期的に実施すべきです。カスタムスラッシュコマンドとして監査用のプロンプトを登録しておくと、ワンコマンドで包括的なセキュリティスキャンを実行できます。

# .claude/commands/security-audit.md
以下のセキュリティ監査を実施し、結果をレポート形式で出力してください。

## 1. 新規追加コードのセキュリティチェック
前回のリリースタグ以降に追加・変更されたコードを対象に、
OWASP Top 10の観点でチェック

## 2. 依存パッケージの脆弱性チェック
npm audit / pip-audit の結果を分析

## 3. シークレット検出
新規コミットにシークレットが含まれていないか確認

## 4. 認証・認可の変更確認
認証・認可に関連するコードの変更があった場合、
セキュリティへの影響を分析

## 出力形式
- 深刻度別のサマリー
- 各指摘の詳細(ファイル名、行番号、説明、修正案)
- 全体のセキュリティスコア(A-Fランク)

認証・認可のセキュリティチェック

認証機能の監査

認証機能はアプリケーションの最も重要なセキュリティ境界です。以下のポイントをClaude Codeでチェックします。

claude "認証関連のコードを分析し、以下を確認してください:
- パスワードのハッシュ化アルゴリズム(bcrypt/argon2推奨)
- ブルートフォース対策(レート制限、アカウントロック)
- セッション管理の安全性(セッションID再生成、タイムアウト)
- JWT使用時のアルゴリズム検証(alg:noneの拒否)
- パスワードリセット機能の安全性
- 多要素認証の実装状況
各項目について、現状の評価と改善提案を報告してください。"

認可(アクセス制御)の監査

認証だけでなく、認可の仕組みも重要です。特にAPIエンドポイントごとの権限チェックが適切に実装されているかを確認します。

claude "すべてのAPIエンドポイントを列挙し、
以下の観点で認可チェックを監査してください:
- 認証が不要なエンドポイントの妥当性
- ロールベースアクセス制御の実装状況
- IDOR(安全でない直接オブジェクト参照)のリスク
- 水平権限昇格の可能性(他ユーザーのデータへのアクセス)
- 垂直権限昇格の可能性(管理者機能へのアクセス)
保護が不十分なエンドポイントがあれば、
ミドルウェアによる保護の実装例も提示してください。"

セキュリティ監査の継続的な運用

CI/CDへの組み込み

セキュリティ監査を自動デプロイパイプラインに組み込むことで、脆弱性のあるコードがデプロイされることを防止できます。

# セキュリティゲートの例
name: Security Gate
on: [pull_request]
jobs:
  security-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Secret Detection
        run: |
          claude -p "変更されたファイルにシークレット情報が
          含まれていないか確認してください。
          検出された場合はexit code 1を返してください。"
      - name: Security Review
        run: |
          claude -p "変更されたコードのセキュリティレビューを行い、
          Critical判定の問題がある場合はexit code 1を返してください。"

監査レポートの管理と追跡

セキュリティ監査の結果は、発見された問題の修正状況を追跡するために適切に管理する必要があります。Claude Codeで生成した監査レポートをIssueとして登録し、対応状況を可視化する運用がおすすめです。

claude "セキュリティ監査の結果をGitHub Issue形式で出力してください。
各脆弱性につき1つのIssueとし、以下を含めてください:
- タイトル:[Security] 脆弱性の種類 - 対象コンポーネント
- ラベル:severity/high, severity/medium, severity/low
- 本文:脆弱性の説明、影響範囲、再現手順、修正案
- アサイニー提案:変更したコードの最終コミッター"

まとめ:中小企業でも実践できるセキュリティ監査

セキュリティ監査は大企業だけの話ではありません。Claude Codeを活用すれば、専任のセキュリティエンジニアがいなくても、一定レベルのセキュリティ監査を定期的に実施できます。OWASP Top 10に基づく体系的なチェック、依存パッケージの安全性評価、シークレット情報の検出、そしてSQLインジェクションやXSSといった代表的な脆弱性への対策を、AIの力で効率的に実施しましょう。

重要なのは、完璧を求めすぎないことです。セキュリティ対策に「完了」はありませんが、何もしないよりもClaude Codeで基本的なチェックを行う方が遥かに安全です。まずはプロジェクトの全体スキャンから始め、発見された問題を優先度順に対処していくことが、現実的かつ効果的なアプローチです。

継続的なセキュリティ監査のためには、Hooksによるコミット時チェックや、ヘッドレスモードを使ったCI/CD統合を検討してください。コードレビューのプロセスにセキュリティの観点を組み込むことで、脆弱性を早期に発見し、修正コストを最小限に抑えることができます。セキュリティは後からの対応よりも、開発プロセスに組み込むことが最も効果的です。

#Claude Code#セキュリティ#監査
共有:
無料メルマガ

週1回、最新の技術記事をお届け

AI・クラウド・開発の最新記事を毎週月曜にメールでお届けします。登録は無料、いつでも解除できます。

プライバシーポリシーに基づき管理します

AI活用のヒントをお探しですか?お気軽にご相談ください。

まずは話だけ聞いてもらう