同じファイルなんだから、みんなで仲良くシェアしましょう!(Dropbox談)

このところセキュリティ面での問題について何かと叩かれている Dropbox。先月は利用規約の改訂で批判され、クライアントの実装上の問題を指摘されて改修し、先週になってついに FTCに是正の申し立てまでされてしまった。


一番の問題はこの前のエントリにも書いたように、ユーザーデータを暗号化する鍵をユーザーではなく Dropboxが管理している点だ。もちろん Dropboxもその点は十分認識していて、厳重なアクセスコントロールを行っており従業員がユーザーデータにアクセスできないようにしていると主張している。しかしすでに言われているように、他の類似のサービスでは鍵はユーザーだけが持っていて、サービス提供者側は保持しないものも多い。なぜ Dropboxにそれができないのか? 批判される大きなポイントである。


それと上記の問題ほどではないが、もう一つ別の問題も指摘されている。どうやら Dropboxはファイルのアップロードの際にハッシュを計算して、重複チェックを行っているらしい。

http://www.infosecurity-magazine.com/view/18017/dropbox-security-flaw-revealed/

This means that, if user A uploads, for example, pictures with a given hash-tag and then user B uploads the same name/sized file - with the same hash-tag - their version is not actually uploaded.

Put simply, he claims, users A and B share access to user A's first file, without user A's permission.


Dropboxはディスク容量を節約するために、アップロード前に同じファイルを他のユーザーがアップロードしているかチェックし、もし既にサーバーにあればそのファイルをアップロードしないようなのだ。既に同じファイルが存在する場合どうなるか。あとからアップロードしたユーザーは、先にアップロードされていたファイルにそのままアクセスすることになる。イメージでいうとシンボリックリンク*1やショートカットみたいなものだろうか(ただし複数のユーザーにまたがっているが)。このあたり Dropbox側は詳しく説明していないのでよくわからない(先に存在したファイルが変更されたらどうなるのだろう?)。

ここで指摘されている問題点の一つは、異なるファイルが同じハッシュ値を持つ場合がありうることだ。Dropboxが具体的にどういう方法で計算しているのかわからないのだが、安全とは言えないハッシュアルゴリズムを使っている場合には問題が起こりうる。例えば MD5であれば、同じハッシュ値も持ちながら異なる動作をする複数のファイルを作れることがすでに明らかになっている。

するとこんなシナリオが想定できる。

  1. あらかじめ同じハッシュ値をもつ有害なファイル(マルウェア)と無害なファイルを作る
  2. 有害なファイルを Dropboxにアップロードしておく
  3. 無害なファイルを何らかの方法で拡散させる
  4. 無害なファイルを受け取ったユーザーがそれを Dropboxにアップロードすると、実際には違う有害なファイル(ハッシュ値が同じ)をアップロードしたことになる
  5. このファイルによってユーザーがマルウェアに感染する

フツーに考えたらマルウェアを直接ばらまいたほうが手っ取り早いし、こんな手間をかけるわけがないので、可能性としては限りなくゼロに近いシナリオではある。こういう可能性を生む設計はいかがなものか、という話だ。このシナリオ以外でも全く別のファイルがたまたま同じハッシュ値を持つ可能性はあるにはある。しかしまあハッシュの計算方法が適切なら、こうした衝突は簡単には起きないので、それほど問題ではないだろう。(ただし、知らないうちに他人と同じファイルを「シェア」している、という問題は残る。)


さてこの騒動、Dropboxはどう乗り切るのかな??

*1:Twitterで、「ハードリンクのほうがイメージに合ってるのではないか」とのコメントをもらいました。確かにその通りですね!