前回ではWeb 2.0の興隆とともに,JavaScriptが多用され,使用をできないようにするととたんに,Webが使い物にならなくなる現状が,脅威を生んでいることを示した。今回は,RSSといった新しい技術や,ユーザーからの情報公開といったWeb 2.0の特徴がさらに火に油を注ぐことになることを示す。

 RSS,ATOMのリーダー・ソフトなど新しいアプリケーションの台頭は,ブラウザ以外にもJavaScript実行環境が増えることにほかならない。

 RSSやATOMのリーダー・ソフトは本来,最新情報のリストを表示するための仕組み。JavaScriptを解釈する必要はない。しかし多くが,Internet Explorerなど既存のソフトのコンポーネントを使用してリストを表示しているため,JavaScriptを解釈してしまうケースがある。

 実際,無償で配布されているRSSリーダーのいくつかでXSSのぜい弱性が公表されている。ここに悪意あるJavaScriptが送りつけられ,不正な処理をさせられる危険性は十分ある。セキュアスカイの福森CTOは「ローカル側でJavaScriptを実行されることで,パソコン上にあるファイルを犯罪者に送られるシナリオが考えられる」と警鐘を鳴らす。

 このほか,Windows VistaやGoogleデスクトップで利用可能なガジェットもインターネット上のサーバーと通信しながら,HTML/XMLとJavaScriptを解釈して動作する。インスタント・メッセンジャーも内部の処理ではHTMLやXMLを使っている。ブラウザ以外から悪意あるJavaScriptが混入してくる可能性はどんどん広がっているのである。

つぶし切れないXSSのぜい弱性

 もう一つのブログ/SNSの浸透は,XSSのぜい弱性を生みやすい。これらのアプリケーションは,ユーザーによるデータ入力が前提で,スクリプトの埋め込みが容易なためである。

 そもそもXSSのぜい弱性は,根絶が難しい。ぜい弱性を抱えていてもアプリケーションそのものは正常に稼働してしまう上,攻撃を仕掛けてみなければ本当にぜい弱性があるかどうかを確認できないからだ。

 多くのWebサイトでは,XSSのぜい弱性については「開発者が自分の知識の範囲で調べて問題があれば,その都度対処する」(あるSNSパッケージの開発者)といった姿勢。積極的にXSSのぜい弱性根絶に動いている様子はない。

 ページの雰囲気が古臭くなるのを嫌うECサイトのように,頻繁にサイトのリニューアルを繰り返す場合はさらに危険度が増す。「ページのレイアウト変更や新機能追加により,一度つぶしたはずのXSSのぜい弱性が同じページで見付かることが多い」(京セラ コミュニケーションシステム セキュリティ事業部の徳丸浩副事業部長)。また,Webアプリケーション・セキュリティのコンサルティングを手掛けるベンダーは異口同音に,「XSSのぜい弱性を発見しても,きちんと修正しないケースがかなり多い」と指摘する。

「無害化」対策も効果が薄い

 Web 2.0アプリケーションではこれに加えて,従来のWebサーバーで行われてきたXSSのぜい弱性対策を適用しづらい側面がある。

 これまで,XSSのぜい弱性をなくすには,「<」「>」「:」「;」などJavaScriptに使われそうな文字列を「無害化(サニタイジング)」する処理が行われていた。具体的には,こうした記号が送られてきたときに,別の文字に置き換えて返すことでブラウザにJavaScriptとして認識させないようにする。

 ところが最近のブログやSNSでは,飾り文字などを使いたいというニーズが多く,そのためにJavaScriptやHTMLの入力を一部許可する場合がある。上記のような記号を別の文字に変更してしまうと,これらを正しく認識せず,表示が壊れてしまう。対策として,タグと文字列がどのように組み合わされているのかを調べてフィルタする手はある。ただ一般に,こうした例外処理は穴が出やすい。

 また,セキュアスカイの福森CTOは「試しにオープンソースのWebアプリケーションを調べてみたところ,XSSのぜい弱性がほとんどのアプリケーションで見付かった」と驚きを隠さない。既に80個近いXSSのぜい弱性を発見し,報告済みだという(写真1)。

写真1●JP Vender Status Notes(JVN)のWebページ
写真1●JP Vender Status Notes(JVN)のWebページ
JVNはJPCERT コーディネーションセンター (JPCERT/CC)と情報処理推進機構 (IPA)が共同で運営するサイトで,日本で発見されたぜい弱性情報を公開している。  [画像のクリックで拡大表示]

 最近では銀行や証券会社が,自社の顧客の囲い込みのために,ブログやSNSを設けるケースが出始めている。金融機関では「開発者のセキュリティ意識が高く,ネット・バンキングなどのサイトはセキュアな状態に保たれている場合が多い」(NRIセキュアテクノロジーズ コンサルティング事業部の鴨志田昭輝セキュリティコンサルタント)。しかし決済がかかわるWebアプリケーションにXSSのぜい弱性がなくても,ブログ/SNSにほころびがないとは限らない。あるWebアプリケーション・セキュリティ専門家は「既存のSNSのパッケージをそのまま導入しただけだと,問題が出てくる」と懸念する。

意識を高めるしか対策はない

 このように,JavaScriptは便利な半面,危険を秘めている。ところがやっかいなことに,JavaScript攻撃への対策はほとんどないに等しい。専門家も「現時点では,攻撃から逃れる完全な方法はない」(米ホワイトハット・セキュリティのジェレマイア・グロスマンCTO)と,ほぼお手上げの状態である。

 従来,パソコンのセキュリティ強化策としては,最新パッチの適用,ウイルス対策ソフトの導入,ファイアウオールの導入などが常とう手段だった。しかしこれらは,ことごとく通用しない。

 まず,JavaScriptの正規の仕様を使って攻撃してくるため,パッチの適用は関係がない。しかも,OSや利用するブラウザなどプラットフォームには関係なく被害を受ける。JavaScriptはWebページ中に書き込まれた状態で送られて来るため,ファイアウオールも素通りする。ウイルス対策ソフトには不正なJavaScriptを検知する機能が実装されていないため,これも無力である。

 攻撃に使われたJavaScriptはブラウザを閉じると,HTMLファイルとともに消えてしまい,ウイルスやボットのようにパソコンの中にファイルを残さない。攻撃を受けたことを発見するのは至難の業だ。

 結局,JavaScriptの攻撃から身を守るには一人ひとりがその危険性を知り,被害に遭わないように気を付けるしかない。