情報セキュリティセミナー2006
技術コース 専門編
本テキストのpdfファイルは
http://www.ipa.go.jp/security/event/2006/sec-sem/kaisai.html
技術コース 専門編について
対象
企業のウェブサイト、ネットワークの安全性
向上に関して理解を深めたい方
ポイント
ウェブサイトやネットワークの安全な運用
管理方法について、ケーススタディを通して
技術コース 専門編
ケーススタディ
1.ファイル共有ソフトに絡んだ情報流出
2.SSH経由の不正アクセス
3.SQLインジェクション
4.クロスサイト・スクリプティング
ケーススタディ 1
ファイル共有ソフトに絡んだ情報流出
Winnyを使っていないのに機密情報が流出?!
ファイル共有ソフトに絡んだ情報流出
1.1 事例の背景
1.2 情報流出はいかにして起こるのか?
1.3 原因は何だったのか?
1.4 Winnyによる情報流出への対策
1.5 流出した情報への対応
1.6 それでも収束しない情報流出
1.7 IPAで対応した、実際の相談事例
ケーススタディ 1
1.1 事例:ファイル共有ソフトに絡んだ情報流出
• Aさん:まじめなサラリーマン
– Winnyなんて使ったこともない!ヤバいんでしょ?!
– セキュリティポリシーは面倒だが、規則なので
しっかり守る、というタイプ
– ウイルス対策、OSのアップデートはきっちり
言われたとおりに実施している
• Aさんの息子B:大学生
– 実はWinnyのヘビーユーザー
■Aさんの日常
• 普段は仕事用PCと自宅内共用PCを、
きっちり使い分け
• ある日、仕事用PCの調子が急に悪くなった
• USBメモリで自宅PCに移せば仕事は
できるが・・・
– セキュリティポリシーに反するはず・・
• いつも急ぎの仕事、ましてや家庭でどうして
も仕事する場合は・・・
– 仕事のためなんだから、今回だけ規則破っても・・
■家庭マシンで仕事をする準備
• ウイルススキャン
• OSのアップデート (Microsoft Updateなど)
• 会社のマニュアルどおりの点検作業を
確実に実施・・・ → 異常なし
• ただし、会社のセキュリティポリシーには違反
• 仕事終了後、ホッとしてしまってうっかり
■息子Bの行動
• 実はダウンロード中毒
• ニュースを見て、Winnyは削除
– もうダウンロードからは足を洗ったけど・・
• 警察、自衛隊の資料、機密流出!
• またまたダウンロードしたい欲求
■息子Bの行動 (つづき)
• Winnyは怖いがWinMXなら大丈夫かも?
• 警察のものと思しきファイルを(複数)
ダウンロード
• 開く前には当然ウイルスチェック
• 最初のファイルは破損していて開け
なかった(ように見えた)
実は山田ウイルス!
■翌日会社で・・・
• 情報流出のうわさ
• 流出したファイルには顧客情報満載
• 他にも暴露されるとマズイ情報が多数
• もちろん、Aさんが使った(作った)データ
ファイル共有ソフトWinMXのネットワークから
ダウンロードしたファイルが山田ウイルスで
あり、それに感染したPCがWebサーバと化し、
■事後処理
• 謝罪、謝罪、また謝罪
• 苦情殺到
• 大きな損失(緊急、恒久対応費用)
• 出入り禁止、取引停止
■A氏のその後
• クビは免れたが・・・
• 自主退職
• 家庭崩壊
1.2 情報流出はいかにして起こるのか?
• 会社でWinny?
• 自宅でも仕事?
• 管理領域の考え方
–自宅に存在する「会社」エリア
–逆もアリ?
• どこから流出しているのか?
1.3 原因は何だったのか?
• 秘密情報取り扱いのまずさ
– 企業/組織の機密情報、個人情報
• 「匿名によるファイル共有」の危険性を
認識していない
• ウイルス感染
■問題の本質はファイル共有ソフトではない
• そもそも、そのデータを社外に持ち出し
て良かったのか?
– 持ち出しを規制する技術的仕組みは
無かったのか
– 紛失しても他人が読めないならOK?
• 一度社外に持ち出された情報は、どこ
から流出するか分からない
■公私の区別を明確に
• いくら会社でも、自宅PC環境までは
縛れない
• 会社の管理責任範囲を明確にする
ことが必須
• 会社は、管理責任範囲では最大限の
対策努力をすべき
• 会社の管理範囲外での行動も、常識の
範囲で守らせるよう努力すべき
■自宅内共用PCを仕事で使うと、
安全のグレーゾーンができてしまう
企業や組織
自宅
安全が確保されているエリア
グ
レ
ー
ゾ
■Winnyネットワークのしくみ
キャッシュ
漏洩
データ
キャッシュ
漏洩
データ
キャッシュ
漏洩
データ
キャッシュ
漏洩
データ
キャッシュに入った
ファイルは公開状態
ファイルは「どこかのコンピュータ」のキ
ャッシュという部分に存在する。しかし、
それがどこなのか、何カ所なのかを利用
者が知ることは非常に困難。
1.4 Winnyによる情報流出への対策
• Winnyによる通信を捕捉
– 捕捉できなければ止められない
• Winnyをインストールさせない
• Winnyを実行できないようにする
• 情報流出を引き起こすウイルス感染を予防
• 機密情報取り扱いルールを策定し、遵守させ
ること
■Winnyを実行できないようにする方法
• Winnyの利用禁止と削除
(Microsoft exConn blogs ウィンドウズ開発統括部)
http://www.exconn.net/Blogs/windows/archive/2006/05/11/10625.aspx
• ソフトウェア制限のポリシーで P2P ファイル
共有ソフトを実行させない方法
1.5 流出した情報への対応
• 基本的には、消えるのを待つしかない
• 流出の事実を公表する場合は、タイミン
グに注意
• 流出データの追跡サービスを利用する
• プロバイダ経由削除依頼が利く場合も
1.6 それでも収束しない情報流出
• なおもWinnyを使い続けるユーザー
• 不安を持っていても、書籍やWeb媒体などに
あおられてついやってしまう
• 事件報道によって新規参入者が・・
• そもそも危険であることを知らない
– “バッファオーバーフロー”って何?
• 「自分は感染しない」「自分だけは大丈夫」
という過信
1.7 IPAで対応した、実際の相談事例
• ウイルス対策ソフトでは何も検知されなかった
ので、情報漏えいは起きていないと考えていい
でしょ?
• 自宅で、プライベートアドレスを使って、ルータ
も使っているから、情報流出は起きないでしょ?
• パソコン自体にはWinnyを入れず、外付けの
HDDにWinnyを入れて利用しているから、
■まとめ:ファイル共有ソフトに絡んだ情報流出
• 情報流出はファイル共有ソフトとは関係なく起こりうる
– 社内にある情報へのアクセス制限やコピー制限が有効
– 機密情報の暗号化が有効
• 少なくとも、会社が管理する範囲から情報流出する
ことは、絶対にあってはならない
• 技術的に取りうる対策はできる限り施す!
– ファイル共有ソフトのトラフィックをツールで完全遮断
– ファイル共有ソフトの検知ツールでチェック
– ファイル共有ソフトを実行させない
– ウイルス対策
ケーススタディ 2
SSH経由の不正アクセス
侵入された被害者なのに同時に加害者?!
SSH経由の不正アクセス
2.1 減らない不正アクセス
2.2 事例:SSH経由の不正アクセス
2.3 原因は何だったのか?
2.4 何をしていたら防げたのか?
2.5 どのようにすれば検知できたのか?
2.6 自前で調査する場合の材料は?
2.7 対応、調査のために必要な
事前準備
ケーススタディ 2
2.1 減らない不正アクセス
• サイバー犯罪の「道具」としての不正アクセス
• 金銭が目的という傾向へと変化
• ツールによる自動攻撃など、手口も変化
• 初心者は防御が手薄になりがちで、被害を
受けやすい
• 推測容易なパスワード、脆弱性の放置、
単純な設定ミスなどが原因として多い
事例:SSH経由の不正アクセス
• 中小企業A
– 社員数100名、国内拠点3箇所
– 各拠点に、自社管理のサーバを置いている
– 本社から、SSHを利用しリモートアクセスで
管理
– 社内に情報システム部門は無く、
技術系社員の有志が本来業務
の片手間に本社でサーバ管理
事例の背景
• Webの公開サーバーは本社にのみ設置
• WebDAV + HTTPS により、拠点間で
安全にデータやり取り
• 管理用にSSH用ポートを開けていた
• 不要なサービス、プロセスは止めていた
– telnet、ftp、Xなど
■サーバ管理者の日常
• 事実上、社内のIT関連全ての“ヘルプデスク”
• オフィスアプリの操作一つにしても、電話一本
で呼び出される
• 本来業務をこなすと、サーバを止めずに運用
するだけで手一杯。メンテなんて不可能
• 何か問題が起きても、常に後手後手の対処
しか出来ていないのが現状
• 社内でのセキュリティ意識は低く、
予算取りもままならない
■インシデント発生
• 社外からの苦情
– 「お宅の管理下にあるマシンから、SSHスキャン
を受けているだけど?何とかしてよ」
– 「侵入はされてないけどいい加減うっとおしい」
• うちが加害者?
– 確かに社内から社外に向けて大量のSSHアクセ
スが発生していた!
■急ぎ、応急処置
• 内部から外部へのSSHアクセスを遮断(FW)
• 当該のサーバをネットワークから外す
– しかし、外部に公開しているウェブサーバでもあっ
たので・・・
• とりいそぎの代替サーバを用意し、「工事中」を
アナウンスするページを公開
■調査を進めると・・・
• パスワードクラッキングされ、侵入を許していた
– SSHで使用しているポート(22/tcp)への大量のアクセス
– アカウントやパスワードを変更させながらログイン操作を
繰り返し試みていた(辞書攻撃)
– テスト用に用意していたアカウントとパスワードが利用さ
れ、侵入を許してしまった
• 不審なツールのインストールと実行
– SSHスキャンツール?
– ボット?
2.3 原因は何だったのか?
• パスワード認証によるSSH接続
– 総当り攻撃や辞書攻撃により侵入される可能性
• 不要なアカウントの存在とパスワード管理の甘さ
– テスト用管理者アカウントが残っていた
– テスト用としたため、推測が容易なパスワードだった
• アクセス制限がない
– IPアドレスによる制限を設けていなかった
• ログチェックの不履行
– 業務多忙につき。。。
– そもそも、システム管理に関する取り決めがない
2.4 何をしていたら防げたのか?
• 公開鍵認証によるSSH接続
– SSHはデフォルトではパスワード認証のみ
– サーバおよびクライアントに別途設定が必要
• 適切なアカウント・パスワード管理
– 不要なアカウントは無効化(削除)する
– 強固なパスワード運用
• アクセス制限
2.5 どのようにすれば検知できたのか?
• SSHのログチェック
– SSHへのアクセス状況から推測
• IDS/IPSの導入
– ツール等による外部からのSSHへの攻撃を検知
– 「仕掛け」による内部から外部への攻撃を検知
• ファイアウォールのログチェック
– ボットによるIRC接続試行などを検知可能
• ファイル改ざん検知システムの導入
– フィッシングサイト用のファイル設置に有効
2.6 自前で調査する場合の材料は?
• 正常な状態の記録
– プロセス、サービス、各種設定ファイルなど
• 各種ログ
– SSH、ファイアウォール、IDS/IPS、ルータなど
– Mailサーバ、Webサーバソフトなど
正常状態を把握しないと、異常を判断できない
2.7 対応、調査のために必要な事前準備
• 代替サーバの用意
• 組織内の連絡網
• 証拠保全手順
(参考 RFC 3227※)
• 調査手順
• 汚染されていないコマンド(rootkit対策)
■初動対応に関する留意点
• 調査・解析を誰が実施するのかを明確に
– 自前? 外部の業者・専門家に依頼?
• 適切な対処方法を知らないならヘタに触らない
– ネットワークケーブルを抜いても大丈夫?
– ログインして調査しても大丈夫?
• 電源をそのまま落とす(緊急措置)
– 放置しているとシステムが破壊されていくようで
■まとめ: SSH経由の不正アクセス
• セキュアな運用をする
– SSHの利用には公開鍵認証を用いる
– 多重防御の原則
• 異常を早期発見するための手立てを持つ
– IDS/IPS、ログ解析ツール、改ざん検知ツールの
導入など
• 何か起きた時にどう対応するかを決めておく
– 専門家に頼む、捜査機関に頼むことも検討する
– 初動対応が重要
ケーススタディ3
SQLインジェクション
ショッピングサイトの顧客情報漏洩
SQLインジェクション
3.1 SQLインジェクション概要
3.2 事例:SQLインジェクション
3.3 問題のポイント整理
3.4 なぜ SQL 文の挿入が可能か?
3.5 エラーメッセージについて
ケーススタディ 3
3.1 SQLインジェクション概要
データ
ベース
ウェブ
アプリケーション
データベースへの命令文
を構成する入力値を送信
情報閲覧
改ざん、消去
データベースへ
命令を送信
SQLインジェクションの脆弱性
があるウェブアプリケーション
【ショッピングサイト S通販】
• 社員数10名、小規模ショッピングサイト
• 個人情報はウェブフォームからDBに保存
• サーバは自社管理、技術系社員2名が担当
• セキュリティは万全(?)
– 最新パッチの適用、ユーザ管理、アクセス
制限
3.2 事例:SQLインジェクション
• 不審人物からの脅迫
– 郵送物:S通販の顧客情報の印刷物
– 発信元非通知の電話
• S通販の顧客情報を入手した
• 要求を飲まなければネットに公開する
• S通販の対応
– 警察に相談
■顧客情報漏えい疑惑
■流出経路の想定
• 印刷物の廃棄不備?
• 内部犯行?
• Winny?
■流出経路の想定(続き)
• 印刷物の廃棄不備?
– 送付された顧客情報の印刷物をチェック
– S通販の印刷フォーマットと異なる
→ 可能性 「低」
• 内部犯行?
– 顧客情報はDB管理、技術系社員2名が運用
• Winny?
– 社内利用は禁止
– そもそも流出する情報を社員は持っていない
→ 可能性 「低」
• サイトへの不正アクセス?
– リモートアクセスを利用しているが・・・
– ウェブサイトを狙った攻撃か?
■流出経路の想定(続き)
まずはシステムの状況確認
• プロセス稼働状況
(タスクマネージャ、ps、top など)
• サービス稼動状況
(netstat など)
• ログイン、ログアウト
(w、last など)
• コマンド履歴
(history など)
確認結果
■何を調査する?
• ログの保存場所、参照方法の把握
• ログの読み方の理解
– 詳しく調べるときは生ログから調査する場合も
• ツールの導入
– Apache であれば analogなど
• 複数のログを比較
– 異常値やエラーなどの発生時刻から
• ログ取得の検討(調査前)
– デフォルトではログを記録しないサービスも
– 詳細のログまで取得するかどうか
– 保存期間、ローテート
■ログ調査のポイント
サービスログ
• リモートサービス(SSH)
/var/log/secure など
• ウェブサーバ
/var/log/httpd/以下, System32/LogFiles/W3SVC1 など
• データベース
.mysql_history, /var/lib/mysql/*.log など
• その他
■ログ調査の対象
May 7 09:27:32 shops sshd[1533]:
Failed
password
for invalid user
abe
…
May 7 09:27:33 shops sshd[1536]:
Failed
password
for invalid user
andou
…
May 7 09:27:33 shops sshd[1539]:
Failed
password
for invalid user
a-imai
…
■ログ調査:リモートサービス(SSH)
• 不正アクセスらしきものがあった
• ログインは成功はしていない
SEARCH /¥x90¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02¥xb1
¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02
¥xb1¥x02¥xb1¥x02¥xb1¥x02¥xb1¥x02...(略)...¥x90¥x90¥x
90¥x90¥x90¥x90¥x90¥x90¥x90¥x90¥x90¥x90¥x90¥x90¥x90¥x
90¥x90¥x90¥x90¥x90¥x90¥x90¥x90¥x90...(略)
■ログ調査:ウェブサーバ
• IIS の脆弱性を狙ったワーム
例:less /var/log/httpd/access_log
GET /user.cgi?uid=11%20...SELECT%20xxx%20FROM...
GET /user.cgi?uid=12%20...SELECT%20xxx%20FROM...
GET /user.cgi?uid=13%20...SELECT%20xxx%20FROM...
GET /user.cgi?uid=14%20...SELECT%20xxx%20FROM...
GET /user.cgi?uid=15%20...SELECT%20xxx%20FROM...
GET /user.cgi?uid=11%20...
SELECT%20xxx%20FROM...
GET /user.cgi?uid=12%20...
SELECT%20xxx%20FROM...
GET /user.cgi?uid=13%20...
SELECT%20xxx%20FROM...
GET /user.cgi?uid=14%20...
SELECT%20xxx%20FROM...
GET /user.cgi?uid=15%20...
SELECT%20xxx%20FROM...
• GETメソッドの通信に不審な文字列?
GET /user.cgi?
uid
=11%20...
SELECT%20xxx%20FROM...
GET /user.cgi?
uid
=12%20...
SELECT%20xxx%20FROM...
GET /user.cgi?
uid
=13%20...
SELECT%20xxx%20FROM...
GET /user.cgi?
uid
=14%20...
SELECT%20xxx%20FROM...
GET /user.cgi?
uid
=15%20...
SELECT%20xxx%20FROM...
• GETメソッドの通信に不審な文字列?
• パラメータ(uid) に SQL文?
• 同時刻帯に同様の通信が大量発生
Query
SELECT...WHERE uid=11...
Query
SELECT...WHERE uid=12...
Query
SELECT...WHERE uid=13...
Query
SELECT...WHERE uid=14...
Query
SELECT...WHERE uid=14...
less /var/lib/mysql/ipa.log
■ログ調査:データベース
Query
SELECT...WHERE uid=11...
SELECT xxx FROM...
Query
SELECT...WHERE uid=12...
SELECT xxx FROM...
Query
SELECT...WHERE uid=13...
SELECT xxx FROM...
Query
SELECT...WHERE uid=14...
SELECT xxx FROM...
サーバー:メッセージ245、レベル16、状態1、行1
構文エラー。varchar値'情報太郎'から int データ型に
変換できませんでした。
• 構文エラー発生
• 攻撃失敗?
サーバー:メッセージ245、レベル16、状態1、行1
構文エラー
。varchar値'情報太郎'から int データ型に
変換できませんでした。
サーバー:メッセージ245、レベル16、状態1、行1
構文エラー
。varchar値'
情報太郎
'から int データ型に
変換できませんでした。
クエリ
SELECT...WHERE uid=11...
SELECT xxx FROM...
実行結果
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxx
xxxxxxxxxx
Microsoft OLE DB Provider for ODBC Drivers エラー '8
0040e07 [Microsoft][ODBC SQL Server Driver][SQL S
erver]構文エラー。varchar 値
‘
情報太郎
' から int データ...
...構文エラー...'
03-5978-7527
' からint データ...
...構文エラー...'
東京都文京区本駒込
...
' からint データ...
...構文エラー...'
[email protected]
' からint データ...
■不審なログの検証(続き)
ブラウザの表示画面
(IISの場合)
■調査結果
• ウェブサーバへのリクエストを通じ、データ
ベースへ不正なアクセスがあった
• 顧客情報は、エラーメッセージの表示を
通じて入手された可能性が高い
• サーバに直接侵入された形跡はなかった
3.3 問題のポイント整理
• 外部から SQL 文の挿入が可能であった
– SQL 文を構築する際のコーディングの問題
– 設計やコーディングの見直しが必要
• エラーメッセージをブラウザに表示していた
– 開発時には必要だったが・・・
– 設定やコーディングの変更が必要
$p
=foo
'
or
'
a
'
=
'
a の場合:
SELECT * FROM a WHERE id=' ';
$p
=foo の場合:
SELECT * FROM a WHERE id=' ';
$p
=foo の場合:
SELECT * FROM a WHERE id='foo';
3.4 なぜ SQL 文の挿入が可能か?
•
特別な意味を持つ記号文字の扱いが不適切
SELECT * FROM a WHERE id='
$p
';
$p
=foo
'
or
'
a
'
=
'
a の場合:
SELECT * FROM a WHERE id='foo
'
or
'
a
'
=
'
a';
変数中の
記号文字
が意味のある文字として解釈される
■どうすればよいか?
• エスケープ処理の実施
特別な意味を持つ記号文字
が
普通の文字
として解
釈されるように処理する
例:' → ''(同じ文字の繰り返し)
$p
=foo
'
or
'
a
'
=
'
a の場合:
■エスケープ処理の実装方法
• バインド機構の利用
(プレースホルダ、バインド変数、Prepared Statement)
• エスケープ関数の利用
(DBI の quote() など)
• 置換演算子の利用
( s/'/''/g; など)
$sth = $dbh-
>prepare(
"SELECT id, name, tel, address, mail FROM usr
WHERE uid=
?
AND passwd=
?
");
$sth-
>execute(
$uid
,
$passwd
);
プレースホルダ
バインド変数
■エスケープ処理の実装例(参考)
• バインド機構を利用
$sth=$dbh-
>prepare(
"SELECT id, name, tel, address, mail FROM user
WHERE uid='
$uid
'and passwd='
$passwd
'");
$sth-
>execute();
$sql
="SELECT id, name, tel, address, mail FROM user
WHERE uid='".
$uid
."'and passwd='".
$passwd
;
$sth=$dbh-
>prepare("
$sql
");
$sth-
>execute();
■危険なコーディング例(参考)
• SQL文の組み立てにパラメータ値をそのまま利用
xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx
xxxxxxxxxx
SQL(
select uid, name, tel, birth, address,
mail from userinfo where uid=
)の実行に失敗
しました。理由: ERROR: syntax error at end
of input at character 109
3.5 エラーメッセージについて
• 攻撃者の心理
– DB 使用 → SQL インジェクションの脆弱性
■エラーメッセージを非表示にする
• コーディング(エラーハンドリング)で対応
• 設定で対応
– Apache の場合は、ErrorDocument を設定
– IISの場合は、次のように変更
※ デフォルト値は
「クライアントに詳細
な ASP のエラー
メッセージを送る」
なので注意!
• SQL文の組み立てには必ずエスケープ処理
を実装する
• エラーメッセージをそのままブラウザに表示
しない
詳細、その他のポイントは下記参照
■まとめ:SQLインジェクション
ケーススタディ4
クロスサイト・スクリプティングによる
フィッシング詐欺
「認証画面」にスクリプト混入?
クロスサイト・スクリプティング
4.1 事例:クロスサイト・スクリプティング
4.2 スクリプトを埋め込まれやすい
ウェブアプリケーションについて
4.3 改善前の
クロスサイト・スクリプティング対策
4.4 改善後の
クロスサイト・スクリプティング対策
ケーススタディ 4
4.1 事例:クロスサイト・スクリプティング
【ショッピングサイト H販売】
• 中規模ショッピングサイト
• セキュリティ対策は万全
– サーバの堅牢化、アクセス制御
– 通信はHTTPSで暗号化
– ウェブアプリケーションの脆弱性対策もばっちり
■フィッシング詐欺疑惑
• サイト利用者よりH販売に問い合わせ
– 心当たりの無いクレジットカードの請求がきた
– 請求元はH販売だが、購入した記憶なし
– サイトの登録情報が変更されていた
– フィッシング詐欺には注意していたつもりだが・・・
• H販売
■フィッシング詐欺とは
偽のウェブサイト
本物のウェブサイト
偽のウェブサイトを本物のウェブサ
イトと思い込み、認証情報やクレジ
ットカード番号を入力してしまう
利用者から入力
された重要情報
を入手する
↓
問題なし
■H販売(を装った)メール
送信者 : H販売<[email protected]>
32 inch 液晶TV : ¥100,000
https://h.example.com/login.cgi?id=24
C8AD774FA45222&sid=%E3%82%B
B%E3%82%AD%E3%83%A5%E3%8
3%AA%E3%83%86%E3%82%A3java
script:...%E3%82%BB%E3%82%AD
%E3%83%A5%E3%83%AA%E3%83
%86%E3%82%A3
利用者の行動
• メールアドレスのチェック
• 商品URLのドメインチェック
■メールからサイトへアクセス
• アクセス後のページ
利用者の心理
・ URLのドメイン、サーバ証明書は H販売のもの
xxxxxxxxxxログイン
ユーザID
パスワード
https://h.example.com/login.cgi?id=24C8AD7
・ URLチェック
・ サーバ証明書
チェック
■ログイン画面に埋め込まれたスクリプト
• アクセス後のページ
xxxxxxxxxxログイン
ユーザID
パスワード
<html>
...
<form>
<input type="text"...
<input type="password"...
...
javascript:...
...
• 実はスクリプトが埋め込まれていた
利用者
ウェブサイト
ウェブ
アプリケーション
悪意ある
ウェブサイト
■クロスサイト・スクリプティングの概要
スクリプトを混入可能な脆弱性
があるウェブアプリケーション
4.利用者のブ
ラウザ上でスク
リプトが実行
スクリプト
実行
クリック!
利用者にスクリプトを含
む文字列をリクエストさ
せるためのウェブページ
2.スクリプトを
含 む 文 字 列 を
ウェブアプリケ
ーションに送信
3.スクリプトを含む
ウェブページを出力
1.悪意あるサイトの
ウェブページを閲覧
xxxxxxxxxxxx xxxxxxxxxx