[アドカレ2025]AWS Security Agentで、脆弱性まみれのWebサイトにペネトレーションテストしてみた

はじめに

今年も「DENET ADVENT CALENDAR 2025」の季節がやってまいりました。
こんにちは、年末年始はストレンジャー・シングス最終シーズンを見て過ごす予定の運用サービス課栩野です。

先日「AWS re:Invent 2025」で「AWS Security Agent」なる新サービスがリリースされました。
名前の通りセキュリティのエージェントサービスとなっており、アプリの設計・コーディング段階からAIがセキュリティレビューを行ってくれるようで、更に自動ペネトレーションテスト(以
下ペンテスト)も行ってくれ、更に更に脆弱性の修正コードをプルリクエストしてくれる
とか...

とにかく凄そうなこのサービス、今回は脆弱性まみれのWebサイトを作って、実際にどんなもんなのか試してみようと思います!
Security Agentが気になってこのブログにたどり着いた方がいれば、少しでも内容が参考になっていただけると嬉しいです。

AWS Security Agentとは

このサービスの主要な機能は、以下の3つの機能になります。

  • 設計書のセキュリティレビュー
  • コードのセキュリティレビュー
  • ペネトレーションテスト

アプリの設計書のセキュリティレビュー、そしてプルリクエストされたコードのセキュリティレビュー、そしてそしてこの「設計書」と「コード」をAIが理解したうえでペンテストを行ってくれる。そしてそしてそして、最後に見つかった脆弱性に対して修正すべきコードをプルリクエストしてくれる。といった魔法のような素晴らしいサービスのようです。

本来アプリのセキュリティ診断といえば、リリース前に専門ベンダーに依頼し、脆弱性が見つかれば大きな手戻りが発生し、そして診断費は安くない費用が発生する... と言ったイメージですが、Security Agentを活用することで、設計・コーディング段階での脆弱性の早期発見ができ、また手軽にペンテストでアプリの穴を見つけることが出来るなど、今後非常に助けになるサービスとなりそうです。

ペンテストについては、OWASP Top 10をベースにして、他にも設計書やコードから学習した内容に基づいてカスタム攻撃プランが構築される仕様になっているようです。

更に詳しくは、以下の公式ページ、ブログ、ドキュメントをご確認ください。

AWS Security Agent 公式ページ
AWS ブログ: AWS Security Agent発表
AWS Security Agent ドキュメント

※2025/12/16時点では、パブリックプレビュー期間となっており、バージニア北部リージョンのみ無料で利用が可能です。

実際に使ってみた

実施した事前準備

診断対象サイトとして、脆弱性まみれのWebサイトと設計書を用意しました。
ちなみに、Webサイトは、以下のプロンプトでKiroちゃんに生成してもらってます。

新しくリリースされたSecurity Agentを試してみたいです。
そのために、架空の脆弱性まみれのWebアプリケーションが必要です。

見た目はモダンな作りで、ただし一般的によくみられる脆弱性を搭載した状態で、簡単なログイン機能とWebフォーム機能を搭載した会員サイトを生成してください。

合わせて、そのサイトの設計書も生成して出力してください。

なかなかやばそうな会員サイトを作ってくれました。

Kiroちゃんいわく以下の脆弱性が仕込まれています。

  • SQLインジェクション
  • XSS
  • CSRF
  • コマンドインジェクション
  • パストラバーサル
  • パスワード平文保存
  • セッション管理の不備
    等々

エージェントスペースの作成

まずは「エージェントスペース」なるものを作る必要があります。
1つのアプリケーションを管理するワークスペースのようなものになっており、アプリケーションごとに1つのエージェントスペースを作成します。

「エージェントスペース名」には任意の名前を付け、「ユーザーアクセス設定」はIAM Identity Center か IAMユーザー かを選びます。
私はIAMユーザーで設定しました。

ここからは、主要な3つの機能を設定して、実際に使っていきます。

1. 設計レビュー

まずは設計レビューです。
設計レビューには、AWSマネージドでレビュー用のルールがデフォルトで用意されています。ルールをクリックすると詳細やコンプライアンス条件が表示できます。

またカスタムセキュリティ要件も作成できるので、組織のルールに合わせて追加することも可能です。
今回は特に追加はせず、デフォルトの状態で設計レビューを行ってみます。

「ウェブアプリで開始」なるボタンがありますが、Security Agentの設定はこのウェブアプリ画面で基本的には管理していくことになります。

「Create design review」で設計レビューを作成していきます。
といっても、レビューに任意の名前を付けて、対応する拡張子の設計書をアップロードするだけで完了です。

脆弱性だらけのアプリの設計書をレビューしてみると...

素晴らしい非準拠具合です。
各ルールの結果をクリックすると、詳細や改善ガイダンス等が確認できるので、有難い仕様です。

2. コードレビュー

次はコードレビューです。
こちらはGitHubリポジトリとの連携が必要になります。(そのうちCodeCommitも対応されると思ってます)
「コードレビューを有効にする」をクリックし、GitHubリポジトリと連携します。

対象のリポジトリを選択し、レビューの設定を行います。とりあえず全部試したいので「Security requirements and vulnerability findings」を選択して接続します。

コードレビューはプルリクエストのタイミングで実施されます。試しに脆弱性にまみれたコードをプルリクエストしてみます。

「重大なセキュリティ脆弱性があり...」脆弱性にまみれすぎて、他にも大量のコメントが入ったので一部です。ちゃんとコードの該当箇所も示してくれるので見やすいです。

