アプリケーション開発の際に問題となる脆弱性(セキュリティ上の弱点となり得るポイント)を、体験しながら学べるCAI(コンピュータ支援教育)ソフト。「脆弱性体験学習ツール AppGoat」は、“安全なアプリケーション開発技法を幅広く学習できる”対話型のソフト。仮想の掲示板やSNSの管理画面などに対して、実際にユーザ自身が攻撃を行うことで、「どのような問題点があるのか」「どのような対策を施せばよいのか」を体験・学習できるようになっている。ソフトは「ウェブアプリケーション版」「サーバ・デスクトップアプリケーション版」の二つに分けられ、「ウェブアプリケーション版」では、
- クロスサイト・スクリプティング
- SQLインジェクション
- CSRF(クロスサイト・リクエスト・フォージェリ)
などに分類された計15テーマを、また「サーバ・デスクトップアプリケーション版」では、- バッファ・オーバーフロー
- ディレクトリ・トラバーサル
- リソースリーク
- 整数オーバーフロー
- フォーマット文字列
- 認証・認可
などに分類された計13テーマを学ぶことができる。学習は、IEなどのWebブラウザを使って行う。ステップに従ってリンクをクリックしながら、(1)テーマの説明、(2)原理の解説、(3)演習、(4)影響の解説、(5)対策方法の解説という順序で進む。(3)演習では、ページ上に作成された仮想ブラウザに掲示板やオンラインバンキング、SNSなどの管理画面が表示され、「そこを攻撃すると、どのような影響が起きるのか」を解説を交えながら体験できる(「AppGoat」実行中は一時的にローカルサーバ環境が構築され、サーバ環境上で動作する)。
演習内で攻撃を行う場合、スクリプトやSQL文を書く必要があるが、スクリプトやSQLの知識がない人でも、ヒント内に書かれたサンプルをコピー&ペーストすれば、問題点を体験できるようになっている。
「ウェブアプリケーション版」で学べる内容は以下の通り(以下では、説明の例として「ウェブアプリケーション版」を用いる)。
「クロスサイト・スクリプティング」では、掲示板にスクリプトを含む書き込みを投稿し、リンクをクリックした場合に偽装ページにジャンプさせたり、ポップアップメッセージを表示したりといった迷惑行為を体験できる。偽装されたページでアンケートなどを行って、個人情報を盗み出したり、Cookieを悪用してなりすましを行ったりといったケースもある。
「SQLインジェクション」では、会員制ポータルサイトや大規模フォーラム、SNSなどの動作に欠かせないSQLデータベースで、本来想定されていないコマンド/パラメータが入力されたことによる不正操作について学べる。漏洩した個人情報からなりすましが行われたり、データ自体が書き換えられてしまったりといったトラブルの原因となる。
「CSRF(クロスサイト・リクエスト・フォージェリ)」は、Webページ上に仕込まれた不正スクリプトによって、ユーザの意図しないリクエストを発生させるもの。ショッピングサイトからログアウトしないまま、不正スクリプトがあるページにアクセスしてしまうことで、勝手に注文をしてしまうといったケースがある。
さらに「その他」という項目もある。エラーメッセージの内容やデバッグモードをONにしたまま放置しておくことで、データが格納されたファイルの名前やデータベーステーブルのフィールド名などが漏洩してしまうといったケースについて学べる。
いずれのテーマも体験者(ユーザ)が攻撃側となってスクリプトやSQLコマンドを操作することで、アプリケーション作成時にセキュリティホールとなりやすい部分を実感できるように構成されている。