• 検索結果がありません。

– PHP 5

2.1 事例:クロスサイト・スクリプティング

【ショッピングサイト H 販売】

• 中規模ショッピングサイト

• 最強のセキュリティ対策と自負

サーバの堅牢化、アクセス制御

通信は

HTTPS

で暗号化

フィッシング詐欺疑惑

• サイト利用者より H 販売に問い合わせ

心当たりの無いクレジットカードの請求がきた

請求元は

H

販売だが、購入した記憶なし

サイトの登録情報が変更されていた

フィッシング詐欺には注意していたつもりだが・・・

• H 販売の対応

調査するので、詳細の情報を教えて欲しい

フィッシング詐欺とは

偽のウェブサイト 本物のウェブサイト

悪意のある人 利用者

偽のウェブサイトを本物のウェブサイ トと思い込み、認証情報やクレジット カード番号を入力してしまう

利用者から入力 された重要情報 を入手する

フィッシング詐欺の様々な手口

問題なし

実際にアクセス

H販売(を装った)メール

送信者

: H

販売

<info@h.example.com>

32 inch 液晶TV : ¥100,000

https://h.example.com/login.cg i?id=24C8AD774FA45222&sid=%E3%

82%BB%E3%82%AD%E3%83%A5%E3%83%

AA%E3%83%86%E3%82%A3javascript :...%E3%82%BB%E3%82%AD%E3%83%A 5%E3%83%AA%E3%83%86%E3%82%A3

利用者の行動

•メールアドレスのチェック

•商品URLのドメインチェック

•ブラウザも最新

メールからサイトへアクセス

• アクセス後のページ

利用者の心理

URL

のドメイン、サーバ証明書は H販売のもの

・ 安心してログインできる

https://h.example.com/login.cgi?id=24C8AD7

URL問題なし

暗号化されている

証明書の警告も出ない

xxxxxxxxxx

ログイン ユーザ

ID

パスワード

ログイン画面に埋め込まれたスクリプト

• アクセス後のページ

xxxxxxxxxx

ログイン ユーザ

ID

パスワード

<html>

...

<form>

<input type="text"...

<input type="password"...

...

<script>form.action=...;</script>

...

スクリプトの有無はページの外観ではわからない

ログインすると、認証情報が外部へ送信される

実はスクリプトが埋め込まれていた

クロスサイト・スクリプティングとは

• HTML

ページを出力する処理実装の問題

例:print "<h1>$title</h1>";

文字列($title)を出力する際、「テキスト」として出 力することを想定しているにもかかわらず、その実現 に必要な処理(エスケープ処理)を実装していない

例:< → &lt;、> → &gt;、 & → &amp;など

「テキスト」として出力することを想定した箇所に

HTML

タグ」として出力することができてしまうことに より、セキュリティ上の問題となる。

クロスサイト・スクリプティングとは(続き)

ウェブサーバ 検索キーワード IPA

検索キーワード

<s>IPA</s>

ウェブサーバ

<s>は、取り消し線 を引くHTMLタグ

<html>

IPA を含む検索結果

</html>

IPA

<html>

【<s>IPA</s> を含む 検索結果

</html>

<s>IPA</s>

"

<

"

および

"

>

"

が出力され、HTMLタグとして認識 されてしまう (表示が崩れる)

【IPA】を含む 検索結果

IPA】を含む 検索結果

利用者

利用者

クロスサイト・スクリプティングとは(続き)

攻撃イメージ

ウェブサイト 攻撃成立

攻撃者は、標的(ウェブサイト利用 者)に直接攻撃を行うことはできない

攻撃者は罠を用意し、標的がその罠

を踏むように誘導する

攻撃のタイミングは、標的がアクショ ンを起こした時

見方を変えれば「利用者が自分自身 を攻撃」している

• SQL

インジェクションは「能動的攻撃」

攻撃者は、標的(主にウェブサイト)

に対し、直接攻撃を行うことが可能

SQLインジェクションとの違い

直接攻撃

クロスサイトスクリプティングは、「受動的攻撃(誘導型攻撃)」

攻撃者

ウェブサイト 攻撃者

利用者 誘導

攻撃成立

スクリプトを埋め込まれた結果・・・

• Cookie が盗まれる

セッション

ID

などの情報が盗まれる

場合によってはユーザ名やパスワードが盗まれ ることも

• ページに偽情報が表示される

商品の価格など、目に見える情報

パスワード送信先など、目に見えない情報

全面的に偽のページが表示されることも

xxxxxxxxxxxx xxxxxxxxxx

確認

情報を入力する と・・・

xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx

入力した内容が表示される 例:入力内容の確認画面 例:掲示板など

2.2 スクリプトを埋め込まれやすい ウェブアプリケーションについて

入力値を遷移後の画面で利用

その際、エスケープ処理を行っていない

想定の入力値であれば・・・

xxxxxxxxxx

xxxxxxxxxxxx xxxxxxxxxxxx

登録 戻る

入力値に細工した文字列を指定

指定されたスクリプトがブラウザ上で実行される

スクリプトの内容は攻撃者次第

xxxxxxxxxxxx

2.2 スクリプトを埋め込まれやすい

ウェブアプリケーションについて(続き)

xxxxxxxxxx

登録

xxxxxxxxxxxx xxxxxxxxxxxx

><script>alert(“test”);</script>

xxxxxxxxxx

ウェブサイト全てに対策が必要

• 問題箇所は入力フォームだけとは限らない

• XSS の問題がウェブサイトのどこかに一つで も残っていると、その箇所を狙われてしまう。

• ページを全面的に偽のページとして表示され る攻撃があり、フィッシング詐欺に悪用される。

• ドメインが同じであるため、利用者が罠と気付

きにくく、被害に遭いやすい。

2.3 クロスサイト・スクリプティング対策

• HTML テキストの入力を許可しない場合

根本的解決

エスケープ処理

• URL

出力時のスキーム確認

スクリプトを動的に生成しない

スタイルシートを動的に生成しない

保険的対策

入力値チェック

2.3 クロスサイト・スクリプティング対策(続き)

• HTML テキストの入力を許可する場合

根本的解決

構文解析木を作成して、必要な要素のみを抽出

保険的対策

入力された

HTML

テキストから、スクリプトを除く

• 共通

根本的解決

文字コードの指定を行う

エスケープ処理

HTML

不許可

/

根本的解決)

& → &amp;

" → &quot;

< → &lt;

> → &gt;

' → &#039;

•「記号文字」を置換

HTML

を許可しない場合)