とある企業の情報システム部門。頼りなかった若手社員の通称「ネコSE」も、セキュリティーに関する豊富な知識と経験を持つ「センパイ」のおかげで、少しずつ成長してきた。セキュリティー対策を極めるには、攻撃の具体的な手口を知ることも重要だ。今回は、攻撃者が用意したスクリプトを被害者のWebブラウザーで実行させるクロスサイトスクリプティングについて見ていこう。

センパイ:この前、猫瀬君に開発を頼んだ「おさかな検索」のWebアプリケーションに脆弱性がありそうだな。

ネコSE:えー、セキュリティーには気をつけていたんですけど。

センパイ:このWebアプリケーションの動作を見ていこうか。キーワードを入れると、検索結果が表示される(図1)。

図1●通常の検索結果
検索を行うWebアプリケーションで、例えば「オニ」と入力して検索ボタンを押すと、「オニ」という言葉を含む検索結果が表示される。URLの「?」以降は、検索文字列を指定するパラメーターとして機能している。
[画像のクリックで拡大表示]

ネコSE:ちゃんと表示されていますよ。よかった。

センパイ:URLにもキーワードが反映されているね。

ネコSE:どこですか?

センパイ:「?」の後ろの部分だよ。「q=オニ」となっているだろう。URLの一部としてキーワードを渡しているんだ。

ネコSE:なるほど。Webアプリケーションはそれを見て検索を行うわけですね。

センパイ:このようにユーザーの入力によって表示内容を動的に変化させるWebアプリケーションでは脆弱性が生まれやすい。「クロスサイトスクリプティング(XSS)」と呼ばれる脆弱性だよ。

ネコSE:何ですか、それ。

センパイ:どんな脆弱性か教えてあげるよ。このWebアプリケーションに「<script>alert(document.cookie);</script>」というテスト用の文字列を入れてみよう。

ネコSE:訳の分からない変な文字を入れちゃ駄目ですよ。魚を検索するアプリケーションなんだから、もっと魚の名前っぽいものを入れてください。

センパイ:猫瀬君、Webアプリケーションは誰が利用するか分からないんだ。いろんな文字列を入力されることを想定しないとね。

ネコSE:変な文字を入れると検索エラーになるのでは?

▼URL
Uniform Resource Locatorの略。
▼XSS
cross Site Scriptingの略。本来の頭文字では「CSS」だが、Webページのスタイルを指定するCascading Style Sheets(CSS)と紛らわしいので、XSSと略すことが多い。

この先は有料会員の登録が必要です。「日経NETWORK」定期購読者もログインしてお読みいただけます。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら