はじめに
「コードのセキュリティチェックをしたいけど、何を見ればいいかわからない」
「OWASPのガイドラインを参考にしたいけど、量が多すぎて把握できない」
「セキュリティレビューをコードレビューに組み込みたい」
セキュリティの専門家でなくても、Claude Codeを使えばOWASPのベストプラクティスに基づいた体系的なセキュリティ診断を実施できます。発見した脆弱性の修正も自律的に行います。
目次
- Claude Codeによるセキュリティ診断の特徴
- OWASP Top10に基づく診断
- 主要な脆弱性の自動修正
- 依存関係のセキュリティスキャン
- セキュリティヘッダーの設定
- 認証・セッション管理の診断
- セキュリティテストの自動生成
- 継続的なセキュリティ管理
- まとめ
1. Claude Codeによるセキュリティ診断の特徴
総合的なセキュリティ診断
> このプロジェクトの総合的なセキュリティ診断を実施してください。
診断範囲:
- OWASP Top 10 (2021年版) への対応状況
- ハードコードされたシークレット・パスワードの検出
- 安全でない依存関係の確認
- セキュリティヘッダーの設定状況
- 認証・認可の実装
問題を重大度(Critical・High・Medium・Low)で分類して
優先度の高いものから修正してください。
2. OWASP Top10に基づく診断
A01:アクセス制御の不備
> このAPIのアクセス制御を診断してください。
確認項目:
- 認証が必要なエンドポイントに認証チェックがあるか
- ユーザーが他のユーザーのリソースにアクセスできないか
- 管理者機能への不正アクセスが防止されているか
- JWT・セッショントークンが適切に検証されているか
問題があれば修正コードを提示してください。
A03:インジェクション(SQLインジェクション・コマンドインジェクション)
> このコードベースでSQLインジェクションの脆弱性がある箇所を
すべて検出して修正してください。
検出パターン:
- 文字列結合でSQLを構築している箇所
- ユーザー入力を直接クエリに使っている箇所
- RAWクエリを使っている箇所
修正方針:
- プリペアドステートメント・パラメータ化クエリを使う
- ORMの機能を活用する
- 入力値のサニタイズを追加する
A07:認証の失敗
> このアプリケーションの認証機能をセキュリティ観点でレビューしてください。
確認項目:
- ブルートフォース攻撃への対策(レートリミット・アカウントロック)
- パスワードの適切なハッシュ化(bcrypt・Argon2等)
- セッション固定攻撃への対策
- ログアウト時のセッション無効化
- 「ログイン状態を保持する」機能の安全な実装
3. 主要な脆弱性の自動修正
XSS(クロスサイトスクリプティング)の修正
> このコードでXSSの脆弱性がある箇所を検出して修正してください。
React:dangerouslySetInnerHTMLの不適切な使用を特定する
Node.js:テンプレートエンジンで出力エスケープが漏れている箇所を特定する
修正:DOMPurifyによるサニタイズ・適切なエスケープ処理の追加
CSRF対策の実装
> このWebアプリにCSRF対策を実装してください。
実装方針:
- CSRFトークンの生成・検証
- SameSite Cookie属性の設定
- OriginヘッダーとRefererヘッダーの検証
使用フレームワーク:[Express / Django / Rails等]に合わせた
実装を選択してください。
シークレットの検出と管理
> このリポジトリのコードとgit履歴にAPIキー・パスワード・
シークレットがハードコードされていないか確認してください。
検出したら:
1. 該当のシークレットを直ちに環境変数に移動する
2. git履歴から削除する方法を教える(BFG Repo Cleanerの使用)
3. 流出した可能性があるシークレットのローテーションを促す
4. 依存関係のセキュリティスキャン
npm auditの実行と修正
> npm auditを実行して、脆弱性のある依存関係を修正してください。
方針:
- Critical・Highレベルは必ず修正
- 直接依存関係は最新の安全なバージョンに更新
- 間接依存関係はresolutionsで対応
- 修正後にテストを実行して動作を確認
Snyk・OSVによる継続的スキャン
> GitHubリポジトリにDependabotアラートと
GitHub Advanced Securityを設定してください。
週次で依存関係をスキャンして自動でPRを作成するように設定してください。
5. セキュリティヘッダーの設定
HTTPセキュリティヘッダーの追加
> このWebアプリのHTTPセキュリティヘッダーを設定してください。
設定するヘッダー:
- Content-Security-Policy(CSP)
- Strict-Transport-Security(HSTS)
- X-Content-Type-Options
- X-Frame-Options
- Referrer-Policy
- Permissions-Policy
現在のアプリのContent(インラインスクリプト等)に合わせた
CSPポリシーを設計してください。
SecurityHeadersで評価した場合にAグレード以上になることを目標にしてください。
6. 認証・セッション管理の診断
JWTの実装レビュー
> このアプリのJWT実装をセキュリティ観点でレビューしてください。
確認項目:
- アルゴリズムの指定(RS256推奨・HS256の鍵強度)
- 有効期限の設定(アクセストークン・リフレッシュトークン)
- JWTの検証が適切に行われているか
- クレームの適切な使用
- トークン無効化の仕組み
問題があれば修正してください。
7. セキュリティテストの自動生成
ペネトレーションテストのスクリプト生成
> このAPIのセキュリティテストを作成してください。
テスト項目:
- SQLインジェクション試行(安全なテスト用ペイロード)
- XSS試行
- 認証バイパスの試み
- 認可テスト(他ユーザーのリソースへのアクセス)
- レートリミットのテスト
pytestまたはJestで実行できる形式で作成してください。
8. 継続的なセキュリティ管理
GitHub Actionsへの組み込み
> セキュリティスキャンをCI/CDに組み込んでください。
実行タイミング:PRごと・mainへのpush時・週次
スキャン内容:
- Static Application Security Testing(SAST):Semgrep使用
- Dependency Check:npm audit / safety
- Secrets Detection:gitleaks使用
- Container Scanning:trivy使用(Dockerを使う場合)
9. まとめ
Claude Codeでのセキュリティ診断の特徴:
- OWASP Top10に基づく体系的な診断が可能
- 脆弱性の検出から修正コードの生成まで自律的に実行
- 依存関係のスキャンと更新を自動化できる
特に効果の高い活用シーン:
- リリース前のセキュリティチェック
- レガシーコードのセキュリティ監査
- CI/CDへのセキュリティスキャン組み込み
次回の第28回:LLMアプリを開発する方法では、LangChainとLlamaIndexを使ったAIアプリの構築方法を解説します。
よくある質問(FAQ)
Q. セキュリティ診断の結果はどの程度信頼できますか?
A. 一般的な脆弱性パターンの検出精度は高いですが、ビジネスロジックに依存する脆弱性は見落とすことがあります。重要なシステムでは専門のペネトレーションテストと組み合わせることを推奨します。
Q. 本番環境のコードに直接セキュリティ修正を適用しても大丈夫ですか?
A. 必ずステージング環境で動作確認してからマージしてください。セキュリティ修正でも既存の動作が変わる可能性があります。
この記事はClaude Code入門シリーズ(第3部)の第27回です。← 第26回:React・Next.js開発 | 第28回:LLMアプリ開発 →
ご質問はお問い合わせページからお気軽にどうぞ。