第524回:クロスサイトスクリプティング とは

大和 哲
1968年生まれ東京都出身。88年8月、Oh!X(日本ソフトバンク)にて「我 ら電脳遊戯民」を執筆。以来、パソコン誌にて初歩のプログラミング、HTML、CGI、インターネットプロトコルなどの解説記事、インターネット関連の Q&A、ゲーム分析記事などを書く。兼業テクニカルライター。ホームページはこちら
(イラスト : 高橋哲史)


スクリプトを悪用し、サイトをまたいで悪用される脆弱性

 どれだけ注意深く用心して作り上げたシステムや、どれだけテストを重ねたソフトウェアでも、仕様上の欠陥やプログラムミスによる動作不良を、完全になくすことはできません。

 ただ、欠陥や動作不良が「動かない」「変な動作をする」だけではなく、システムやソフトウェアを「攻撃したい」という悪意を持った人物にとって悪用できてしまうことがあります。

 たとえば、ある金融機関のインターネットバンキングサービスで考えてみましょう。本来であれば、口座は、持ち主のアカウントとパスワードがなければログインできませんし、操作もできません。しかし、第三者が本人になりすまして操作できてしまうような欠陥があれば、そのような、システムやソフトウェアの欠陥を、「脆弱性」あるいは「セキュリティホール」などと呼びます。

 今回紹介する「クロスサイトスクリプティング」(XSS)とは、このような脆弱性の分類の1つです。サイトとサイトをまたいで、スクリプトを送り込んで悪用が可能な脆弱性のことをこのように呼びます。

 現在のWebシステムは、ほとんどの場合、ユーザーの見るページデータがそのままサーバー上にあるわけではなく、サーバー上でプログラムが動いており、プログラムがユーザーの見るWebページのHTMLデータを生成しています。これは、ブログのようにWebサイトで表示されるコンテンツの更新を容易にするためであったり、あるいは銀行システムのように残高によって表示する金額を変えるためであったりしますが、いずれにしても、静的なページを管理するより楽に複雑なサービスが実現できるため、ほとんどの場合そのようになっているのです。

 しかし、Webサイトがサーバー上のプログラムで動いているということは、ある種の弱点をはらみます。典型的な例としては、画面を表示するプログラムにおいて、住所や金額欄に記入された文字をそのまま表示してしまうような欠陥があるとします。そこへ、たとえば、

 

 千葉県千葉市/a><script……

 

という、途中にスクリプトを挿入したようなデータを記入すると、そのスクリプトをWebサイトのデータとしてパソコンに送ってしまいます。その結果として、ユーザーのパソコンに害を与えるような動作をしてしまう可能性もあります。

 典型的なXSSを使った攻撃では、先述した例のようにスクリプトなどで細工されたデータをユーザに実行させます。するとXSSによる脆弱性があるサーバーはその悪意のスクリプトを含むWebデータを、ユーザーのパソコンに送り出し、結果としてユーザーのパソコン上での攻撃が成立します。XSSによって、Cookie(クッキー、ブラウザが用いるユーザー情報)を盗むこともできます。

 XSSの脆弱性を利用した攻撃が成立する要因としては、まずWebサーバー上のプログラムの欠陥があります。一般的には、Webサーバー上のプログラムはXSSに対して一通りの対策が施されており、たとえばスクリプトに必ず含まれる“<”など特定の記号・文字に関してはユーザーのパソコンへデータとして送らない、などの対策がとられています。

 こうしたWebサーバー側の対策を逃れるために、Webにアクセスするブラウザやメディアプレイヤーの欠陥が利用されることもあります。たとえば、サーバーが他の文字として送ったデータを、ブラウザやプラグインが誤って「<」とみなしてしまう、といった弱点がもし存在すれば、利用されることがあるのです。

 

携帯電話も、こまめなソフトウェアアップデートへの意識を

 これまで、携帯電話に対するXSS攻撃は、あまり考慮する必要はありませんでした。ワンクリック詐欺などはありましたが、普通にサイトを操作するだけで被害を受けてしまうXSSについては、パソコンと比べれば携帯電話の性能は限られたものであり、機種ごとによって利用できる機能も異なるなど、悪意のある攻撃が成立しづらかったのです。

 しかし、最近では携帯電話が高性能化し、さらにスマートフォンが増えてきたこともあって、各機種で利用される技術、搭載されるプログラムにおいて共通のものが増えてきました。これは、悪意のある攻撃が実現しやすい環境に変わりつつある、と言うこともできます。ユーザーにとっても、XSSをはじめとした脆弱性攻撃への防御を真剣に行わなくてはならなくなるでしょう。

 たとえば、スマートフォンの多くがほぼiPhoneとAndroidで占められていますが、どちらのブラウザも「WebKit」というエンジンが用いられています。もし、この共通する部分に何らかの脆弱性が見つかり、それを攻撃に利用できる、ということになれば、スマートフォン用サイトの訪問者のほとんどを標的できるようになります。これは、XSS攻撃を狙う犯罪者にとって非常に魅力的な環境です。

 Webサイト上のプログラムの脆弱性対策は、Webサイトの管理者が行うことになります。一方、ユーザーとしては、普段から使っているプログラムの更新をチェックし、こまめにアップデートしましょう。

 たとえば、2011年7月には、Android版Flash Playerの最新版「10.3.181.23」の配布が開始されています。この最新版では、実際に攻撃に使われた実績のあるXSSの脆弱性が修正されています。

 実際に攻撃に使われた実績があるということは、攻撃者にとって、今後、いつでも攻撃に再利用できる環境、ということを意味します。旧来のAndroid版Flash Playerは、ユーザーにとってリスクのある脆弱性を抱えていますので、Flash対応のAndroid端末を使っている方は、早急に最新版をインストールしましょう。

 




(大和 哲)

2011/7/19 11:50