AppGoat(アップゴート)は、IPA(情報処理推進機構)が無償で提供する脆弱性体験学習ツールです。意図的に脆弱性を埋め込んだWebアプリケーションを手元のWindows PCで動かし、攻撃者の立場で脆弱性を突く演習と、開発者の立場でソースコードを直す演習を往復します。最新版は2023年2月28日公開のV3.0.5で、SQLインジェクションやクロスサイト・スクリプティングなど12種の脆弱性を41の学習テーマで学べます。
入手には申請フォームからの申請が必要で、動作環境はWindows 11だけです。「Dockerで起動」「java -jarで起動」「ポート8080」はOWASP WebGoatの起動方法で、AppGoatには当てはまりません。手順を見かけたら、どのツールの話かを確かめてください。この記事では、IPAの公式ページ4つに分かれている申請・起動・トラブル対処・版の履歴を1本にまとめます。
まとめ:AppGoatの最新版と使い始めるまでの要点
- 最新版:V3.0.5(2023年2月28日公開)。V3.0.2以前にはAppGoat自体の脆弱性があるため、古いzipを使い回さない。
- 料金と入手:無償。個人学習モードは申請フォームから申し込み、メールで届くURLから約810MBのzipを取得する。
- 動作環境:Windows 11(x64 / ARM)。macOS・Linuxは動作環境に含まれない。
- 起動:解凍→vcredist_x86.exe→AppGoatSettings.exeで[Apache起動]。既定のポートは80で、一部の演習は50001を使う。
- 学習中の注意:V3.0.3から、LANケーブルを外すなどの遵守事項を確認してから学習を始める。
- 研修で使うなら:集合学習モードは管理職の承認付きでIPAにメール申請し、最大40人・最長1年で使える。
AppGoatの学習の流れと版の履歴
AppGoatは、学習教材と演習環境をセットにしたツールです。IPAのFAQによると、主要な12種の脆弱性から目的別・レベル別に合計41の学習テーマを用意しています。IPAが想定する利用者は、Webアプリケーションの脆弱性対策を身につけたい開発者とWebサイトの管理者です。
Level1〜3の学習テーマと演習の構成
学習テーマは3段階に分かれています。Level1は攻撃の手法と仕組み、Level2は対策手法まで、Level3はさらに難しい題材です。各テーマの前半では攻撃者として脆弱性を悪用し、どんな影響が出るかを確かめます。後半では開発者としてソースコードを修正し、修正結果を確認します。脆弱性の概要だけ知りたい人は前半、開発者は前半と後半の両方を進めるのがIPAの案内です。
ソースコードを修正する演習は個人学習モードでしか使えません。研修を集合学習モードで行うと、受講者は修正演習を受けられない点に注意が必要です。12の脆弱性カテゴリと総合カテゴリには選択式の習熟度テストがあり、一通り終えた後に総合演習と総合問題で力を試せます。
V3.0からV3.0.5までの更新内容
V3.0.0は2016年10月31日に公開され(窓の杜の報道)、その後も2023年まで修正版が出ています。IPAの「AppGoatについて」の更新履歴と、各ページの履歴を並べると次のとおりです。
| 版 | 公開日 | 主な変更 |
|---|---|---|
| V3.0.0 | 2016年10月31日 | 集合学習モードを追加 |
| V3.0.1 | 2017年2月9日 | 脆弱性対策版(DNSリバインディング対策は不十分) |
| V3.0.3 | 2017年6月6日 | 脆弱性4件を修正・遵守事項を追加 |
| V3.0.4 | 2019年11月5日 | 基礎6個の発見演習の文言を見直し |
| V3.0.5 | 2023年2月28日 | 現在の最新版 |
2022年11月4日には、Webアプリケーション以外を扱っていた「サーバ・デスクトップアプリケーション」用の学習ツールの公開が終わりました。現在配布されているのは「ウェブアプリケーション用学習ツール」だけです。2016年の報道にある「Windows 7/8.1/10対応」は当時の動作環境で、2026年6月30日に更新された現在の動作環境はWindows 11です。
AppGoatで学べる12種の脆弱性
IPAの個人学習向けツール概要に載っている学習可能な脆弱性は次の12種です。IPAは集合教育向けに、このうち6種の補助資料(PDF)も公開しています。
| 学習できる脆弱性 | 集合教育補助資料 |
|---|---|
| クロスサイト・スクリプティング | あり |
| SQLインジェクション | あり |
| CSRF(クロスサイト・リクエスト・フォージェリ) | あり |
| ディレクトリ・トラバーサル | あり |
| OSコマンド・インジェクション | あり |
| セッション管理の不備 | あり |
| 認証制御や認可制御の欠落 | なし |
| HTTPヘッダ・インジェクション | なし |
| バッファオーバーフロー | なし |
| クリックジャッキング | なし |
| メールヘッダ・インジェクション | なし |
| その他の脆弱性(システム情報漏えい等) | なし |
研修の時間が限られるなら、補助資料がある6種から始めると講師用の資料もそろいます。演習で見た攻撃をコードの側から復習するなら、SQLインジェクションの攻撃例と対策、XSSとCSRFの違いと対策、CSRFトークンの仕組み、OSコマンドインジェクションを引数配列で防ぐ実装、セッションIDの発行から失効までの実装、frame-ancestorsでクリックジャッキングを防ぐ実装が対応します。
AppGoatを申請してインストールする手順(個人学習モード)
個人学習モードは、1台のPCに1人分の学習環境を作る使い方です。2023年に申請方法が変わり、現在は申請フォームからの申し込みが入口になっています。
個人学習モードの利用申請とダウンロード
「利用許諾条件合意書」に同意したうえで、個人学習向けツール概要のページにある申請フォームから申し込みます。入力したメールアドレスにダウンロードの案内が届くので、そのURLからzipを取得します。ファイルは約810MBで、Googleドライブから配布されます。ファイル名は「AppGoat_web_v305_xxxx.zip」の形です。
ダウンロードURLには有効期限があり、期限が過ぎるとURLが変わります。その場合は申請フォームから申請し直します。Googleドライブで「このファイルのウイルス スキャンを実行できません」と表示されても、ファイルが大きくスキャン対象外になっただけなので、そのままダウンロードして構いません。授業や社内教育で複数人が個人学習モードを使う場合は、代表者が再配布人数と目的を記載して申請します。配布先を授業・社内教育の関係者に限定し、利用者全員に利用許諾条件合意書を配布して同意を得てください。
AppGoatの解凍とApacheの起動手順
- zipを解凍する。解凍先のパスに全角文字、半角スペース、半角記号を含めない(例:C:\AppGoat)。
- 解凍フォルダ内の「IPATool\IPATool\Framework\Tools\vcredist_x86.exe」を実行し、Microsoft Visual C++ 再頒布可能パッケージを入れる。
- 解凍フォルダ内のAppGoatSettings.exeを起動し、環境設定アプリの[Apache起動]を押す。
- 表示される遵守事項のダイアログを読み、LANケーブルを外すなどの指示を実施する。
- 総合メニューが開いたら「学習を進める前に」で操作方法を確認し、「学習環境へ」から学習を始める。
手順を動画で確かめたい場合は、IPAが2024年7月31日にYouTubeのIPA Channelで公開した「体験して学ぼう、脆弱性体験学習ツール『AppGoat(アップゴート)』利用の手引き」が使えます。動画はIPAの映像コンテンツ一覧から開けます。ScanNetSecurityの紹介記事によると、概要編・学習の準備編・学習の進め方(前・中・後編)の5本と、全部をまとめた統合版(約42分)があります。
動作環境の条件
IPAが2026年6月30日に更新した動作環境は次のとおりです。付属のマニュアルやFAQには更新されていない記載が残っている、とIPA自身が注記しているため、食い違ったらこの表を優先してください。
| 項目 | 条件 |
|---|---|
| OS | Windows 11(x64 / ARM) |
| ディスク | 1GBの空き容量 |
| 画面 | 1,024×768ピクセル以上 |
| ブラウザ | Chrome / Firefox / Edge |
| その他 | Adobe Acrobat Readerなど |
| ネットワーク帯域 | 100Mbps以上(集合学習モード) |
AppGoatが起動しないときの確認手順
起動しないときに確かめる項目は、IPAのFAQのA6にまとまっています。Apacheが動いていない状態は、タスクマネージャーに「Apache HTTP Server (32ビット)」が無い、環境設定アプリのタイトルバーに「(応答なし)」と出る、コマンドプロンプトが「AppGoatを起動しています…」のまま止まる、のいずれかで見分けられます。
ポート80・50001の使用プロセスの確認
AppGoatは既定でポート80を使ってApacheを起動し、特定の演習ではポート50001も使います。IISや別の開発用Webサーバーが同じポートを使っていると起動できません。PowerShellで次のように調べると、ポートを使っているプロセスが分かります。
Get-NetTCPConnection -LocalPort 80,50001 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalPort, OwningProcess, @{n='Name';e={(Get-Process -Id $_.OwningProcess).ProcessName}}
何も表示されなければ、80番と50001番で待ち受けているプロセスは見つかっていません。使っているプロセスがあれば、そのプログラムを終了するか、環境設定アプリでポート番号を未使用の番号に変えて[保存]してから起動します。AppGoatを停止した直後は、前回使ったポートがまだ解放されていないことがあります。少し時間を置くか、ポート番号を変えてください。
Apache停止確認後の残存httpd.pidの削除
Apacheが正しく終了しなかった場合、ApacheのlogsフォルダにPIDファイル(httpd.pid)が残り、次の起動を妨げます。Apacheが動いていないことを確かめてから削除します。
if (Get-Process -Name httpd -ErrorAction SilentlyContinue) {
Write-Output 'Apacheが動作中です。環境設定アプリで停止してから実行してください。'
} else {
Get-ChildItem C:\AppGoat -Recurse -File -Filter httpd.pid | Remove-Item
}
httpdのプロセスが残っている間はファイルを消さずにメッセージを出して止まります。C:\AppGoatの部分は実際の解凍先に置き換えてください。
解凍先パスとセキュリティソフトの検知履歴の確認
解凍先のパスに全角文字やスペースが入っていると動かないことがあります。デスクトップや「ダウンロード」フォルダの下は、ユーザー名に全角文字が含まれると条件に引っかかります。zipを解凍せずに中のファイルを直接開いた場合も起動しません。セキュリティソフトがApacheやAppGoatのファイルを不正と判定して検疫・削除していることもあるため、検知ログを確認し、除外設定をしてからzipを解凍し直します。Visual C++ 再頒布可能パッケージを入れていない場合も、解凍フォルダ内のvcredist_x86.exeから入れてから試します。
集合学習モードで社内研修を行う手順
集合学習モードは、講師(管理者)のPC1台にAppGoatを入れ、受講者が自分のPCのブラウザからネットワーク越しに接続する使い方です。モジュールは個人学習モードと共通で、有効期限設定ファイルを置くと集合学習モードに切り替わります。IPAの集合学習向けツール概要にある条件は次のとおりです。
- 申請:IPAのテンプレートでメール申請する。申請者の組織の管理職(課長相当職以上)の承認が要り、利用目的の記載は必須。学習目的でない申請は受け付けない。
- 受け取り:問題がなければ5営業日以内を目処に、ダウンロードURLと有効期限設定ファイル(AppGoatSettings.key)が届く。
- 配置:解凍したフォルダ内のIPAToolフォルダ直下にAppGoatSettings.keyを保存する。
- 規模と期間:最大40台のPCから同時に学習できる。利用できる期間は申請日から最長1年で、延長は再申請。
- 環境:受講者のPCから講師のPCへ届くネットワークが必要。外部から隔離した閉じたネットワークが推奨されている。
- 受講者の同意:講師は事前に、受講者から利用許諾条件合意書内の誓約書への同意を得る。
起動するときは、環境設定アプリでポート番号と接続を許可するIPアドレス(研修室の端末のアドレスなど)を設定して[保存]し、[Apache起動]を押します。管理者アカウントの作成画面が出たら起動完了です。受講者のアカウントは、ログインID・初期パスワード・氏名・所属を決めて事前に登録しておきます。
IPAは講師向けに「集合教育実施の手引き」「カスタマイズマニュアル」と、6種の脆弱性の補助資料、通信を中継して書き換えるツールFiddlerの使い方の資料を公開しています。研修の範囲を絞りたいときは、学習させたいテーマだけを表示するフィルタ機能が使えます。
AppGoat自体の脆弱性と、ネットワークから切り離して使う理由
AppGoatは脆弱性を学ぶためのツールですが、AppGoat自体にも脆弱性が見つかっています。2017年2月には、V3.0.0以前にクロスサイト・リクエスト・フォージェリ、認証不備、DNSリバインディング、任意のコード実行の4件(CVE-2017-2099〜CVE-2017-2102、CVSS v3の最大値7.3)が公表され、V3.0.1への更新が呼びかけられました(ScanNetSecurityの記事)。ただしJVN#87662835の2017年2月17日の追記によると、2017年2月9日公開のV3.0.1はDNSリバインディングへの対応が不十分で、再修正されています。
2017年6月6日には、V3.0.2以前を対象に、任意のコード実行3件と情報漏えい1件(CVE-2017-2179〜CVE-2017-2182)が公表されました。JVN#01404851によると、細工されたURLにアクセスすると、AppGoatが動いているPC上で任意のコードを実行される可能性があり、CVSS v3の基本値は6.3です。修正版のV3.0.3と同じ日に、利用許諾条件合意書には「AppGoat利用時にネットワーク接続を行わない」旨が追記され、起動時の遵守事項もV3.0.3から加わりました。
ここから言えるのは2点です。第一に、手元や社内の共有フォルダに残っている2017年以前のzipは使わず、申請し直してV3.0.5を入れてください。第二に、遵守事項の「LANケーブルを外す」は形式的な注意ではありません。AppGoatはわざと脆弱なアプリを動かすツールなので、学習中にほかのサイトを開いている状態で罠のリンクを踏むと、学習用PCが攻撃の入口になります。研修でネットワークが必要な集合学習モードでは、インターネットにつながらない研修室専用のネットワークを用意するのが前提です。
AppGoatとWebGoat・DVWA・Juice Shopの違い
脆弱なWebアプリを使う学習ツールはほかにもあります。2026年10月時点の現行版と、起動方法を並べると次のとおりです。
| ツール | 提供元 | 現行版 | 動かし方 | 既定の接続先 |
|---|---|---|---|---|
| AppGoat | IPA | V3.0.5(2023年2月) | Windows 11でzipを解凍 | ポート80 |
| WebGoat | OWASP | v2026.5(2026年10月) | Docker または Java 25 | ポート8080 |
| DVWA | OSS(digininja) | 最新タグ2.5/利用は最新ソース推奨 | Docker Compose | ポート4280 |
| Juice Shop | OWASP | v20.3.0(2026年10月) | Docker または Node.js | ポート3000 |
冒頭で触れた「Dockerで起動」「java -jarで起動」「ポート8080」は、WebGoatのREADMEにある起動方法です。WebGoatはDockerイメージwebgoat/webgoatで動き、localhost:8080/WebGoatで開きます。AppGoatにはDockerイメージもJavaのjarファイルも無いので、両者を混同した手順は動きません。
違いの中心は、教材の作りと更新の頻度です。AppGoatはIPAの日本語教材で、攻撃演習の後にソースコードの修正演習が続き、集合学習モードで受講者の進捗も管理できます。一方、WebGoatやJuice Shopは2026年10月にも新しい版が出ており、Dockerのコマンド1行で起動できます。DVWAはセキュリティレベルを切り替えて、同じ脆弱性のコードが段階的に堅くなる様子を比べられます。詳しくはDVWAの環境構築とセキュリティレベルの使い方で解説しています。
AppGoatを選ぶ場面と、ほかのツールを選ぶ場面
AppGoatを選ぶべきなのは、Windows PCが使える開発者や新人に、日本語でWebアプリケーションの基本的な脆弱性を攻撃と修正の両面から教えたい場合です。社内研修で40人までの受講者の進み具合を講師が把握したい場合も、集合学習モードを持つAppGoatが合います。
次の場合はAppGoatを選ぶべきではありません。
- Macだけ・Linuxだけの環境:動作環境はWindows 11だけです。Docker上で動くWebGoatやDVWAのほうが早く始められます。
- API・SPA・クラウド設定の脆弱性を学びたい:12種の一覧にSSRFやXXEといった名称は無く、題材は従来型のWebアプリケーションです。最近の題材まで扱うならJuice ShopやWebGoatを使います。
- 自社サービスの脆弱性を見つけたい:AppGoatは学習用の疑似環境で、実在のアプリを検査する機能はありません。
AppGoatで原理をつかんだ後は、実際のアプリを検査する道具に進みます。OWASP ZAPの診断項目と使い方やBurp Suiteによる通信傍受の仕組みで手動・自動の検査を学び、IPAの13項目に沿ったWebアプリケーション脆弱性診断の項目で診断の全体像を押さえるのが順当です。自社のWebサービスを公開前に検査したい段階では、学習ツールではなく脆弱性診断・セキュリティ診断の依頼を検討してください。
よくある質問
AppGoatのポート番号はいくつですか?
既定ではApacheがポート80で起動し、特定の演習ではポート50001も使います。ほかのプログラムがこれらのポートを使っていると起動できないため、そのプログラムを終了するか、環境設定アプリでポート番号を未使用の番号に変えて保存してから起動してください。
AppGoatは無料で使えますか?
無償です。ただし利用許諾条件合意書に同意して申請する必要があり、個人学習モードは申請フォーム、集合学習モードはメールで申し込みます。集合学習モードの有効期限設定ファイルにも費用はかかりません。
AppGoatはMacやLinuxで動きますか?
IPAが示す動作環境はWindows 11(x64 / ARM)だけで、macOSとLinuxは含まれていません。Macで使いたい場合はWindows 11の仮想環境を用意することになりますが、IPAは仮想環境での動作を明記していません。
AppGoatの最新バージョンは?
2023年2月28日に公開されたV3.0.5です。V3.0(2016年10月)以降は修正版が続いており、V3.0.2以前にはAppGoat自体の脆弱性があるため、古いファイルは使わないでください。
AppGoatは日本語に対応していますか?
IPAが作った日本語の教材で、総合メニューや演習の説明、付属のFAQは日本語で書かれています。用語を日本語で確かめながら基礎を固めたい人に向いています。