超優秀です。

3. ペネトレーションテスト

お待ちかねのペンテストです。
「ペネトレーションテストを有効化」をクリックして設定を行います。

ターゲットドメインとして、診断対象のドメイン名の登録が必要です。Route53を使ってる場合は連携して手軽にDNSテキストレコードを使った検証が可能です。

その他のオプションを入力する箇所がありますが、一旦そのままで有効化します。

ペンテストの実施に向けて、ウェブアプリの画面から「ペネトレーションテスト」を選択し、詳細の設定を行います。

任意で診断に名前を付けて、診断対象のURLを入力します。
また除外したい診断項目や、URL等も設定することが可能です。

自動コード修復にチェックを入れておくと、診断後に修正コードを自動的に生成し、プルリクエストを送信することが出来るようです。

ログイン画面等がある場合は、追加設定でユーザー名とパスワードの登録も可能です。

そして素晴らしい機能として、ここでアップロードした設計書や接続したGitHubを設定することで、設計やコードを理解したうえで、AIが複雑なペンテストを実施してくれるようです。

では、ついにペンテスト実行します。

診断は4つのステージで実行されます。
事前チェック -> 静的診断 -> ペンテスト -> 終了 の流れ。

面白いのが、以下はログイン時のタスクの内容ですが、生成AIが診断を進めていく過程を全部見ることが出来ます。
診断用に作成されるコードや、生成されるサンプルデータ、生成AIの思考内容等々、診断の透明性が高く、見ているだけで、めちゃくちゃ面白いです。


以下のように各脆弱性の種別ごとにタスクとして診断が実施されていきます。

もう一つ、SQLインジェクションの一例です。



ちなみに、全ての診断が完了するまでの時間は3時間くらいでした。
結果が出たので確認してみます。

まず、ペンテストの概要や対象範囲が以下のように出力されます。

侵入テストの概要

この包括的な侵入テストでは、対象アプリケーション (xxxxxxxxxxxxxxxxx) 全体で76 件のセキュリティ上の問題が特定され、確認されました。これらの問題のうち 76 件の脆弱性は、実際の悪用と検証によって完全に確認されました。確認された脆弱性の重大度分布は、深刻なセキュリティ状況を示しています。重大度が「Critical」の脆弱性が 21 件、重大度が「High」の脆弱性が 38 件、重大度が「Medium」の脆弱性が 13 件、重大度が「Low」の脆弱性が 4 件です。評価の結果、認証されていないリモートコード実行、任意のファイル操作、包括的な認証バイパスメカニズムなど、システムへの完全な侵害に至る複数の経路が明らかになりました。これらの経路は、組織のセキュリティインフラストラクチャに壊滅的なリスクをもたらします。

範囲と対象範囲

侵入テストでは、アプリケーションの攻撃対象領域内に16個のエンドポイントが発見されました。これらのエンドポイントは、当初のターゲットURLから拡大し、重要な管理インターフェース(admin.php)、APIエンドポイント(api.php)、ファイル管理機能(upload.php)、ユーザー向けコンポーネント(login.php、register.php、dashboard.php、profile.php、update_profile.php)にまで及びました。テスト手法では、自動脆弱性スキャンと手動エクスプロイト手法を併用することで、認証メカニズム、セッション管理、入力検証制御、アクセス制御実装、ファイル処理操作を包括的にカバーしました。この徹底的な列挙フェーズにより、アプリケーションの露出機能の完全なマップが作成され、特定されたすべてのエントリポイントにおける体系的な脆弱性評価が可能になり、基本的なセキュリティ制御が欠如しているアプリケーションの広範な攻撃対象領域が明らかになりました。

そして、実際の検出結果の画面です。今回Criticalの脆弱性は21件検出されました。

説明や再現手順、リスク推論としてCVSSv3の基準を使った説明も出力されます。

そして、この脆弱性に対するプルリクエストも作成されています。
※冒頭だけ抜粋

凄すぎます...

実際に使ってみた。はここまでです。
操作がシンプルで、かなり手軽に実施できるので、テスト環境等があれば、是非一度お試しいただければと思います。

さいごに

AWSのセキュリティエージェントサービス恐るべしな内容でした。
個人的には生成AIによるペンテストの過程を覗けるのが面白くてポイントが高いです。

1点留意事項として、AWSドキュメントに以下のFAQが記載されており、セキュリティの専門ベンダーによるペンテストを置き換えるようなサービスではないようです。
Security Agentを利用して、脆弱性を早期発見・対処を行いつつ、プロのセキュリティベンダーによる診断もしっかり組み合わせることが推奨されます。

AWS セキュリティエージェントはペンテストのワークフローを置き換えることができますか?

AWS Security Agent はプロフェッショナル向けの侵入テストサービスではありません。そのため、AWS Security Agent をセキュリティレビューワークフローに統合することをお勧めします。AWS Security Agent は、ソフトウェアライフサイクルの開発フェーズにおいて、侵入テストの専門家に依頼するのが時期尚早、非現実的、または頻繁に再評価が必要な場合に、オンデマンドで侵入テストへのアクセスを提供します。セキュリティ専門家は、AWS Security Agent の検出結果をレビューし、検証、説明、または新たな発見(存在する場合)のために拡張することができます。

参考: よくある質問

現状プレビュー版ということもあり、今後の正式リリースが非常に楽しみです。

以上、Security Agent使ってみたでした。皆さんセキュアでよいクリスマスを!

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA