FacebookやTwitterのIDがWi-Fi経由で筒抜け、Firefox用アドオンの恐怖


 みなさんは「アドオン」というものをご存知でしょうか。アドオンは、アドインや拡張パック、プラグイン、エクステンションなどとも言われ、あるソフトウェアに何かの機能を追加したい場合に使うソフトウェアを指します。細かい話をすると、たとえばアドオン(追加)とプラグイン(差し替え可能)は定義が違う、とか色々あるのですが、この話では「あるソフトの機能を拡張するオプション的なもの」という位置付けで用いていますので、同じ意味として扱います。

 比較的おなじみと思われるアドオンは、たとえばゲームの拡張パックもそうですし、ウェブブラウザーのツールバーなどもそうです。GoogleツールバーやYahoo!ツールバー、Windows Liveツールバー、ほかにもいろいろありますね。また、ブラウザーで動画などを表示するためのWindows Media Player、Flash Player、Javaなどのアドオンもおなじみではないかと思います。

 今回取り上げるのは、ウェブブラウザー「Firefox」用のアドオン「Firesheep」です。このアドオンは、以前お話しした「野良AP」を含めたオープンなWi-Fiネットワークを利用して、ウェブサービスなどにログインするユーザーのCookieを記録する機能があります。

Amazon、Facebook、Google、Twitterなどの有名サービスのアカウントが……

