📚 この記事は「Claude Code 完全攻略シリーズ」の Episode 8 です。
ソフトウェア開発において、セキュリティ対策は「あとから追加する」ものではなく、コーディングの段階から組み込むべきものです。しかし、SES(客先常駐)の現場では、納期のプレッシャーや人員不足から、セキュリティレビューが形骸化しているケースが少なくありません。
Anthropic社のCLIツール「Claude Code」を活用すれば、コードベース全体をスキャンして脆弱性を検出し、修正案の提示からセキュアなコードへの書き換えまでを一気通貫で行えます。本記事では、Claude Codeを使ったセキュリティ対策の実践手法を、具体的なプロンプト例とともに解説します。
なぜClaude Codeがセキュリティ対策に有効なのか
従来のセキュリティスキャナー(SonarQube、Snykなど)はパターンマッチングによる検出が中心です。一方、Claude Codeはコードの意味(セマンティクス)を理解した上で脆弱性を検出できるため、従来ツールでは見逃されがちなロジック上の脆弱性にも対応できます。
従来ツールとの違い
| 項目 | 従来のSASTツール | Claude Code |
|---|---|---|
| 検出方式 | パターンマッチング | セマンティクス理解 |
| ロジック脆弱性 | △(検出困難) | ○(文脈理解で検出) |
| 修正提案 | 一般的なガイドライン | プロジェクト固有の修正コード |
| 導入コスト | 高い(設定・チューニング必要) | 低い(CLIから即実行) |
| 誤検知率 | 高め | 低め(コンテキスト考慮) |
Claude Codeの基本操作やセットアップを理解している前提で進めますので、まだの方は先にそちらをご確認ください。

