Amazon CodeGuru Security
ML を活用してソースコードの脆弱性を自動検出し、修正コードの提案まで行う静的アプリケーションセキュリティテストサービス
概要
Amazon CodeGuru Security は、機械学習を活用した静的アプリケーションセキュリティテスト (SAST) サービスで、ソースコード内のセキュリティ脆弱性を自動的に検出し、具体的な修正コードを提案します。SQL インジェクション、クロスサイトスクリプティング (XSS)、ハードコードされた認証情報、暗号化の不備など、OWASP Top 10 に含まれる脆弱性カテゴリを網羅的にカバーします。Java、Python、JavaScript/TypeScript、C#、Ruby、Go など主要言語に対応し、CodePipeline や GitHub Actions と統合して CI/CD パイプラインに組み込むことで、脆弱性のあるコードが本番環境にデプロイされる前に検出・ブロックできます。
ML ベースの脆弱性検出と従来型 SAST との違い
CodeGuru Security の検出エンジンは、Amazon 社内の数十億行のコードレビューデータで学習した ML モデルを基盤としています。従来のルールベース SAST ツールがパターンマッチングで既知の脆弱性パターンを検出するのに対し、CodeGuru Security はコードの意味的な文脈を理解し、データフローを追跡して脆弱性の到達可能性 (Reachability) を判定します。これにより、実際には悪用不可能な False Positive を大幅に削減し、開発者が対応すべき真の脆弱性に集中できます。検出結果には深刻度 (Critical、High、Medium、Low、Informational) が付与され、CWE (Common Weakness Enumeration) 番号で脆弱性の種類が分類されます。さらに、検出された脆弱性に対して具体的な修正コード (コードパッチ) を自動生成し、開発者はワンクリックで修正を適用できます。この修正提案も ML モデルが生成するため、プロジェクトのコーディングスタイルに沿った自然なコードが提案されます。
CI/CD パイプラインへの統合パターン
CodeGuru Security を開発ワークフローに組み込む方法は複数あります。GitHub Actions との統合では、プルリクエスト作成時に自動スキャンが実行され、検出された脆弱性がプルリクエストのコメントとして表示されます。CodePipeline との統合では、ビルドステージの後にセキュリティスキャンステージを追加し、Critical または High の脆弱性が検出された場合にパイプラインを自動停止する品質ゲートを設定できます。セキュアコーディングの関連書籍 (Amazon) で脆弱性の原理と対策を体系的に学べます。スキャン結果は Security Hub に自動連携され、組織全体のセキュリティポスチャーダッシュボードで脆弱性の傾向分析が可能です。インクリメンタルスキャン (差分のみスキャン) に対応しているため、大規模リポジトリでもスキャン時間を数分以内に抑えられます。
シークレット検出と運用上のベストプラクティス
CodeGuru Security はコード内にハードコードされたシークレット (API キー、パスワード、データベース接続文字列、AWS アクセスキーなど) の検出にも対応しています。Git の履歴を遡ってスキャンする機能により、過去のコミットに含まれるシークレットも検出でき、既にローテーション済みかどうかの確認を促します。運用上のベストプラクティスとして、まず既存コードベースのフルスキャンを実行して現状の脆弱性を棚卸しし、深刻度の高いものから優先的に修正するトリアージプロセスを確立します。新規コードに対しては CI/CD の品質ゲートで Critical/High をブロックし、Medium 以下は技術的負債として管理する段階的なアプローチが現実的です。スキャンポリシーで特定のファイルパスやルールを除外する設定も可能で、テストコードやサードパーティライブラリの誤検知を抑制できます。検出トレンドを週次でレビューし、頻出する脆弱性パターンに対して開発チームへのセキュリティトレーニングを実施する PDCA サイクルが効果的です。