/// セキュリティ診断項目:クロスサイトスクリプティング(XSS)

赤盾アイコン クロスサイトスクリプティングとは

攻撃者が対象となるサイトとは異なるサイトからスクリプトを送り込み、訪問者に実行せしめることからクロスサイト(サイトを横断した)スクリプティング(スクリプト処理)と呼ばれる。

以下が、典型的な処理の流れとなる。
1.ユーザーが攻撃者の用意したページにアクセスする。
2.リンクを含んだページがブラウザに表示される。
3.ユーザーがリンクをクリックする。
4.ユーザーが(無意識のうちに)攻撃対象のサイトにスクリプトを含んでアクセスする。
5.スクリプトを含んだページがブラウザに表示される。
6.ユーザーのブラウザ上でスクリプトが実行される。
赤盾アイコン セキュリティ上の脅威について

Webアプリケーションが入力したデータ(フォーム入力など)を適切にエスケープしないままHTML中に出力することにより、入力中に存在するタグ等文字がそのままHTMLとして解釈される。 ここでスクリプトを起動させることにより、以下に挙げるような攻撃が成立する。

・クッキーの値を取得あるいは設定することにより、セッションハイジャックする。
・強制的なページ遷移を起こさせ、クロスサイトリクエストフォージェリ対策を回避する。
・取得したクッキーを攻撃者側でそのまま利用できない場合に用いられる手法。
・CSSのインポート機能を利用して不正なファイルをロードさせる。
・ページ全体を置き換えることにより、偽のページを作り出す。(典型的にはフィッシングに用いられる。)
・フォームの送信先を置換することにより、入力を第三者サイトに送信するよう仕向ける。

これらの攻撃が成立することにより、秘密情報の窃取や、回復不可能な権利侵害につながるおそれがある。
赤盾アイコン セキュリティ対策について

クロスサイトスクリプティングの対策は、いくつかの例外を除き、出力値のエスケープを適切に施すことである。

・HTMLの実体参照を用い、& を &amp; に、< を &lt; に、> を &gt; に、" を &quot; に、それぞれ置換する。
・タグの属性値は必ず "~" (ダブルクオート)で括る。また属性値中のエスケープを忘れない。例:<input type="hidden" name="foo" value="&lt;script&gt;">

例外は以下のような場合である。
・入力値をURIとして用いる場合(リダイレクタなど)
・許可するスキームを定め、それ以外のスキームを持つURIは拒否する。
・入力値をスタイルシートとして使用する場合
・許可する構文を定め、それ以外の使用は拒否する。スタイルシート中のスクリプト起動方法は多様であり、ブラックリスト方式で完全に抑制することは難しい。
・入力中の一定のタグをHTMLとして反映したい場合(例: ウィキ)
・ホワイトリスト(許可リスト)を使用した出力タグ、あるいは属性の制限を行う。制限には上述のURI中のスキーマ制限や、スタイルシートへの制限を含む。
赤盾アイコン セキュリティ対策の補足 他

XSSはWebサイト側のセキュリティの脆弱性を突いて、Webサイトにアクセスした利用者に任意のスクリプトを実行させるため、Webサイトに訪問した顧客に迷惑を掛けてしまうことになり企業としての評判を大きく落とすことに繋がる脆弱性である。サイト利用者側(ユーザー)が取れる対策はほとんどないためWebサイト管理者はセキュリティ上の管理意識が問われる脆弱性である。
セキュリティ診断のお問い合わせはコチラ
上に戻る ↑