被害範囲の拡大
今回は最終回ということで、Webのセキュリティがどのように変化しているのか、また今後どのように変化していくのかということを考えてみます。
Web2.0という言葉が生まれてから、いろいろなものがWebを用いて提供されるようになってきました。従来のように、ブラウザを起動しアドレスを打ち込み、Webサーバにアクセスするという形態だけではなくなっています。さまざまな場面でWebが使われるようになっており、中にはユーザが気づかない所で使われていることもあります。ここでは、見落とされがちな部分を中心にいくつか例を挙げて説明していきます。
デスクトップとの連携
Googleデスクトップ(図1) は、ユーザのPC内のファイルやネットワーク共有されているファイルを検索できるソフトウェアです。これによりGoogleが持つ強力な検索機能をユーザPC内のファイルに対しても適用することができるようになりました。
図1 Googleデスクトップ
この結果、脆弱性が発生した場合の被害もデスクトップに及ぶ ようになります。
万一、Googleデスクトップにクロスサイトスクリプティングの脆弱性が存在していた場合には、ローカルのファイルが盗まれることになります。さらに、リンクをクリックすることでプログラムを実行するという機能も用意されているため、脆弱性が存在した場合には不正にプログラムを実行される可能性があります。
また、ポート4664 番を使用しローカルでWebサーバが起動 されます。ローカルでWebサーバを起動する場合、Webサーバ自身にクロスサイトスクリプティングの脆弱性が発見されることがあります。これは、ローカル用に開発されるのが簡易的なWebサーバで、エラーページ等(404 Not Foundのページや403 Forbiddenのページ)にクロスサイトスクリプティングの脆弱性が残っていることが多いためです。現在、クロスサイトスクリプティングという言葉が多く知られるようになって、熱心に対策を行っているWebアプリケーション開発者も増えています。Webサーバの脆弱性でそのような努力を台無しにしないように、Webサーバを開発する際には注意してほしいものです。
●過去の事例
sHTTPd におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2374063879/index.html
雷電 HTTPD におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2390438169/index.html
Interstage Application Server におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2383832818/index.html
管理画面での脆弱性
Webサーバの管理画面、アプリケーションサーバの管理画面、Webアプリケーションの管理画面等、管理画面には脆弱性が多く残されています。理由としては、一般公開されていないから、アカウントを持つ人が限られているから、認証によって守られているから、といったものではないでしょうか。しかしこういった考えは危険です。そのようなページのほうがより重要な情報を取り扱っている場合が多い ためです。今後、フレームワークの普及やアプリケーションサーバの多様化により、同様の脆弱性が増加することが考えられます。
●過去の事例
Apache Tomcat におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2307100457/index.html
Lotus Domino におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2384565055/index.html
Adobe JRun におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2314243645/index.html
ColdFusion におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2328356427/index.html
HTML形式のログを利用した脆弱性
例としてNessus というセキュリティ検査ツールに存在していた脆弱性を紹介します。脆弱性を検査するツールに脆弱性が存在していた、というのはミイラ取りがミイラになるような話ですが、案外よくある話です。
Nessusは対象となるサーバの脆弱性を検査し、その結果をHTML形式で表示 します。ここで、Webサーバのバージョンが古い場合には脆弱性として報告されるのですが、検査レポートにサーバのバナー情報が記載されます。攻撃者はバナー情報の中にスクリプトを入れておくことで、検査を行っていた人がレポートを表示した際にスクリプトが実行され、攻撃が成立するという仕組みです。
検査レポートは一度ローカルにHTML形式で保存され、そのファイルがブラウザで開かれるという動作をします。そのため、検査レポートの中に悪意のあるスクリプトが含まれていた場合には、マイコンピュータのドメインでスクリプトが実行され、ローカルのファイルが盗まれる等の攻撃を受ける可能性があります。
また、メッセンジャー にもHTML形式のログが使用されているものがあります。YahooメッセンジャーやAOLインスタントメッセンジャーで脆弱性が見つかっています。
●過去の事例
Nessus のレポート出力機能において任意のスクリプトが実行される脆弱性
http://jvn.jp/jp/JVN%2334058672/index.html
Cross-site Scripting with Local Privilege Vulnerability in Yahoo Messenger
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0768
Remote command execution, HTML and JavaScript injection vulnerabilities in AOL's Instant Messaging software
http://www.coresecurity.com/index.php5?module=ContentMod&action=item&id=1924
デスクトップアプリケーションとWebアプリケーションの融合
Flashを提供しているAdobeはAdobe AIR をリリースし、Webアプリケーションの技術でデスクトップアプリケーションを作成できる概念を発表しました。一方、Windowsを提供するMicrosoftはSilverlight をリリースし、デスクトップアプリケーションからWebアプリケーションの分野に進出しました。また、第11回 で紹介したガジェット やウィジェット もWebの技術でデスクトップアプリケーションを作成するものでした。
このようにWebアプリケーションはデスクトップアプリケーション側へ進出し、デスクトップアプリケーションはWebアプリケーション側に進出することで、Webアプリケーションとデスクトップアプリケーションの境が徐々になくなってきています。
これらの説明にはデスクトップアプリケーションという単語が出てくるので、EXE形式 の実行ファイルと同等の脅威が存在することはわかると思いますが、Webアプリケーションに存在したSame-Originポリシーも一筋縄ではいかなくなり、新たなセキュリティモデルが必要になります。まだ正式版ではないということもあり、各社セキュリティモデルを試行錯誤している段階です。今後、どのような仕様になっていくか要注目です。
また、FlashやSilverlightに代表されるように、ブラウザプラグイン が多様化していることも脆弱性を生む原因となっています。過去にはAdobe Reader やQuickTime にクロスサイトスクリプティングの脆弱性が存在していました。また少し性質は違いますが、Firefoxのアドオン も使い方を誤ると危険です。
●過去の事例
Flash Playerにおいて任意のRefererヘッダが送信可能な脆弱性
http://jvn.jp/jp/JVN%2372595280/index.html
Cross-site scripting vulnerability in versions 7.0.8 and earlier of Adobe Reader and Acrobat
http://www.adobe.com/support/security/advisories/apsa07-01.html
ワープロ、表計算ソフト、OSのWeb化
GoogleがGoogle Docs & Spreadsheets をリリースしました。これにより、有償だったMicrosoft WordやExcelとほぼ同等の機能を無償で、Web上で使えるようになりました。それをきっかけにしたかのように、同様の機能を提供する企業もいくつか出てきました。
また、あたかもOSが動いているかのようなデスクトップ環境をWebで実現したものもあります。ブラウザでサーバにアクセスすれば、一般のOS並の画面が表示されます。なるべくノートPCには情報を入れないようにするために、Webサーバ上に環境を構築する使い方をするようになって広まりました。
これらにはAjax が多用されており、多くのリクエストレスポンスが発生します。そのため対策漏れが起こってしまい、脆弱性が存在していることがあります。また、Ajax関連の脆弱性対策に気を取られるあまり、ディレクトリトラバーサル のように単純な脆弱性で被害が大きいものに対しての対策を忘れているようなケースもありました。
●過去の事例
eyeOS におけるクロスサイトスクリプティングの脆弱性
http://jvn.jp/jp/JVN%2346244305/index.html
プロトコルハンドラを経由した脆弱性
Webブラウザのプロトコルハンドラ を使用して、コンピュータにインストールされたDLL等を呼び出し、情報を取得することができたり、プログラムを実行されたりすることがあります。このとき呼び出されるプログラムにバッファオーバーフロー等の脆弱性が存在することがあります。
たとえば、SecondLife をインストールした際に追加されるプロトコルハンドラを利用した脆弱性が見つかりました。このように一見Webとは関係ないように見えるアプリケーションでも、Webから呼び出すことができるものがあります。
●過去の事例
IE pwns SecondLife | GNUCITIZEN
http://www.gnucitizen.org/blog/ie-pwns-secondlife
Mozilla Firefox における jar URI にクロスサイトスクリプティングの脆弱性
http://jvn.jp/cert/JVNVU%23715737/index.html
Web2.0セキュリティの未来
このように、Webの技術は至るところで使われるようになり、多様化の一途を辿っています。とくにWeb2.0という言葉が作られてから、その傾向が急速に進んだように思います。また、今まではクロスサイトスクリプティングといえば、認証情報の盗難や画面の見かけ上の変更といったものでしたが、今やローカルファイルの盗難や任意のコマンド実行にまで被害が及ぶケースも出てきています。攻撃により発生する被害の幅も、またその深刻さも増加したことが、Web2.0の特徴ではないでしょうか。
今後ますます多様化が進み、Webアプリケーション開発者以外の人でも、Webの技術を使ったアプリケーションやブラウザを利用したアプリケーションを開発する機会が増えると思います。その時にはWebアプリケーションの脆弱性を認識しておくこと、被害を見誤らないことが重要です。その一方で、フレームワークや開発キットを作成する人は、ユーザがセキュリティの知識を十分に持っていないことを前提として、安全側に倒れるような設計をしておくなど、それぞれの立場から積極的にセキュリティ対策に取り組んでいきましょう。