AppGoat(アップゴート)は、IPA(情報処理推進機構)が無償で提供する脆弱性体験学習ツールです。攻撃者と同じ操作でWebアプリケーションの脆弱性を実際に発生させ、その仕組みと防御策をハンズオンで学べます。最新版はV3.0(2016年10月31日公開)で、SQLインジェクションやクロスサイトスクリプティング(XSS)など主要12種・合計41の学習テーマを収録しています。ただし配布形態はWindows専用のデスクトップアプリで、ネット上で見かける「Dockerで導入」「java -jarで起動」といった手順は実際のAppGoatには存在しません。本記事は公式仕様に沿って、学べる脆弱性・正しいインストールと起動手順・個人学習版と集合学習版の違い・WebGoatとの違いまで整理します。
まとめ:この記事の要点(先に結論)
- 提供元・料金:IPAが無償提供。個人・企業研修・教育機関のいずれも無料で利用可。
- 最新版:V3.0(2016年10月31日公開)。以降のメジャー更新はなく、古典的なWeb脆弱性の学習に軸足がある。
- 動作環境:Windows専用のネイティブアプリ。Microsoft Visual C++ 再頒布可能パッケージ(vcredist_x86.exe)が必要。macOS・Linuxでは動作しない。
- 学べる範囲:主要12種の脆弱性、合計41の学習テーマ。
- 既定ポート:Apacheがポート80で起動(一部演習で50001)。競合時は環境設定で変更する。
AppGoatとは|IPAが無償提供する脆弱性体験学習ツール
AppGoatは、Webアプリケーションに潜む脆弱性を「攻撃してみる→なぜ成立するか理解する→防御策を適用する」という流れで体験できる学習ツールです。座学では実感しにくい攻撃の成立条件を、自分の手元の隔離環境で再現できる点が中核の価値です。開発者のセキュアコーディング教育、新人研修、CTF入門の練習環境として国内で広く使われてきました。IPAという公的機関が無償で維持している教材である点も、企業・教育機関が採用しやすい理由です。
個人学習版と集合学習版の違い
AppGoatには2つの提供形態があります。個人学習版は1台のWindows端末に導入して1人で進める形式で、ダウンロードすればすぐ使えます。集合学習版(Webアプリ学習版)はサーバー1台でツールを動かし、受講者はブラウザからネットワーク経由でアクセスするため、参加者側の端末には何もインストールせずに済みます。集合学習版の利用にはIPAへメールで申請し、有効期限付きのライセンスファイルを取得する必要があります。研修講師が進捗管理や演習の出題範囲を制御できるのは集合学習版です。
WebGoat・DVWAとの違い
同種の脆弱性学習ツールにはOWASP WebGoatやDVWA(Damn Vulnerable Web Application)があります。これらが英語ベースで自前の実行環境構築を前提とするのに対し、AppGoatは教材・UIが日本語で、IPAの公式教材として提供され、Windowsネイティブアプリとして展開して起動するだけで始められる点が実務上の違いです。逆に、WebGoatは更新が続いておりモダンな脆弱性も扱う一方、AppGoatはV3.0以降の大きな更新がないため、扱う脆弱性は古典的なWeb脆弱性が中心になります。
AppGoatで学べる主要12種の脆弱性
AppGoat V3.0は主要12種の脆弱性を、目的別・レベル別に整理した合計41の学習テーマとして収録しています。悪用可能性の高い脆弱性を扱う基礎編と、より高度な題材を扱う応用編に分かれます。学習できる脆弱性は次の12種です。
- クロスサイト・スクリプティング(XSS)
- SQLインジェクション
- CSRF(クロスサイト・リクエスト・フォージェリ)
- ディレクトリ・トラバーサル
- OSコマンド・インジェクション
- セッション管理の不備
- 認証制御や認可制御の欠落
- HTTPヘッダ・インジェクション
- バッファオーバーフロー(V3.0で追加)
- クリックジャッキング(V3.0で追加)
- メールヘッダ・インジェクション(V3.0で追加)
- その他の脆弱性(システム情報漏えい等)
いずれも「攻撃を成立させる操作」と「防御策の実装」をセットで学べる構成です。SQLインジェクションの演習では、ログインフォームに次のような入力を与えて認証を回避できてしまう条件を体験します。
' OR '1'='1' --
防御策はプレースホルダを使ったプリペアドステートメント(パラメータバインディング)で、演習内で対策の効き目まで確認できます。仕組みを詳しく押さえたい場合はSQLインジェクションの仕組みと対策もあわせて参照してください。XSSの演習では、入力がそのままHTMLに出力される画面に次のようなスクリプトを挿入し、実行される様子を確認します。
<script>alert('XSS')</script>
対策は出力時のHTMLエスケープで、攻撃が無効化されることを同じ演習内で検証できます。
AppGoatのインストールと起動手順(個人学習版)
AppGoatはWindows専用です。動作にはMicrosoft Visual C++ 再頒布可能パッケージ(vcredist_x86.exe)が必要で、展開フォルダ内の同ツールから導入できます。macOSやLinuxでは動作しないため、これらの環境ではWindows仮想マシンを用意する必要があります。導入と起動の流れは次のとおりです。
- IPA公式サイトの配布ページから個人学習版のファイルをダウンロードし、任意のフォルダに展開する。
- 必要に応じて展開フォルダ内の
vcredist_x86.exeでVisual C++ 再頒布可能パッケージを導入する。 - 展開フォルダ内の
AppGoatSettings.exe(環境設定アプリ)を起動し、[Apache起動]を実行する。 - ブラウザで
http://localhost/にアクセスし、学習テーマを選んで演習を開始する。
既定ではApacheがポート80で起動します(一部の演習ではポート50001を使用)。すでにポート80を使うプログラムがある場合は、AppGoat環境設定の画面でポート番号を未使用の番号に変更・保存してから起動してください。集合学習版を使う場合は、前述のとおりIPAへの申請でライセンスファイルを取得したうえでサーバーに導入します。演習環境はインターネットに公開せず、ローカルまたは閉じたネットワーク内で運用するのが前提です。
AppGoatが向く場面と限界(導入前の判断基準)
AppGoatは万能ではありません。目的に合うかを次の基準で整理します。
向いている場面:Web脆弱性の原理を手を動かして理解したい、開発者のセキュアコーディング研修や新人教育の教材が欲しい、CTFや脆弱性診断の学習の第一歩にしたい——こうしたケースでは、無償で日本語・攻撃と防御を往復できるAppGoatは有力な選択肢です。
導入すべきでない場面・限界:本番システムの脆弱性診断の代替にはなりません。AppGoatはあくまで学習用の疑似環境で、実在するアプリの脆弱性を検出する用途ではないためです。またV3.0(2016年公開)以降のメジャー更新がなく、扱うのは古典的なWeb脆弱性が中心です。クラウド設定不備、API・認可設計、SPAやモダンフレームワーク固有の脆弱性などは学習対象に含まれません。Windows専用という制約もあります。実際のアプリを診断したい段階に進んだら、OWASP ZAPによる脆弱性診断やBurp Suiteの使い方といった実務ツール、あるいはKali Linuxによるペネトレーションテストへ学習を接続し、本番診断が必要なら脆弱性診断サービスの利用を検討してください。
よくある質問(FAQ)
AppGoatのポート番号はいくつですか?
既定ではApacheがポート80で起動します。一部の演習ではポート50001を使用します。ポート80が他のプログラムと競合する場合は、AppGoat環境設定の画面でポート番号を未使用の番号に変更・保存してから起動してください。
AppGoatは無料で使えますか?
無償です。IPAが提供しており、個人学習・企業研修・教育機関での利用のいずれも無料です。集合学習版はIPAへの申請でライセンスファイルを取得する必要がありますが、費用はかかりません。
AppGoatはMacやLinuxで動きますか?
動作しません。AppGoatはMicrosoft Visual C++ 再頒布可能パッケージを必要とするWindows専用のネイティブアプリです。macOSやLinuxで使いたい場合は、Windowsの仮想マシンを用意してその上で動かす必要があります。
AppGoatの最新バージョンは?
最新版はV3.0で、2016年10月31日に公開されました。V3.0では集合学習モードと、バッファオーバーフロー・クリックジャッキング・メールヘッダインジェクションの学習テーマが追加されました。以降のメジャー更新はないため、最新の対応状況はIPA公式サイトで確認してください。
AppGoatとWebGoatの違いは?
WebGoat(OWASP提供)は英語ベースで実行環境の構築を前提とし、更新が続いておりモダンな脆弱性も扱います。AppGoatはIPA公式の日本語教材で、Windowsアプリとして展開して起動するだけで始められる手軽さが特徴ですが、V3.0以降の更新がなく古典的なWeb脆弱性が中心です。日本語で基礎を固めるならAppGoat、幅広く最新の題材まで扱うならWebGoatが向きます。