OWASP Top 10に基づく脆弱性検出の実践
OWASP Top 10は、Webアプリケーションにおける最も重大なセキュリティリスクをまとめたリストです。Claude Codeを使って、これらの代表的な脆弱性を効率的に検出する方法を見ていきましょう。
SQLインジェクションの検出と修正
SQLインジェクションは、ユーザー入力がSQLクエリに直接埋め込まれることで発生する脆弱性です。Claude Codeで検出するには、以下のようなプロンプトが効果的です。
プロジェクト全体をスキャンして、SQLインジェクションの脆弱性がある箇所を
すべてリストアップしてください。特に以下を重点的にチェックしてください:
- 文字列連結でSQLクエリを構築している箇所
- ユーザー入力をエスケープせずに使用している箇所
- プリペアドステートメントを使っていないDAO/Repository層
各箇所について、修正後のコードも提示してください。
Claude Codeはプロジェクト全体のファイルを読み取り、DAOやリポジトリ層を横断的にスキャンします。プロンプト設計のコツで解説した「具体的な検出条件の列挙」がここでも有効です。
XSS(クロスサイトスクリプティング)の検出
フロントエンドのコードにおけるXSS脆弱性も、Claude Codeで効率的に検出できます。
Reactコンポーネントおよびテンプレートファイルをスキャンして、
XSS脆弱性の可能性がある箇所を検出してください:
- dangerouslySetInnerHTML の使用箇所
- v-html ディレクティブの使用箇所
- ユーザー入力を直接DOMに挿入している箇所
- URLパラメータをサニタイズせずに表示している箇所
認証・認可の不備チェック
APIエンドポイントの認証・認可チェックの漏れは、重大なセキュリティインシデントにつながります。
すべてのAPIエンドポイント(ルーター/コントローラー)を確認し、
以下の観点でセキュリティレビューしてください:
1. 認証ミドルウェアが適用されていないエンドポイント
2. 認可チェック(ロールベースアクセス制御)が欠落している箇所
3. レートリミットが設定されていないエンドポイント
4. CSRF対策が不十分な状態変更系エンドポイント
セキュアコーディングの自動化
脆弱性の「検出」だけでなく、最初からセキュアなコードを書くためのワークフローをClaude Codeで構築できます。
AGENTS.mdにセキュリティルールを組み込む
チーム開発での活用パターンで紹介した AGENTS.md に、セキュリティルールを記述しておくと、Claude Codeがコード生成時に自動的にセキュリティベストプラクティスを適用します。
# AGENTS.md(セキュリティセクション例)
## セキュリティルール
- SQLクエリは必ずプリペアドステートメントを使用すること
- ユーザー入力は必ずバリデーション+サニタイズを行うこと
- パスワードはbcrypt(コストファクター12以上)でハッシュ化すること
- APIレスポンスに内部エラーの詳細を含めないこと
- 機密情報(APIキー、トークン)をログに出力しないこと
- CORSは許可するオリジンを明示的に指定すること
このように事前にルールを定義しておけば、Claude Codeが新しいコードを生成する際に、これらのルールを自動的に遵守します。
セキュリティ観点でのコードレビュー自動化
CI/CDパイプラインへの組み込みと組み合わせることで、PRごとにセキュリティレビューを自動実行できます。
# CI/CDでのセキュリティレビュー例
claude -p "このPRの変更内容をセキュリティ観点でレビューしてください。
以下の項目を重点チェック:
- 新しい入力バリデーションの妥当性
- 認証・認可の変更による影響
- 機密情報のハードコーディング
- 依存パッケージの既知の脆弱性
問題があれば重要度(Critical/High/Medium/Low)付きで報告してください。" \
--output-format json
依存パッケージのセキュリティ監査
サプライチェーン攻撃のリスクが高まる中、依存パッケージの監査も重要です。Claude Codeは package.json や requirements.txt を読み取り、既知の脆弱性情報と照合できます。
package.jsonとpackage-lock.jsonを分析して、以下を報告してください:
1. 既知のCVEが報告されている依存パッケージ
2. メンテナンスが停止している(1年以上更新なし)パッケージ
3. 不要と思われる依存パッケージ(使用箇所がないもの)
4. より安全な代替パッケージがある場合はその提案
テスト自動生成の手法と組み合わせて、セキュリティテストも同時に生成すると、より堅牢なコードベースを維持できます。
SES現場でのセキュリティレビュー実践パターン
パターン1: 新規参画時のセキュリティ診断
SESエンジニアが新しいプロジェクトに参画した際、既存コードのセキュリティ状態を素早く把握するのにClaude Codeが役立ちます。
このプロジェクト全体のセキュリティ状態を診断してください。
以下の形式でレポートを作成してください:
## セキュリティ診断レポート
### 1. 重大な脆弱性(即座に対応が必要)
### 2. 中程度のリスク(早期対応推奨)
### 3. 軽微な改善点
### 4. セキュリティのベストプラクティスへの準拠状況
### 5. 推奨アクションアイテム(優先度順)
このレポートをチームリーダーに共有すれば、プロジェクト参画直後でも即座に価値を発揮できます。デバッグガイドでも紹介した「プロジェクト全体把握」のアプローチと同様の手法です。
パターン2: リリース前セキュリティチェックリスト
リリース直前のセキュリティチェックは、手動で行うと見落としが発生しがちです。Claude Codeで自動化しましょう。
リリース前セキュリティチェックを実行してください:
□ ハードコードされた認証情報・APIキーがないか
□ デバッグ用コード(console.log等)が残っていないか
□ エラーハンドリングで内部情報が露出していないか
□ HTTPSが強制されているか
□ セキュリティヘッダー(CSP, HSTS等)が設定されているか
□ ファイルアップロード機能にサイズ・型制限があるか
□ セッション管理が適切か(タイムアウト、再生成等)
各項目の結果を ✅/❌ で報告し、❌の項目は修正コードも提示してください。
パターン3: インシデント対応の迅速化
セキュリティインシデントが発生した際、影響範囲の特定にClaude Codeを活用できます。
[脆弱性の詳細]が報告されました。
1. この脆弱性の影響を受けるコード箇所をすべて特定してください
2. 攻撃が成功した場合の影響範囲を分析してください
3. 緊急のホットフィックスコードを生成してください
4. 再発防止のための恒久対策を提案してください
セキュリティテストの自動生成
テスト自動生成ガイドで紹介した手法を応用し、セキュリティに特化したテストを自動生成できます。
以下のセキュリティテストを各エンドポイントに対して生成してください:
1. SQLインジェクションのペイロードテスト
2. XSSペイロードのサニタイズ確認テスト
3. 認証バイパスの試行テスト
4. 権限昇格の試行テスト
5. レートリミットの動作確認テスト
テストフレームワークはJest + Supertestを使用してください。
まとめ:Claude Codeでセキュリティを「シフトレフト」する
本記事では、Claude Codeを活用したセキュリティ対策として以下を解説しました。
- OWASP Top 10に基づく脆弱性検出(SQLi、XSS、認証不備)
- AGENTS.mdによるセキュアコーディングの自動化
- CI/CDパイプラインでのセキュリティレビュー自動化
- 依存パッケージの監査
- SES現場での実践パターン(診断レポート、リリース前チェック、インシデント対応)
セキュリティ対策を開発の早い段階に組み込む「シフトレフト」のアプローチは、修正コストを大幅に削減します。Claude Codeを使えば、専任のセキュリティエンジニアがいなくても、開発者自身がセキュアなコードを書き、レビューし、テストできる環境を構築できます。
次のエピソードでは、Claude Codeを使ったパフォーマンス最適化について掘り下げていく予定です。引き続き「Claude Code 完全攻略シリーズ」をお楽しみください。