Copyright © 2011 独立行政法人 情報処理推進機構
脆弱性体験学習ツール 「AppGoat」ハンズオンセミナー
ウェブアプリケーション編
Copyright © 2011 独立行政法人 情報処理推進機構 2
講義内容
AppGoatの説明
起動手順、学習の進め方、利用シーン紹介
脆弱性学習(演習あり)
SQLインジェクションの脆弱性
クロスサイト・スクリプティングの脆弱性
アンケート記入
Copyright © 2011 独立行政法人 情報処理推進機構
「AppGoat」の説明
Copyright © 2011 独立行政法人 情報処理推進機構
AppGoat(アップゴート)とは
学習
ウェブアプリケーション版
サーバ・デスクトップ
アプリケーション版
ウェブアプリケーション版
サーバ・デスクトップアプリケーション版
クロスサイト・スクリプティングやSQLインジェクションなどを題材とした、15の学習テーマから構成されている。
バッファオーバーフローや整数オーバーフローなどを題材とした、13の学習テーマから構成されている。
学習
教材や演習環境を使って、脆弱性を突いた攻撃が成功する仕組みから実際の対策方法までを学習するツール
– 教材:脆弱性対策に必要な情報を図解したもの
– 演習環境:故意に脆弱性を埋め込んだアプリケーション
– 下記の2種類がある
4
本講義では、 ウェブアプリケーション版の演習環境を使います。
Copyright © 2011 独立行政法人 情報処理推進機構
学習テーマ一覧 -ウェブアプリケーション版-
• ウェブアプリケーション版は、下記表の脆弱性を学習可能
5
講義内で演習実施
●
Copyright © 2011 独立行政法人 情報処理推進機構
起動手順(準備)
IPAまたはVectorのウェブサイトからZIPファイルをダウンロードします。
– 下記からダウンロード可能です http://www.ipa.go.jp/security/vuln/appgoat/index.html
http://www.vector.co.jp/soft/dl/winnt/edu/se488644.html
– 動画による使い方の解説もあります http://www.youtube.com/watch?v=uuH8JBgTdLc
6
本講義では、 お手元にあるCD-ROMから ZIPファイルをコピーします。
Copyright © 2011 独立行政法人 情報処理推進機構
起動手順(手順1)
ZIPファイルを展開し、IPAToolフォルダの中にある、「Start.bat」をダブルクリックします。
7
Copyright © 2011 独立行政法人 情報処理推進機構
起動手順(手順2)
ランタイムのインストール確認ダイアログが表示されますが、ウェブアプリケーション環境の演習には必要ないため、「いいえ」を選択します。
8
Copyright © 2011 独立行政法人 情報処理推進機構
起動手順(手順3)
Windowsファイアウォールの警告ダイアログが表示された場合は、「ブロックする」を選択します。
9
Copyright © 2011 独立行政法人 情報処理推進機構
起動手順(手順4)
ウェブブラウザが起動し、AppGoatの総合メニューが表示されます。これでツールが使用可能になりました。
10
Copyright © 2011 独立行政法人 情報処理推進機構
学習の進め方
左部に表示される「テーマ一覧」から学習テーマを選択します。あとは、流れに沿って学習を進めていきます。
11
学習テーマ選択後の流れ
脆弱性
原理解説 演習 影響解説
対策方法
解説
脆弱性発見!
脆弱性の発見
にチャレンジ!
演習のイメージ
脆弱性を突いた攻撃が成功する仕組みを体験することで、脆弱性をより理解できます。
Copyright © 2011 独立行政法人 情報処理推進機構
企業での利用シーン紹介
社内のセキュリティ研修で利用する
開発前のスキルチェックで利用する
12
研修担当者が講師となり、
ハンズオン形式で教える。
開発メンバーの理解度を確認する。
AppGoatを使った講義の補助資料を公開しています。
http://www.ipa.go.jp/security/vuln/documents/appgo
at_material01.pdf
「安全なウェブサイトの作り方」と併せて利用すると効果的です。
http://www.ipa.go.jp/security/vuln/websecurity.html
Copyright © 2011 独立行政法人 情報処理推進機構
AppGoatを使う際の注意事項
AppGoatでは、脆弱性を埋め込んだ演習環境に対して、疑似的に攻撃します。これは攻撃手法を理解して対策につなげるためです。
本講義で学習した知識を基に、下記に該当する行為を行わないようにしましょう。
(1) 第三者のコンピュータシステムの正常な動作に支障をきたす行為
(2) 第三者のウェブサイトへの攻撃行為
13
Copyright © 2011 独立行政法人 情報処理推進機構
SQLインジェクションの脆弱性
Copyright © 2011 独立行政法人 情報処理推進機構 15
講義内容
用語の簡易説明
SQLインジェクション脆弱性の概要
演習:AppGoatを用いた疑似攻撃体験
対策のポイント
Copyright © 2011 独立行政法人 情報処理推進機構
登場する用語の簡易説明
ウェブアプリケーション
– ウェブサーバ上で動作するアプリケーション。
– 利用者はウェブブラウザを用いてウェブサーバにアクセスし、ウェブアプリケーションを利用する。
データベース
– 大量の情報を保存し、効率よく情報にアクセスできるように加工したデータの集まり。
SQL
– データベースを管理するシステム(DBMS)において、データの操作や定義を行うための問合せ言語のこと。
16
Copyright © 2011 独立行政法人 情報処理推進機構 17
SQLインジェクション脆弱性の概要
脅威
– データベースへの命令(SQL文)の意味を書き換えられ、データベースを不正に操作されてしまう
• 情報の改ざんや漏えい、認証の回避、OSコマンドの実行
原因
– ウェブアプリケーションにおける、データベースへの命令(SQL文)の組み立て方に問題
注意が必要なウェブアプリケーション
– データベースを利用しているウェブアプリケーション
Copyright © 2011 独立行政法人 情報処理推進機構 18
SQLインジェクション攻撃のイメージ図
SQL インジェクションの脆弱性がある場合、悪意あるリクエストにより、データベースの不正利用をまねく可能性があります。
SQL インジェクション
データベースへの命令文を構成する入力値を送信
データベースへ命令を送信
SQLインジェクションの脆弱性があるウェブアプリケーション
悪意のある人 ウェブサイト
データベース
改ざん情報漏えい
消去
SQL文の組み立て方に問題
Copyright © 2011 独立行政法人 情報処理推進機構
SQL文の組み立て方に問題があると
ウェブサーバ +
ウェブアプリ
データベース
user 全てのユーザ情報
SELECT * FROM user WHERE id=‘$ID’ SQL文例
① ②
③ ④
19
・データベースが不正に操作されてしまう!!
ID入力欄に下記文字列を入力し
リクエストを送信する。
ユーザの入力値をもとにSQL文を組み立て、データベースに送信する。
SQL文の実行結果を
ウェブアプリに返す。 全てのユーザの情報を参照できる
悪意がある人
john ’ OR ‘A’=‘A
SELECT * FROM user
WHERE id= ‘ john’ OR ‘A’=‘A ’ john’ OR ‘A’=‘A
「全て」を意味する
IDを入力すると、該当するユーザ情報を表示するウェブアプリ
Copyright © 2011 独立行政法人 情報処理推進機構 20
アプリケーション開発者が想定していたSQL文
SELECT * FROM user WHERE id=' ';
攻撃により、意味が書き換えられたSQL文
SELECT * FROM user WHERE id=' john' OR 'A'='A ';
※SQL文中の「'john'」のような定数をリテラルと呼び、文字列としてのリテラルを文字列リテラルと呼ぶ。数値は数値リテラルと呼ぶ。
文字列リテラルは「'」で括り、数値リテラルは「'」で括らない。
攻撃によりSQL文の意味が書き換えられる
条件: Id列の値と、「'」で括られた文字列リテラル(※)が一致する行
条件: Id列の値と、文字列リテラル john が一致する行
または
文字列リテラルAと文字列リテラルAが一致する行(常に成立する条件)
john
john' OR 'A'='A
はユーザからの入力値を表す
Copyright © 2011 独立行政法人 情報処理推進機構 21
脅威は情報漏えいに限らない。データベースを制御され、データが作成/読み込み/更新/
削除される可能性がある。
– Create (作成): 偽データの追加の脅威
– Read (読込): データの漏えいの脅威
– Update(更新): 偽データでの上書きの脅威
– Delete (削除): データの削除の脅威
OSコマンドの実行 – ストアドプロシージャ等を利用したOSコマンドの実行の可能性がある。
SQLインジェクション攻撃の脅威
Copyright © 2011 独立行政法人 情報処理推進機構
SQLインジェクションの脆弱性を 取り巻く状況
22
クレジットカード番号や個人情報の漏えい
– 音響機器・楽器販売サイト
– 健康食品や医薬品販売サイト
– 化粧品販売サイト
– 雑貨販売サイト
ウイルス感染などを引き起こすウェブサイトの改ざん
– ウイルス対策ソフト開発会社
– 自動車情報サイト
– 政府関連のウェブサイト
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]AppGoatを用いた疑似攻撃体験 [時間]30分(解説含む)
AppGoatを起動し、SQLインジェクションの下記テーマの演習を実施してください。
「不正なログイン(文字列リテラル)」
画面上に「Congratulations!! 」と表示されると演習クリアです。
23
クリアした方は、下記テーマの演習に挑戦してみてください。
「情報漏えい(数値リテラル)」
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]演習環境へのアクセス方法
AppGoat起動後、①学習テーマを選択し、
②パンくずリストの「演習」をクリックします。
24
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]演習の進め方
下記のように、ウェブアプリケーションがどのようにSQL文を組み立てているのか、想像しながら演習問題を解いてみましょう。
– 「前提条件」ボタンを押下し、どのようなSQL文が使用されているか確認する。
– 様々な値でログインを試み、ウェブアプリケーションの挙動を確認する。
• ログインIDに「yamada」、パスワードに「P@ssword」を入力する。
• ログインID、パスワードともに「yamada」を入力する。
• 入力欄のいずれかにシングルクォート「'」を入力する。
25
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]行き詰まった場合
問題を解くのに行き詰まった場合は、AppGoatの
ヒント機能を参考に演習を進めてください。
不明な点がございましたら、お気軽にお声掛けください(または挙手)。補助講師が伺います。
26
AppGoatのヒント機能
Copyright © 2011 独立行政法人 情報処理推進機構
[演習解説]
演習解説は、別紙を参照してください。別紙は、演習時間終了後に閲覧するようにしてください。
27
Copyright © 2011 独立行政法人 情報処理推進機構
SQLインジェクション脆弱性の対策
根本的解決 「脆弱性の原因を作り込まない実装」 – SQL文の組み立て時に、パラメータの値を正しくリテラルとして展開する
• SQL文の組み立ては全てプレースホルダで実装する。
• SQL文の組み立てを文字列連結により行う場合は、エスケープ処理等を行うデータベースエンジンのAPIを用いて、SQL文のリテラルを正しく構成する。
保険的対策 「攻撃による影響を軽減する対策」※
–詳細なエラーメッセージの抑止
–データベースアカウントの権限見直し
28 ※ 脆弱性の原因そのものを無くす対策ではない
Copyright © 2011 独立行政法人 情報処理推進機構
根本的解決
プレースホルダによるSQL文の組み立て – パラメータを「?」などの記号で示しておき、後に、そこへ実際の値を機械的な処理で割り当てる方法のこと
– 記号「?」をプレースホルダと呼び、そこへ実際の値を割り当てることを「バインドする」と呼ぶ
– プレースホルダを用いることで、SQLインジェクション攻撃によりSQL文の構文を変化させられないようにする
29
PreparedStatement prep = conn.prepareStatement("SELECT * FROM employee WHERE name=?");
prep.setString(1, "山田"); Java
プレースホルダ
バインドする
Copyright © 2011 独立行政法人 情報処理推進機構
根本的解決
プレースホルダの種類
–バインドをいつ行うのかによって、下記の2種類に分けられる。
30
静的プレースホルダ
データベース側がバインド処理
後からSQL文の構文が変化することがなく、原理的にSQLインジェクションの可能性がない
動的プレースホルダ
ウェブアプリケーション側のライブラリ内でバインド処理
ライブラリの実装にバグがあった場合は、攻撃によりSQL文の構文を変化させられてしまう可能性を否定できない
静的プレースホルダを推奨
Copyright © 2011 独立行政法人 情報処理推進機構
静的プレースホルダ使用時のSQL文実行の流れ
31
ウェブサイト 利用者
SELECT *FROM table WHERE id = ‘●’ and passwd = ‘▲’
●=satou, ▲=a15T ●=satou, ▲=a15T
SELECT *FROM table WHERE id = ‘satou’ and passwd = ‘a15T’
実行結果
ウェブアプリケーション データベース
静的プレースホルダ
SELECT *FROM table WHERE id = ‘●’ and passwd = ‘▲’
実行結果
●=takana, ▲=vRi5 ●=takana, ▲=vRi5
SELECT *FROM table WHERE id = ‘takana’ and passwd = ‘vRi5’
実行結果
実行結果
Copyright © 2011 独立行政法人 情報処理推進機構 32
プレースホルダの使用例 (根本的解決)
静的プレースホルダを使用(PHP + PostgreSQL) <?php
require_once 'MDB2.php';//ライブラリのロード
$db = MDB2::connect('pgsql://username:password@hostname/dbname' .
'?charset=utf8');
if(PEAR::isError($db)) {
//エラー処理
}
$stmt = $db->prepare('SELECT * FROM atable WHERE name=? and num=?',
array('text', 'integer'), array('text', 'text', 'integer'));
$rs = $stmt->execute(array($name, $num)); // 文字列型と整数型の変数
if(PEAR::isError($rs)) {
//エラー処理
}
// 以下は検索結果の表示
while($row = $rs->fetchRow()) { printf("%s:%s:%s¥n", $row[0], $row[1], $row[2]);
} 参考:「安全なSQLの呼び出し方」P.19
MDB2を用いたSQL呼び出しのサンプルコード
Copyright © 2011 独立行政法人 情報処理推進機構 33
保険的対策
攻撃による影響を低減する対策
詳細なエラーメッセージを表示しないようにする – 詳細なデータベースに関するエラーメッセージをウェブページに表示 させない
– エラーを表示するとしても、内容は最小限にする
データベースアカウントの権限見直し – 「権限全部入り」のアカウントは使わない
• 既存のテーブルを読み書きするだけなのに、テーブル操作や管理等の 権限はいらない
• 権限を必要最小限にすれば、防げる攻撃もある
その他の対応 – 収集する情報および、データベースに格納する情報を見直す
– ウェブサイト利用者のパスワードはそのまま保存しない
Copyright © 2011 独立行政法人 情報処理推進機構
SQL文の組み立て時には、プレースホルダを使用して、パラメータを正しくリテラルとして展開する。
その他の対策は、「安全なウェブサイトの作り方」、「安全なSQLの呼び出し方」を参照。
対策のおさらい
34
安全なウェブサイトの作り方 改訂第5版
別冊:「安全なSQLの呼び出し方」 http://www.ipa.go.jp/security/vuln/websecurity.html
Copyright © 2011 独立行政法人 情報処理推進機構
クロスサイト・スクリプティングの脆弱性
Copyright © 2011 独立行政法人 情報処理推進機構 36
講義内容
用語の簡易説明
クロスサイト・スクリプティング脆弱性の概要
実習:AppGoatを用いた疑似攻撃体験
対策のポイント
Copyright © 2011 独立行政法人 情報処理推進機構
登場する用語の簡易説明
HTML
– ウェブページを記述するためのマークアップ言語。
– 文書の一部を“<”と“>”で挟まれた「タグ」と呼ばれる特別な文字列で囲うことにより、文章の構造や修飾についての情報を文書に埋め込んで記述することができる。
Cookie
– ウェブサーバとウェブブラウザ間で状態を管理するために使われる。例えば、ウェブサイトの訪問回数や、ユーザ認証後の状態を管理するために使われる。
37
Copyright © 2011 独立行政法人 情報処理推進機構 38
クロスサイト・スクリプティング脆弱性の概要
脅威
– 出力するウェブページ(HTML)を書き換えられ、ウェブページを操作されてしまう
• 本物サイト上に偽のページが表示される、Cookieを取得される等
原因
– ウェブページ出力(HTML生成)の実装に問題
注意が必要なウェブアプリケーション
– 動的にウェブページを出力するウェブアプリケー
ション
Copyright © 2011 独立行政法人 情報処理推進機構 39
クロスサイト・スクリプティング攻撃のイメージ図
ウェブアプリケーション
3.スクリプトを含むウェブページを出力
悪意のある人
利用者のブラウザ悪意のある人が用意した罠ページ
1-a.罠とは知らず、悪意あるサイトの罠ページを閲覧
1-b.罠リンクを含むメールを送信
ウェブサイト
リンク
クリック!
利用者のメーラ
2.クリック等により、スクリプトを含む文字列を送信
4.利用者のブラウザ上でスクリプトが実行
Cookie漏えい
偽ページの表示
スクリプト実行
5.スクリプトの内容によってはCookie情報などが漏えい
利用者
• 罠ページや罠リンクへのアクセスから、利用者が被害を受ける
HTML生成の
実装に問題
Copyright © 2011 独立行政法人 情報処理推進機構
HTML生成の実装に問題があると
ウェブサーバ +ウェブアプリ
検索キーワード IPA
検索キーワード <s>IPA</s>
ウェブサーバ +ウェブアプリ
<s>は、取り消し線を引くHTMLタグ
<html> 【IPA 】を含む検索結果 …</html>
IPA
<html> 【<s>IPA</s> 】を含む 検索結果 …</html>
<s>IPA</s>
"<" および ">" が出力され、HTMLタグとして認識されてしまう (表示が崩れる)。
【IPA】を含む 検索結果
【IPA】を含む 検索結果
①
② ③
①’
②’ ③’
利用者
利用者
40
正常系
異常系
Copyright © 2011 独立行政法人 情報処理推進機構 41
アプリケーション開発者が想定していたHTML
攻撃により、書き換えられたHTML
攻撃によりHTMLを書き換えられる
<html> 【IPA 】を含む検索結果 …</html>
IPA
<html> 【<s>IPA</s> 】を含む 検索結果 …</html>
<s>IPA</s>
【IPA】を含む検索結果
【IPA】を含む検索結果
HTMLソース ウェブブラウザ
HTMLソース ウェブブラウザ
攻撃により、<script>タグとして認識させた場合には、利用者のウェブブラウザ上で任意のスクリプトが実行されてしまう。
Copyright © 2011 独立行政法人 情報処理推進機構
HTMLを書き換えられてしまうと
42
偽情報の表示
悪意あるサイトへの誘導
なりすましに
つながる
情報の窃取
Copyright © 2011 独立行政法人 情報処理推進機構 43
クロスサイト・スクリプティング攻撃の脅威
本物サイト上に偽のページが表示される
– 偽の情報の流布による混乱
– フィッシング詐欺による重要情報の漏えい
– アドレスバーに表示されているドメインは正規のものであるため、利用者が罠と気付きにくい
ブラウザが保存しているCookie を取得される
– Cookieにセッション ID が格納されている場合、さらに利用者への成りすましにつながる
任意のCookieをブラウザに保存させられる
– セッションIDが利用者に送り込まれ、「セッションIDの固定化」攻撃に悪用される
Copyright © 2011 独立行政法人 情報処理推進機構
クロスサイト・スクリプティングの脆弱性を取り巻く状況
脆弱性による被害や騒動があったサイト
– 動画共有サービス
– ミニブログサイト
– バグ管理システム
– ウェブメール
– クラウドを使ったデータ管理サービス
IPAに届け出られたクロスサイト・スクリプティングの脆弱性は、2300件以上(2011年3月末)
44
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]AppGoatを用いた疑似攻撃体験 [時間]30分(解説含む)
AppGoatを起動し、クロスサイト・スクリプティングの下記テーマの演習を実施してください。
「アンケートページの改ざん(反射型)」
画面上に「Congratulations!! 」と表示されると演習クリアです。
45
クリアした方は、下記テーマの演習に挑戦してみてください。
「掲示板に埋め込まれるスクリプト(格納型) 」
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]演習環境へのアクセス方法
AppGoat起動後、①学習テーマを選択し、
②パンくずリストの「演習」をクリックします。
46
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]演習の進め方
下記のように、ウェブアプリケーションがどのようにHTMLを生成しているのか、想像しながら演習問題を解いてみましょう。
– アンケートページで様々な値を入力し、入力内容確認ページやエラーページを表示させる。
– アンケートページで入力した値が、どのようにHTMLに反映されているか確認する。
47
アンケートページ上で右クリックし、「ソースを表示」でHTMLソースを表示する。
Internet Explorer
アンケートページ上で右クリックし、「このフレーム」⇒「フレームのソースを表示」でHTMLソースを表示する。
Firefox
Copyright © 2011 独立行政法人 情報処理推進機構
[演習]行き詰まった場合
問題を解くのに行き詰まった場合は、AppGoatの
ヒント機能を参考に演習を進めてください。
次のスライドの財団法人 地方自治情報センター
(LASDEC)の資料抜粋(項番2.4)を参照ください。
48
ウェブ健康診断 - 財団法人 地方自治情報センター(LASDEC) 平成22年度版ウェブ健康診断仕様 Internet公開用
https://www.lasdec.or.jp/cms/resources/content/1284/H22_web_kenko_shindan.pdf
AppGoatのヒント機能
脆弱性の検出パターンや脆弱性有無の判定基準の目安が記載されています
Copyright © 2011 独立行政法人 情報処理推進機構
平成22年度版ウェブ健康診断仕様(抜粋)
地方自治体向けの脆弱性有無確認の参考資料
49
[
参考]
平成22年度版ウェブ健康診断仕様 Internet公開用
https://www.lasdec.or.jp/cms/resources/content/1284/H22_web_kenko_shindan.pdf
Copyright © 2011 独立行政法人 情報処理推進機構
[演習解説]
演習解説は、別紙を参照してください。別紙は、演習時間終了後に閲覧するようにしてください。
50
Copyright © 2011 独立行政法人 情報処理推進機構
クロスサイト・スクリプティング脆弱性の対策
HTML テキストの入力を許可しない場合
HTML テキストの入力を許可する場合
全てのウェブアプリケーションに共通の対策
51
-根本的解決
・HTMLにおける特別な記号文字をエスケープ処理する
・URL 出力時のスキームを制限する
・スクリプト要素の内容を動的に生成しない
-保険的対策
・入力値チェックをする
-根本的解決
・構文解析木を作成して、必要な要素のみを抽出する
-保険的対策
・入力された HTML テキストから、スクリプトを除く
掲示板やブログ等のアプリ
検索や情報登録等の機能を有するアプリ
・文字コードを正しく指定する
Copyright © 2011 独立行政法人 情報処理推進機構 52
& → & < → < " → " > → > ' → '
•HTMLにおける特別な意味を持つ「記号文字」を文字参照に置換 (HTMLを許可しない場合)
•例:
入力値:<script>alert("test");</script>
置換後:<script>alert("test");</script>
エスケープ処理(HTML不許可/根本的解決)
Copyright © 2011 独立行政法人 情報処理推進機構 53
エスケープ処理なし
エスケープ処理あり
エスケープ処理(HTML不許可/根本的解決)
<input type="text" id="test" value=""><script>alert('ipa');</script>" />
HTMLソース
<input type="text" id="test"
value=""><script>alert('ipa');</script>" />
HTMLソース
ウェブブラウザ上の表示
ウェブブラウザ上の表示
scriptタグとして解釈された
Inputタグのvalue属性の値と解釈された
Copyright © 2011 独立行政法人 情報処理推進機構
そもそもエスケープ処理って?
54
HTMLやSQLの構文毎に異なる、特別な意味を持つ「記号文字」(特殊記号)を"文字そのもの"
として扱うために行う処理。
– HTMLにおける特殊記号は、「<」「"」「'」「&」など
– SQLにおける特殊記号は、「'」「_」「%」など
特殊記号の中でも「データの区切り」を表す記号をエスケープすることが、セキュリティ上重要。
– HTMLにおけるデータの区切り記号は、「<」「"」など
– SQLにおけるデータの区切り記号は、「'」など
Copyright © 2011 独立行政法人 情報処理推進機構
入力値チェックの位置づけ(保険的対策)
入力値チェックとは、利用者が入力した値の書式を確認することが主目的。
– 例:パスワードの長さや使用可能な文字種のチェック
電話番号やメールアドレスの書式チェック
脆弱性による被害を低減する役割を果たすことがあるが、入力値チェックだけでは防げない。
55
参考:脆弱性体験学習ツールAppGoat
クロスサイト・スクリプティングの「不完全な対策」
Copyright © 2011 独立行政法人 情報処理推進機構
ウェブブラウザ側の クロスサイト・スクリプティング対策
ウェブブラウザには、クロスサイト・スクリプティング攻撃を防ぐ「XSSフィルタ」機能が備わっているものがある。
XSSフィルタの検知ロジックは様々。誤検知や検知しない可能性もある。
根本的には、ウェブアプリケーション側で対策する必要がある。
56
[
参考]
Copyright © 2011 独立行政法人 情報処理推進機構
対策のおさらい
ウェブページを出力する際には、HTMLにおける特
別な意味を持つ記号文字をエスケープすることが必要。
ウェブサイトの性質によってエスケープ方法が異なる場合がある。詳しくは「安全なウェブサイトの作り
方」を参照。
57
安全なウェブサイトの作り方 改訂第5版
http://www.ipa.go.jp/security/vuln/websecurity.html
Copyright © 2011 独立行政法人 情報処理推進機構
最後に
脆弱性が生まれる原理や対策方法の理解を深めるために、AppGoatを使ってウェブアプリケーションの挙動を確認しました。
脆弱性対策を学習するために、AppGoatを活用いただけましたら幸いです。
– セミナー講師が脆弱性対策を教える際の補助ツールとして
– 社内への脆弱性対策の教育に
– アプリケーション開発者に対する脆弱性対策学習を支援するツールとして
58
Copyright © 2011 独立行政法人 情報処理推進機構
アンケート記入
お疲れ様でした
AppGoatに対する要望や意見を収集するために、IPAのアンケートにご協力お願いします。
59