写真1 エラーを表示するデモ・ページ
写真1 エラーを表示するデモ・ページ
[画像のクリックで拡大表示]
写真2 引数のHTML「<font size="7">XSS</font>」をそのまま出力する
写真2 引数のHTML「<font size="7">XSS</font>」をそのまま出力する
[画像のクリックで拡大表示]
写真3 細工が施されたリンクをクリックすると,改ざんされたログイン画面が表示
写真3 細工が施されたリンクをクリックすると,改ざんされたログイン画面が表示
[画像のクリックで拡大表示]

 「クロスサイト・スクリプティング(XSS)脆弱性を悪用された場合の被害例としては『Cookieを盗まれる』ことがよく挙げられる。しかし,実際にはもっと深刻な被害を受ける恐れがある。管理者や開発者はその危険性を十分に認識して,対策を施す必要がある」――。京セラコミュニケーションシステムのセキュリティ事業部 副事業部長である徳丸浩氏は11月10日,ITproの取材に対して,XSS脆弱性の脅威を強調した。

 さまざまなWebサイト(Webアプリケーション)において,XSS脆弱性が相次いで見つかっている。その背景には,開発者などの認識不足があると徳丸氏は指摘する。「適切に対策を施すには,XSS脆弱性のリスクを把握する必要がある」(徳丸氏)。しかしながら,実際には,XSS脆弱性のリスクを過小評価しているケースが少なくないという。

 例えば,「(自分たちが運営している)携帯電話向けサイトでは(携帯電話上では)スクリプトは実行されないから大丈夫」や「うちのサイトではCookieを使っていないから,XSS脆弱性があっても被害に遭わない」――といった話をユーザー企業から聞かされることがあるという。

 もちろん,Cookieを盗まれることもリスクの一つである。しかしそれよりも,「XSS脆弱性が存在するサイト上に,偽のログイン画面や個人情報入力画面を作られることのほうが深刻だ」(徳丸氏)。フィッシング詐欺への悪用である。XSS脆弱性を使えば,細工を施したリンク(URL)をユーザーにクリックさせることで,XSS脆弱性が存在するWebサイトを経由して,任意のHTMLをユーザーのブラウザに送り込める。つまり,コンテンツの一部を改変したWebページを表示させられる。具体的には,Webページ上に嘘の情報を追加したり,偽の入力フォームを作成したりすることが可能となる。フォームに入力した情報は攻撃者のサイトへ送信されることになる。

 「盗んだCookieをもとに個人情報などを収集することは“手間”がかかり,それほど容易ではないと考えられる。サイトを偽装されると個人情報を直接盗まれる恐れがあるので,こちらのほうがより深刻だ。加えてXSS脆弱性を悪用した偽装では,偽の入力フォームなどは本物のサイトの一部として表示されるので,URLやデジタル証明書(SSL証明書)を確認しても,偽物であることは分からない」(徳丸氏)。

 XSS脆弱性を使ったページの偽装が可能どうかは,そのサイトのページ構成などに依存するものの,同社の調査では,XSS脆弱性が存在するサイトのほとんどで,ページの偽装(偽の入力フォームの追加など)が可能だったという。

 徳丸氏は,偽装が容易であることをデモを使って解説。写真1は,同社で作成したエラー・ページのデモ。ページの引数として与えられたHTMLをそのままエラー番号として表示するXSS脆弱性が存在する(写真2)。この引数に入力フォームなどのHTMLを記述したリンクをユーザーにクリックさせれば,ユーザーのブラウザ上に写真3のようなログイン画面を表示できるという。

 「XSS脆弱性が悪用されれば,ログイン画面やCookieを用意していない一般企業のホームページでも,偽の個人情報入力フォームを作られる恐れがある。どのようなサイトであっても,XSS脆弱性の被害は深刻になりうる。XSS脆弱性の危険性を再認識して,適切に対応する必要がある」(徳丸氏)