中小企業のWebアプリケーションがサイバー攻撃の標的となるケースは年々増加しています。「うちは小さい会社だから狙われない」という認識は、もはや通用しません。しかし、専任のセキュリティエンジニアを雇用する余裕がない企業も多いのが現実です。そこで注目したいのが、Claude Codeを活用したセキュリティ監査です。OWASP Top 10に基づく脆弱性チェック、依存パッケージの安全性監査、シークレット情報の検出、SQLインジェクションやXSSの防止まで、専門知識がなくても実践可能なセキュリティ監査の方法を体系的に解説します。
セキュリティ監査におけるClaude Codeの位置づけ
AIセキュリティ監査のメリットと限界
Claude Codeをセキュリティ監査に活用する最大のメリットは、コードベース全体を短時間で網羅的にスキャンできる点です。人間の監査者は集中力に限界がありますが、AIは何千行ものコードを一貫した基準でチェックし続けることができます。
ただし、重要な前提として理解しておくべきことがあります。Claude Codeによるセキュリティ監査は、専門家による監査やペネトレーションテストの代替ではありません。あくまで「第一段階のスクリーニング」として位置づけるべきです。AIは既知のパターンに基づく脆弱性の検出には強いものの、ビジネスロジックに起因する脆弱性や、複数のコンポーネントが組み合わさって初めて顕在化する複合的な問題の発見には限界があります。
とはいえ、セキュリティ専門家のレビュー前にClaude Codeで基本的な問題を洗い出しておくことで、専門家はより高度な問題の発見に集中でき、監査全体の効率と品質が向上します。
監査の全体フレームワーク
Claude Codeを使ったセキュリティ監査は、以下の5つのフェーズで進めるのが効果的です。
- 全体スキャン:コードベース全体の概要を把握し、高リスクな箇所を特定する
- OWASP Top 10チェック:Webアプリケーションの代表的な脆弱性を体系的に確認する
- 依存パッケージ監査:サードパーティライブラリの安全性を評価する
- シークレット検出:コードに埋め込まれた機密情報を発見する
- 対策実装:発見された問題の修正コードを生成する
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でREST API開発|設計からテストまでAI駆動で高速構築
Claude Codeでコードレビュー|AIを活用した品質チェックとレビュー効率化
Claude Codeのコンテキスト管理術|大規模プロジェクトで精度を維持する方法
Claude Codeのカスタムスラッシュコマンド作成ガイド|独自ワークフローの自動化
Claude Codeでデータベース移行・マイグレーション|安全なスキーマ変更の実践
Claude Codeでデバッグを効率化|バグ修正・エラー解析の実践テクニック
Claude Codeでドキュメント自動生成|README・API仕様書・技術文書の効率的な作り方
Claude Codeでエラーハンドリング実装|堅牢なアプリケーションを構築するパターン集