クロスサイトスクリプティング
クロスサイトスクリプティング (XSS)
クロスサイトスクリプティング (XSS)は、ユーザの入力データを使用して動的にページを出力する Webアプリケーションの脆弱性を利用し、ユーザのブラウザ上で悪意のあるスクリプトを実行させるセキュリティ攻撃です。多くの場合、攻撃者が用意した Web ページや電子メール中のリンクから脆弱性のある Web サイトに誘導するという段階を踏むため、クロスサイト (サイトをまたがる) スクリプティングと呼ばれます。
クロスサイトスクリプティング(XSS)の例
ごく簡単なケースとして、ユーザがフォームのテキスト ボックスに文字列を入力して送信すると、その文字列を含む HTMLページを返す Webアプリケーションを例に紹介します。
ここで、テキスト ボックスに次の文字列を入力して送信したとします。
<script>alert("Vulnerable");</script>
アプリケーションで入力データをチェックしていない場合、出力された Web ページにスクリプトがそのまま含まれるため、次のようなダイアログが表示されます。

この例では、スクリプトは単にメッセージボックスを表示するだけですが、攻撃者は悪意のあるスクリプトを使用して、Cookie 情報の詐取、偽のページの表示、第三者へのフォーム情報の送信など、さまざまな操作を行うことができます。
ユーザに悪意のあるスクリプトを実行させるため、攻撃者はパラメータに細工を施した URL リンクを含む HTML ページや電子メールをユーザに閲覧させ、リンクをクリックするように仕向けます。
次のリンクをクリックすると、フォームのテキスト ボックスにスクリプトを入力して送信ボタンをクリックした場合と同じリクエストがアプリケーションに送信されます。
<a href='http://MyWebApp/hello.aspx?name=<script>alert("Vulnerable");</script>'>
スクリプトとしては、一般的に JavaScript が多く使用されますが、ユーザのブラウザでサポートされているスクリプト言語であれば、言語を問いません。
対策
XSS を防ぐには、ユーザからの入力データの検証と、出力データの適切なエンコーディングを徹底します。 入力データを表示する前に、必ずデータの長さ、型、構文などが許可される範囲内であるかどうかを検証します。 また、出力データは HTML、XML などの出力フォーマットに従って適切にエンコードします。dotTESTのルール
○ XSS 脆弱性から防御するこのルールは、悪意のあるスクリプトを含んでいる可能性のある入力データが、検証メソッドによるチェックを受けないまま出力メソッドに渡されている場合に違反をレポートします。このルールはフロー解析ルールなので、入力データの取得と出力が別のメソッドに分かれていたり、複数の実行パスが存在する場合でも、実行パスを辿って違反を検出することができます。ルールのパラメータをカスタマイズすることによって、どの入力データをチェック対象にするかを指定することができます。
dotTESTが検出する脆弱性(抜粋)一覧
- クロスサイトスクリプティング(XSS) (本ページ)
- SQLインジェクション
- HTTPレスポンス分割
- 悪意のあるファイルの実行
※ セキュリティルール及びセキュリティコンプライアンス規約セットによる静的解析には「セキュリティコンプライアンスパック」のライセンス(有償)が必要です。
PICK UP
イベント・セミナー
C# VB.NET対応 静的解析・動的解析 テストツール dotTESTに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- parasoft-info@techmatrix.co.jp