前回までは安全なウェブアプリケーションを作成する手法をいくつか説明してきた。今回からは代表的な脆弱性についての検査方法を説明していきたい。まずは、クロスサイトスクリプティング(XSS)の脆弱性について、その検査方法を紹介する。
XSSとは、入力として受け取ったデータに含まれている「Javascript」などのスクリプトやタグが、それらが有効な形で出力(HTTPレスポンス)に含まれているために、ブラウザが意図しない動作や表示を行ってしまう脆弱性だ。
この脆弱性を使った攻撃の被害者はサイトを利用している利用者であり、サイトが直接的な被害に遭うことはない。この脆弱性を利用すると、攻撃者が意図した通りにブラウザをコントロールすること(たとえば、意図しないデータの送信や表示内容の変更)が可能になる。
これにより、利用者のログイン情報を他のサーバに送信したり、利用者のブラウザからサイトにある脆弱性を調査し、その結果を他のサーバに送信することも可能になる(図1)。また最近では、XSSの脆弱性を利用したワームもMcAfeeのウェブサイトなどで報告されている。
XSSの脆弱性を攻撃に用いるにはサイトの利用者に、悪意あるスクリプトを含んだリンクをクリックさせる必要がある。そのために攻撃者は、巧妙に仕組んだSpamメールや掲示板、自分が立ち上げたサイトなどのリンクを利用する。
これらのリンクは対象となるサイトが送信したメールに偽装されていたり、一見すると信頼できそうなサイトにそれらしい言葉でリンクが貼られていたりする。このようにして攻撃者は誰かが罠にかかるのをじっと待っているので注意が必要だ。