あるWebページにアクセスしたら、自分のYahoo! JAPAN IDやHatenaのID、mixiで使っている名前などが表示された。何の縁もゆかりもないページにこれらのプライベートな情報がなぜ表示されてしまったのだろうか。
これは「CSSクロスドメインの情報の漏えいの脆弱性(CVE-2005-4089)」という、Webブラウザがスタイルシート(CSS)を呼び出す機能にある脆弱性を利用した攻撃だったのだ。この脆弱性は通称「CSSXSS(CSS Cross Site Scripting)」とも呼ばれている。
【注】
直接的な脆弱性の悪用を防止するために、手順の解説などで意図的に一部省略している個所があります。
CSSインポート時にCSS以外のファイルがテキストとして読み込める
最近のWebページは、文書の構造をHTML形式で記し、フォントや色やレイアウトなどの視覚的な表現をスタイルシートで記述するというHTMLの仕様に従っていることが多い。
HTMLファイルから外部のスタイルシートを呼び出すためには、「@import」や「addimport」、「link要素」や「xml-stylesheet」など、いくつかのインポートするための手段が用意されている。インポートする対象となるCSSファイルが、HTMLファイルとは異なるほかのドメインにあっても呼び出すことができる。
CSSXSSと呼ばれる脆弱性の問題点は、本来CSSファイルのみに限定されるべきインポートの対象が、HTMLなどの別の形式のファイルでもテキストとして読み込むことができる点にある。もちろん、他ドメインにあるものでもテキストとして読み込めてしまうのだ。
この問題の原因はInternet Explorerがファイルの種類を自動判別する際の判断基準にある。読み込む対象となるテキストに「{」という記号が入っていればCSSファイルだと認識してしまうようだ。また、直接「{」という記号でなくても、文字コードに同様のものを含む「ボ」や「マ」が含まれていても誤認識してしまうことがある。
そのため、この脆弱性は主にWindows XP(32bit版)上のIEと、それをエンジンに利用しているWebブラウザが対象となる。
認証後に本人しか見ることができない情報が漏えいする
CSSXSSの脆弱性によって、CSSと誤認識して外部ファイルをテキストとしてインポートできることで何が問題になるのだろうか。
CSSが呼び出される仕組みを理解すれば、問題点が分かるだろう。下記は正常にCSSファイルをインポートする例である。
ユーザーがWebブラウザのアドレス欄にURLを入力してHTMLファイルをリクエストしたとする。そのHTMLファイルにCSSファイルをインポートする指示があった場合には、Webブラウザが自動的にCSSファイルをリクエストして呼び出す。その後にWebブラウザがHTMLファイルとCSSファイルを解釈して、コンテンツを表示する。
続いて、CSSXSSの脆弱性を持ったWebブラウザで、攻撃者によってCSSXSSを利用した仕掛けがなされたページをリクエストした際の例を見てみよう。
CSSXSSの問題点は、WebブラウザがCSSファイルのつもりでHTMLなどの異なるファイルをテキストとして読み込むところ(図中の2の部分)で発生する。
例えば、Yahoo! JAPANやHatena、mixiなどはアカウントとパスワードを使ってログインすることで自分以外は閲覧できないWebページにアクセスできる。このような「認証済みである」という情報はCookieなど何らかの形でクライアント側のWebブラウザ自身が保持していることが多い。
つまり、悪意のあるユーザーが、ターゲットユーザーのWebブラウザを誤作動させて認証が必要なページにアクセスさせるということは、認証済みだという情報を利用できてしまうのだ。それによって、認証後にしか見ることができないページの情報をテキストとしてインポートできてしまうのである。
このようにして得たテキストはJavaScriptなどを利用することで、必要な情報のみを抽出したり、それをほかのWebサイトへリクエストとして送信したりできる。もし、攻撃者が記録用のWebサイトを用意していたとしたら、重要情報を送信されてしまい、情報漏えいが起こってしまう。
どのような被害が発生するのか
冒頭の例は、ログイン中にはユーザー名がページ内に表示されているWebサイトの情報を利用したものである。ここでログイン名ぐらい問題がないだろうと楽観してはならない。
Webサイトによってはセッションの維持のためにHIDDENタグなどでページ内にセッションIDを埋め込んでいるかもしれない。それによってセッションハイジャックされる可能性もある。また、何かの管理画面などでは認証後にしか閲覧できない個人情報が含まれている可能性もある。
このCSSXSSの問題はリモートのWebサイトだけでなく、ローカルなデスクトップ上でも起こってしまう。もともとこの脆弱性が報告されたのは、Google Desktopの情報が漏えいするという報告からだったのだ。Google Desktopでは、ローカルのハードディスク内の情報に自由にアクセスできてしまう。つまり、任意のファイルをリモートから取得されてしまうということなのだ。
このCSSXSSの脆弱性は2006年6月14日に発行された修正パッチを適用することで回避できる。もちろん、Windows Updateを適切に実行していれば自動的に適用されているはずだ。もし、適用していないようならば、すぐにでも実行しておく必要がある。
【Internet Explorer 用の累積的なセキュリティ更新プログラム (916281) (MS06-021)】
http://www.microsoft.com/japan/technet/security/bulletin/ms06-021.mspx
Profile
上野 宣(うえの せん)
1975年京都生まれ。情報セキュリティを世に広げるべく、講演や執筆活動とさまざまな方面で活動中。近著に「今夜わかるメールプロトコル」、「今夜わかるTCP/IP」、「今夜わかるHTTP」(共に翔泳社)がある。
- 今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた
- 「わざと脆弱性を持たせたWebアプリ」で練習を
- Perl Mongersはセキュリティの夢を見るか?
- 誰がシステムのセキュリティを“大丈夫”にするのか
- 技術は言葉の壁を越える! Black Hat Japan 2008&AVTokyo2008(後編)
- 技術は言葉の壁を越える! Black Hat Japan 2008&AVTokyo2008(前編)
- キャンプに集まれ! そして散開!
- 売り上げ重視か、それともセキュリティ重視か!? 「安全なウェブサイト運営入門」
- CeCOS IIにみるネット犯罪のもう一方の側面
- セキュリティ対策の行き着くところは……最終手段? 京都に究極のセキュリティ対策を見た
- 人はオレを情報の破壊神と呼ぶ せめて、ハードディスクの最期はこの手で……
- セキュリティ社会科見学:インターネット物理モデルでセキュリティを考えた
- セキュリティ自由研究:この夏、グミ指を作ってみないか
- Webアプリケーションを作る前に知るべき10の脆弱性
- セキュリティを教える人に知ってほしい 基本が詰まった1冊
- セキュリティのバランス感覚を養うための1冊
- 暗号化仮想ドライブで手軽にファイルを暗号化
- Windows管理者必携、Sysinternalsでシステムを把握する
- 今夜分かるSQLインジェクション対策
- 「取りあえず管理者アカウントで」という思考停止はもうやめよう
- CSSクロスドメインの情報漏えいの脆弱性「CSSXSS」とは
- 偽装メールを見破れ!(後編)
- 偽装メールを見破れ!(前編)
- メールは信頼できても信用できない
- 危機管理体制を整えよう! 個人情報漏えい後の対応ガイドライン
- メールアドレスを漏えいから守る方法
- 「Whoppix」を使ってペネトレーションテストをやろう
- 「ぼくはまちちゃん」 ――知られざるCSRF攻撃
- 25番ポートの攻防
- 平田です。届いてますか?
- 魔法の鍵と最後の鍵
- 個人情報保護法を論理的に読み解く
- 安全確保のために東京は明るく! 大阪は暗く!
- 言論の自由とセキュリティコミュニティ
- 標的にされる無防備なコンピュータ
- セキュリティ担当者には想像力が必要
- 端末を持ち歩くことの危険を意識せよ! 〜 「ノートPC=自動車」論 〜
- 脆弱性のあるサイトとセキュリティ技術者の関係
- いまこそ一般教養としてセキュリティを!
- 大事なことは製品でもなく知識でもなく……
- 治安の悪化で改めて痛感したこと
- Blasterがもたらした多くの“メリット”
- 企業でのセキュリティ資格の意味合いは?
- 人はミスをするものと思え、故に事前対策が重要
- オレオレ詐欺に学ぶソーシャル対策
- あらゆる人にセキュリティ教育を
- 猛威を振るうSARSウイルスに思ったこと
- 痛い目に遭って考えた、ビジネス継続性の重要さ
- 責められるべきはMSだけだろうか?
- セキュリティ技術者を「憧れの職業」にするには?
Copyright © ITmedia, Inc. All Rights Reserved.