1:攻撃の概要
JavaScriptを埋め込まれてしまうような攻撃を許すWebアプリケーションは、この攻撃に対する脆弱性があると言えます。そして、悪意のあるプログラムを脆弱性のあるWebアプリケーション上で実行させるような、JavaScriptを利用した攻撃方法をXSSと言います。
①XSS(Cross Site Scripting)エックスエスエス(クロスサイトスクリプティング)
XSSとは、攻撃者が脆弱性のあるWebアプリケーション上に、悪意のあるJavaScriptのプログラム(スクリプト)を埋め込み、そのサイトの利用者を攻撃する手法です。
「スクリプトを埋め込む」とは、ユーザーがブラウザ上で表示するHTML中に、JavaScriptのプログラムを埋め込むことを言います。
悪意のあるスクリプトをWebアプリケーションを表示したときに実行させることをゴールとした攻撃がXSSです。「クロスサイトスクリプティング」のうち、スクリプトを埋め込んで実行させることが「スクリプティング」に該当します。
実際はユーザーの個人情報などを、悪意のある人のサーバーなどへ送付するスクリプトが埋め込まれることが多いです。
2:XSSの種類
「反射型XSSクロスサイトスクリプティング」
ユーザーが悪意のあるURLをクリックすると、脆弱性のあるWebアプリケーション上でスクリプトが実行されるようにする手法です。
それぞれのステップについて説明します。
①ユーザーにURLをクリックさせる
攻撃者が、ユーザーに悪意のあるURL(脆弱性のあるWebアプリケーションへ遷移するURLに細工をしたもの)をクリックさせます。ユーザーにクリックさせる方法としては、メールで送付したり、掲示板などに書き込んだりすることがあります。
②ユーザーがクリックすると脆弱性のあるWebアプリケーション上でスクリプトが動く
上記の悪意のあるURLには、脆弱性のあるWebアプリケーション上で発火するスクリプトが仕込まれています。そして、ユーザーが脆弱性のあるWebアプリケーションのページを開くと、そのスクリプトが発火します。
③スクリプトが発火すると、攻撃者のサーバーへ個人情報が送られる
直前のステップで発火したスクリプトは、個人情報を抜き取るようなものでした。クリックしたユーザーの個人情報が攻撃者のサーバーへ記録されてしまいました。
この様に、URLをクリックしてレスポンスがあると、即座にスクリプトが実行されることから、「反射型」と呼ばれます。
また、上図のように別のサイト(またはメールなど)から、脆弱性のあるWebアプリケーションへ遷移したあとにスクリプトが実行されます。これが「クロスサイトスクリプティング」の「クロスサイト(Webサイト間をまたぐ)」を意味します。
「格納型XSSクロスサイトスクリプティング」
脆弱性のあるWebアプリケーションの投稿などに、悪意のあるスクリプトを埋め込み、ユーザーがそのWebアプリケーションを訪れたときにスクリプトが発火するようにする攻撃手法です。
それぞれのステップについて説明します。
①攻撃者が、脆弱性のあるWebアプリケーションにスクリプト付きの投稿をする
フォームからコンテンツを投稿する際に、スクリプトを埋め込んで投稿をします。
②ユーザーが、その投稿のあるページを訪れるとスクリプトが発火する
スクリプトが埋め込まれた投稿のページを開くと、そのスクリプトが発火します。または、画像にマウスを合わせるとスクリプトが発火するような仕掛けになっていることもあります。
③スクリプトが発火すると、攻撃者のサーバーへ個人情報が送られる
直前のステップで発火したスクリプトは、個人情報を抜き取るようなものでした。ユーザーの個人情報が攻撃者のサーバーへ記録されてしまいました。
このように、脆弱性のあるWebアプリケーションにスクリプトを格納し、ユーザーが訪れたタイミングで発火するようになっていることから「格納型」と呼ばれます。