クロスサイト・スクリプティングは,Webアプリケーションのぜい弱性を突く攻撃手法の一つです。外部からスクリプトを実行可能な形で埋め込めるようになっているぜい弱なサイトを悪用して攻撃を仕掛けます。 クロスサイト・スクリプティングに対するぜい弱性が発生しやすいWebアプリケーションの代表例が電子掲示板です。電子掲示板アプリケーションは,ユーザーから受け取った任意のメッセージを「書き込み」としてWebページ内に埋め込みます。本来,掲示板はユーザーが書き込んだテキストを単なるテキストとして出力しなければなりません。具体的には,テキストの中にHTMLのタグのような文字列が含まれている場合,その文字列がタグとして解釈されないようにする「エスケープ処理」が必要です。例えば,タグの始まりを表す“<”記号はエスケープ処理によって“<”のように置き換えてページに埋め込まなければなりません。 このような処理を怠ると,<script>~</script>タグで任意のスクリプトを掲示板に書き込むといったことが可能になってしまいます。 クロスサイト・スクリプティングではこれを悪用して,(1)悪意のあるサイトにアクセスしたユーザーに対してスクリプトのコードを含むWebページをダウンロードさせ,(2)ぜい弱性を持つサイトにアクセスを転送,(1)でダウンロードしたスクリプトをサイトに書き込ませ,(3)書き込ませたスクリプトを実行させる――という手順を踏みます。書き込ませたスクリプトは,悪意のあるサイトの一部としてではなく,(ぜい弱な)掲示板の運営者が提供するWebページの一部としてユーザーに送られて実行されます。標的となるサイトは著名であればあるほどユーザーの警戒が緩みやすく,サイト運営者にとっては悪用されたときのダメージが大きくなります。 なお,「クロスサイト・スクリプティング」を略記する場合には,Webページの書式指定に用いるCascading Style Sheets(CSS)と区別するため,XSSとするケースが多いようです。 |