MegaPWN: 重大な欠陥? それとも注目集め?

火曜日、MegaPWNに関する記事がslashdotに掲載され、ソフトウェア開発者であるMichael Koziarskiが開発したこの悪名高きツールは大いに注目を集めました。いつものように、「この男は何も発明していない」(通常はより皮肉っぽい表現が使われる)や「これは興味深い」(NSAが関連していると、通常はよりうろたえた表現が使われる)といったコメントが見られました。

そしていつものように、ある程度技術的な知識をもちわせた読者は、これが果たして本当に個人データに対する脅威なのか(Megaにデータをホストしていると仮定して)、それともただの注目集めなのか、いまだにわからない状態になっています。

FortiGuard Labsでは、MegaPWNはかつてのFiresheepのように、新しいもの、未知のものを使っているわけではなく、ほとんどの人が気づいていないセキュリティ上の問題を浮き彫りにする既存のツールであると考えています。そういう意味では、このように注目を浴びていることもおそらく有益なことだと言えるでしょう。

では一体、どういうものなのですか?

MegaPWNはブックマークレットです。ブラウザに「インストール」されると、クリックするだけでMegaにセッションを開いているユーザーのマスターキーが表示されます。

なぜマスターキーがそれほど重要なのですか?

マスターキーがあれば、Mega上に保管しているデータをすべて解読することができます。しかしそのためには、データへのアクセス権を持っていることが必要条件となり、それには、ログイン/パスワードを使用するか、Megaのサーバをハッキングするしかありません。詳細に関しては、Megaの暗号化スキームに関する解説をご覧ください。

これはセキュリティ上の欠陥なのですか?

そうではありません。マスターキーがいずれかの時点でシステム内に解読された状態で存在しているのは普通のことです。そうでなければ、マスターキーを本来の目的のために使用することができません。皆さんのシステムにバックドアが仕込まれているとしたら、悪い連中は何らかの方法で侵入してくるでしょう。

不正なブラウザエクステンションがマスターキーを入手できるというのに、それがセキュリティ上の欠陥ではないということ?

そうです。あなたのシステムが侵害を受けていたら、「セキュリティ」という言葉はあまり意味をなさない、それに関して何もできることはない、ということになります。例えば、2要素認証は最近よく使われていますが、これは(例えばMan-in-the-Browser攻撃を行うZeuSのような銀行系トロイの木馬などにより)侵害を受けた環境では役に立ちません。

では、いったい何が問題なのですか?

MegaPWNにより浮き彫りになった本当の問題は、このツール自身が指し示すものではなく、むしろそれを開発した人物がMegaのスタッフによる引用という形で書いた、「技術的には、バックドアを仕込んだJavaScriptコードを供給し、あなたのマスター暗号化キーを返送させることもできます」という投稿にあるのです。

これは本当のことです。そして自ら認めた傷でもあります。Megaのタグラインでは「あなたのデータは安全です。私たちを信用する必要すらありません。データを解読したくても私たちにはそれができないからです!」と言っているからです。実際には、ブラウザに供給されるJavascriptを使ってマスターキーを回収することで、データの解読をしようと思えば可能だということです。

言い替えれば、暗号マジックはMegaのサーバー上ではなく、すべてクライアント側、つまり皆さんのブラウザ内で行われているということです。しかし、そのマジックを行うコードはMegaにより提供されているのです。ですから潜在的には、Megaはそのコードを使って皆さんのマスターキーを入手し、皆さんのデータを解読することができるということになります。

これは今起こっているのですか? これまでにも起こったことはありますか?

私たちの知る限り、それはないと思います。要するに、Megaが皆さんのブラウザでデータを暗号化/復号するために提供するコード(前述で「暗号マジック」と呼んだもの)は簡単に監査することができます。Javascriptであるため、リーダブルなソースコードなのです。Megaがこのコードを使ってユーザーを裏切るようなことがあれば、それはすぐに明白になり(つまり、少なくとも誰かがそれを見つけるということ)、Megaのビジネスモデルは崩壊してしまいます。

しかし、そうすることがMegaの利益になるわけではないとしても、政府からの令状や召喚状により、特定のユーザーやIPアドレスに対して、そうせざるを得ないこともあるでしょう。Koziarskiが記事で言っているのはこのことです

そのような被害を受けないためには、何をすれば良いのでしょうか?

究極のソリューションはMegaにデータをアップロードする前に手動でデータを(GPGなどで)暗号化することです。もちろん、これではDropboxや同種のサービスに対するMegaの利点がなくなってしまいます。

合理的なソリューションとしては、MegaのChromeのプラグインをインストールし、自動アップデートを無効にすることです。そうすれば、「暗号マジック」は新たに提供されるJavascript(いつでも変更の可能性あり)ではなく、そのプラグインの静的コードにより行われることになります。これに関しては使用前に好きなだけ監査を行うことができます(しかし、あなたの前にも他の人がやっています。それでも気になる人は、これを書いている時点ではmd5サムが1da1e9adbda93e3d10a86f5f4bc5c6d2になっていることを確認すれば良いでしょう)。

本格的なソリューションとしては、GreaseMonkeyスクリプトを使ってMegaが提供するJavascriptが前回の接続時から変わっていないことを確認することです。もちろん、表面的な変更や性能改善を行った際にはアラートが出ます。要するに、セキュリティは使い勝手の良さの妨げになるということです。それでも、用心するに越したことはないですよね?