コラム Claude Code入門 更新:

Claude Codeでセキュリティ診断をする方法!脆弱性を自動スキャンして修正する実践ガイド

Claude Codeでセキュリティ診断をする方法!脆弱性を自動スキャンして修正する実践ガイド
目次 (25項目)
  1. 1. はじめに
  2. 2. 目次
  3. 3. 1. Claude Codeによるセキュリティ診断の特徴
  4. 総合的なセキュリティ診断
  5. 4. 2. OWASP Top10に基づく診断
  6. A01:アクセス制御の不備
  7. A03:インジェクション(SQLインジェクション・コマンドインジェクション)
  8. A07:認証の失敗
  9. 5. 3. 主要な脆弱性の自動修正
  10. XSS(クロスサイトスクリプティング)の修正
  11. CSRF対策の実装
  12. シークレットの検出と管理
  13. 6. 4. 依存関係のセキュリティスキャン
  14. npm auditの実行と修正
  15. Snyk・OSVによる継続的スキャン
  16. 7. 5. セキュリティヘッダーの設定
  17. HTTPセキュリティヘッダーの追加
  18. 8. 6. 認証・セッション管理の診断
  19. JWTの実装レビュー
  20. 9. 7. セキュリティテストの自動生成
  21. ペネトレーションテストのスクリプト生成
  22. 10. 8. 継続的なセキュリティ管理
  23. GitHub Actionsへの組み込み
  24. 11. 9. まとめ
  25. 12. よくある質問(FAQ)

はじめに

「コードのセキュリティチェックをしたいけど、何を見ればいいかわからない」

「OWASPのガイドラインを参考にしたいけど、量が多すぎて把握できない」

「セキュリティレビューをコードレビューに組み込みたい」

セキュリティの専門家でなくても、Claude Codeを使えばOWASPのベストプラクティスに基づいた体系的なセキュリティ診断を実施できます。発見した脆弱性の修正も自律的に行います。

目次

  1. Claude Codeによるセキュリティ診断の特徴
  2. OWASP Top10に基づく診断
  3. 主要な脆弱性の自動修正
  4. 依存関係のセキュリティスキャン
  5. セキュリティヘッダーの設定
  6. 認証・セッション管理の診断
  7. セキュリティテストの自動生成
  8. 継続的なセキュリティ管理
  9. まとめ

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アプリ開発 →

ご質問はお問い合わせページからお気軽にどうぞ。

著者:R-LLM 開発者

フォロー

Webエンジニアとして10年以上のキャリアがあり、現在はWordPressとLLM(大規模言語モデル)の連携、および生成AIを活用した課題解決のための開発に日々取り組んでいます。

私の信条は、クライアントに寄り添った伴走支援と、最後まで責任を持ってやり遂げる「遂行力」です。これまでの膨大なトライ&エラーの蓄積により、自身の領域内であれば不具合も迅速に解決できる現場の知見を積み上げてきました。

このブログでは、一人のエンジニアとして私自身がAI技術に抱いている純粋な興味をベースに、日々の探求プロセスを発信しています。

生成AILLMをどのように実務に組み込み、価値へ繋げていくか。自身の検証結果だけでなく、実務者としての視点に基づいた「考察や推察」も含めて共有することで、同じように試行錯誤を続ける方々と知見を繋げていければと考えています。

関連記事

SHARE Xでシェア
← 前の投稿
投稿一覧に戻る
次の投稿 →