Firesheepのイメージ

 パソコンがオープンWi-Fiネットワークに接続した状態でFiresheepが起動すると、接続しているローカルネットワーク内をスキャンし、Amazon.com、Dropbox、Evernote、Facebook、Flickr、Google、WindowsLive、Twitterなどといった、一般的によく使われているサービスにログインしている他のユーザーを発見し、リストアップしていきます。そしてそれぞれのユーザーのアイコンを表示し、そのユーザーへのなりすまし行為を極めて簡単に行えるようにする、という深刻な機能を持ったアドオンです。

 このFiresheepは、Eric Butlerという方が作られたアドオンなのですが、彼としては「暗号化されていないWi-Fiと、暗号化されていない通常のHTTP通信の組み合わせがどれだけ危険であるかを問題提起するために開発した」のだそうです。つまり、一般的な「より使い勝手を向上する」といった類のアドオンとは全く違う目的で作られたものです。

 こうした主張は正しいものですし、警鐘を鳴らすことも有益だとは思います。逆に、「行き過ぎたやり方」という意見もあるかと思いますが、時にこうした「主張をより伝わりやすくするために(『視える化』するために)作った資料的な位置付けのツール」が、実際には悪意ある第三者によって危険なツールとして転用されることもしばしばあります。

 Firesheepには、Amazon.com、Dropbox、Evernote、Facebook、Flickr、Google、WindowsLive、Twitterなどなどといった、一般的によく使われているサービス(サイト)が登録されているのですが、皆さんがこうしたサービスを利用する際、ユーザーは「ログイン」という手続きを踏みますよね。この「ログイン」がもし、以前にお話ししたようにSSL通信(URLが「https://」で始まる暗号化された通信方式)ではなく通常のHTTP通信で行われると、そのログインIDやパスワードの文字がそのまま通信に含まれている=丸見え状態で送信されるわけですね。

 ブラウザーを介してログインするサービスはURLがアドレスバーに表示されたりといろいろ見えるので、その通信がSSLか否かは比較的わかりやすいのですが、たとえばDropboxのような専用アプリを使う常駐型のサービスは自動的にバックグラウンドでログインが行われるので、その通信がSSLか否かには気付きにくいのが実情です。

 利用が想定される一部の端末やブラウザーがSSLに対応していないとか、SSL方式は通信のスピードを低下させてしまうとか、新しいポートを使うのはもったないとか、理由や事情はいろいろあるのですが、残念なことにオンラインサービスの中にはSSL通信でログインを行わないサービスもまだまだ多くあります。そもそもSSL通信が用意されていないサービスもありますが、SSL通信方式のログインも用意はされているけれどユーザーがHTTP/HTTPSを任意で選択するような仕様で、標準ではHTTP通信になっているサービスも少なくありません。

 こうしたケースでは「やむを得ない場合を除き必ずSSLで~」と書いてある良心的なサービスもあれば「うまく送信できない方はコチラ」的な、なんかこっちの方がいいんじゃないか? と勘違いしそうな言い回しで書かれているケースもまだまだあります。こうした言い回しでは、SSLうんぬんといった事情を知らずに一度何らかの理由で通信がうまくいかなくて「コチラ(HTTP通信)」をクリックした人の多くが、心理的に次回からも常に「コチラ」を選んでしまいがちで、案内としては正直好ましくありません。

 いずれにせよ、こうしたサービスをHTTP通信で利用すると、もし通信経路上でそのデータが悪意のある第三者に見られてしまった場合、ログインID・パスワードをその第三者に利用される危険があります。しかし通信経路のどこに誰がいるか、なんて普通はリアルタイムで見ることはできませんよね。

 直接ケーブルがつながっている有線LANなら安心感が強いと感じる人も少なくないようですが、通信経路上にいる第三者というのは、何も通信事業者やプロバイダーなど(の中の人)だけとは限りません。ごく近い場所に限って見ても、(建造物内のネットワークがどうなっているかにもよりますが)たとえば集合住宅で他の部屋の人が通信を盗み見たり、という可能性もあり得ない話ではありません。

 そして、もしこれが以前お話しした野良APを含めたオープンなWi-Fiネットワークで行われていたとすれば、同じネットワークを利用している誰もがその通信内容を見ることが可能な状態となりますので、その危険度はさらに高まります。

ログイン操作していないのに「ようこそ○○さん」が表示される理由

 ところで、皆さんがこうしたサービスを利用される時、ログインの操作をしていないのに最初から「ようこそ○○さん」と表示されていたり、ログイン操作の時に最初から文字入力が埋まっていたりといった経験をされたことがあると思います。ブラウザーの多くは、皆さんがウェブサービスを利用された際のログイン情報や、利用者それぞれのサービスの状態を有効期限付きで保存し、同じ通信の繰り返しやユーザーの手間を軽減する仕組みを持っているのです。これをHTTP Cookie(単にCookieとも呼ばれる)と言います。

 HTTP Cookieでは、ユーザーが初めてサービスにログイン(IDとパスワードを入力)した時、サービス側のサーバーはそのユーザーアカウントに対してセッションIDという有効期限付きの通行証のようなものを割り当て、Cookieとしてブラウザーに通知します。ブラウザーはそのCookieを保存し、そのCookieが有効期限内である間は、サーバーに対しIDとパスワードの入力をすっ飛ばしてサービスにログインした状態を確立するので、ユーザーはログイン操作をすることなくサービスを利用できる、という仕組みなのです。もちろんSSL通信でログインした場合は、基本的にはCookieも暗号化されています。

 つまり先ほどのID・パスワードと同様に、HTTP通信で行われたこのセッションID(Cookie)をもし悪意ある第三者が知ることができれば、IDやパスワードを知らなくても本来のユーザーになりすましてサービスを利用することが可能になります。これが「セッションハイジャック」と呼ばれる攻撃です。

 余談ですが、XSS(クロスサイトスクリプティング)という単語をどこかでご覧になった方もいらっしゃるかもしれませんが、これも不正にセッションID(Cookie)情報を得るために用いられることがある攻撃手法の1つです。XSSはそれ以外にもフィッシングやマルウェア拡散などに多く用いられている攻撃手法です。ここでは詳しくは書きませんが、サービス提供側の脆弱性を突く攻撃ですので、これを用いた攻撃に対してサービスの利用者が打てる現実的かつ根本的な回避策は残念ながらほとんどありません。

Firesheepによるアカウント漏えいを防ぐには

 さて、本題のFiresheepですが、先に述べたようにこれはFirefoxのアドオンです。接続しているネットワーク上から、アドオン内に登録されているウェブサービスの、先ほど述べたようなログイン情報を見つけて、記録する――これがFiresheepの機能です。

 つまり、パソコンをオープンなWi-Fiネットワークに接続した状態で起動すると、同じネットワークに接続している他のユーザーが前述のサービスに接続している様子をモニタリングすることができるのです。

 Firesheepが記録したそれぞれのユーザー情報は、後でそのまま利用(?)することができます。つまり、これを使えば簡単になりすまし行為が可能になる、というわけです。参考までに、Firesheepを使ってFacebookのなりすまし行為を行う実験のリアルタイム動画(3分少々)がYouTubeに上げられていますので、興味のある方はご覧下さい(英語です)。

◇YouTube - Hacking Facebook: Stay off public wifi... OR ELSE!
http://www.youtube.com/watch?v=9T8xaDoYNmg&NR=1&feature=fvwp

 今のところ、Firesheepに登録されているウェブサービスは限られています。登録されているサービスだけでもかなり有名なものが揃っていますが、さらにFiresheepはオープンソース(プログラミング言語で記述したソフトウェアのプログラムそのものが広く一般に公開され、誰でもそのソフトウェアの改良、再配布が行える)で公開されているアドオンです。従って、作者以外の第三者がもっと多くのウェブサービスが登録された派生アドオンや、オープンWi-Fiネットワーク以外で用いる派生アドオンなどなどを作成・公開する可能性は少なからずあります。

 こうしたアドオンを使われた際のリスクは決して小さくありませんので、自衛のための対策は必ず取るべきです。以前述べたように「野良APを利用しない」というのは当然の対策です。そもそも不明な無線ネットワークには接続しないという意識が肝心です。また、公共のものを含めたオープンなWi-Fiネットワークを一切使わない、というのもひとつの考え方ではあります。

 しかし、空港や大きな施設にあるオープンなWi-Fiネットワーク、そしてFONのような共有オープンWi-Fiといったサービスは、ユーザーの利便性を高める素晴らしいサービスでもあります。オープンなWi-Fiネットワークをそもそも一切使わない、という選択肢は難しいと考える人も少なくないかもしれません。ちなみに個人的には、私自身もオープンなWi-Fiネットワークを使う人間です。

 そもそも、それだけでは最適な解決策とは言えません。先にも述べたように、有線ネットワークでも同様のリスクはあるのです。Firesheepに登録されている中でも主要なサービスはSSL通信でのログインに対応しています。それ以外のサービスも含め、SSLが使えるサービスでは必ずSSLを使うこと、SSLにそもそも対応していないサービスは極力使用を控えること、どうしても使わなくてはいけない場合は少なくともブラウザーからCookieをマメにクリアする習慣をつけることなど、可能な限りリスクを回避するよう心掛けることが大切です。

 また、たとえばFirefoxには「HTTPS Everywhere」や「Force-TLS」のように、SSL通信で接続可能なサービスでは自動的にSSL通信で接続するように設定してくれるアドオンもあります。導入時の設定は少々面倒ですが、うっかりミスを避けたい方はこういうアドオンを利用するのもひとつの手でしょう。

 年末年始にかけてネットを利用する機会が増える人も少なくないと思います。これまでお話しさせていただいた内容を含め、十分に注意した上で、便利に、そして楽しくITを活用していただければ幸いです。

 これまで私の駄文にお付き合いいただきまして、本当にありがとうございました。来年もまた、ほんの少しでも皆さんのリスク回避のお役に立てるようなお話をご提供させていただければと思っておりますので、懲りずによろしくお願い申し上げます。


関連情報

2010/12/17 06:00


中山 貴禎
好奇心の赴くまま、様々な業種・業界を自由気ままに渡り歩いてきた自由人。現在はネットエージェント取締役。基本はジェネラリストだが異常なまでに負けず嫌いで、一度興味を持ったモノに対しては極めないと気が済まない。常識よりも自分の感覚を優先するが、自己主張よりも調和を重んじる。前世はきっと猫。