Dropboxが、同社のクラウドストレージサービスの、Apple MacOS用のデスクトップクライアントの実装をめぐる懸念に答え、またその統合化機能や、OSにリクエストしているパーミッションに関しては、もっとユーザーとコミュニケーションすべきだった、と反省を述べた。
Dropboxでデスクトップクライアントを担当するチームのBen Newhouseが、こう述べる: “DropboxのOSとの統合について、もっとよく伝えるべきだったことは明らかだ。パーミッションは一回求めているが、何をどうしているのかを説明しなかった。それは、直さなければならない”。
Dropboxのデスクトップクライアントに関する懸念は今日(米国時間9/10)Hacker NewsとTwitterに載ったが、それらはAppleのhelpのブログにあった最近の二つの記事がきっかけだ。その記事の筆者は、DropboxによるOS Xのセキュリティのハック、という言い方をして、それを詳しく説明している。AppleHelpWriterの記事には、Dropboxが“TCCデータベースに対するSQL攻撃を使ってAppleの認証ポリシーを迂回している”、と書かれている。
その申し立ては、Dropboxが偽のダイアログボックスを作って、ユーザーのパスワードが正しくないと騙そうとしている、というものだが、さらに続けて、OS XのセキュリティダイアログボックスのDropboxによる実装は、ユーザーを騙してアドミンのパスワードを入力させ、DropboxがMacのアクセスパーミッションリストからシステムにrootアクセスするためだ、と批判している。
Newhouseは、デスクトップクライアントが必要とするパーミッションのスコープに対する批判に対してこう言う: “実際に使う特権しか求めていない。でも残念ながら一部のパーミッションは、われわれが望むような細かい粒度ではない”。
“アクセシビリティのAPIをDropboxのバッジ(Officeの統合)や、そのほかの統合(ウィンドウを見つけるなどのUIの対話的操作)に使っている”。
“内蔵のファイルシステムAPIで不十分なときは、上位のアクセスを使っている。このような依存性を取り除くよう、今Appleと協働しており、もうすぐわれわれが必要とする状態になるだろう”。
Newhouseは、Macユーザーのアドミンパスワードを見たり保存したりはしていない、と断言した。
“アドミンパスワードは絶対に見ないし保存しない。表示されるダイアログボックスはネイティブのOS X API(Appleが作ったもの)だ”、と彼は語る。
ではなぜそもそも、Dropboxはアドミン特権を必要とするのか? 彼は言う、“最初に特権をチェックしセットする。そのねらいは、Dropboxが正しく機能し、OSの複数のアップデートにも対応できるためだ。人びとを心配させたり、彼らの選択を無視するためではない”。
“今うちでは、全員がこの問題に取り組んでいる。われわれが起こしてしまった怒りや不安や混乱については、お詫び申し上げたい。こういう問題では、今後はもっと良いやり方をしなければならない、と自覚している”。
でも結局DropboxはAccessibilityを利用してrootアクセスを獲得しているわけだから、一部の批判者は納得しない。
Newhouseの声明に対してHacker Newsのコメンターriobardが書いている: “現時点では、Dropboxがそのような迂回路を必要とする理由について、十分な説得力のある技術的な詳細説明が得られないかぎり、非難はやまないし、壊れた信頼を再建することもできないだろう”。
“あなた(Newhouse)のレスに挙げられている、Accessibility APIを必要とする理由は、かなり曖昧である。とくに、Microsoft製品を持っていないMacユーザーにとっては、自分のシステムを汚されたことになる。ぼくは、DropboxをMacから削除した。リーズナブルな説明と対策が得られるまで、二度と再インストールしないだろう”。
おなじくHacker Newsのコメンターkybernetykは、パーミッションの粒度が大きいというNewhouseの説明を、“何でもできる(catch all)パーミッションを、やわらかくぼかして言ってるだけだ”、という。
“これからはマルウェアがDropboxのスクリプトをターゲットにして、ユーザーのシステムにタダ乗りするだろう”、とHacker Newsのユーザーpartycoderは書いている。
Dropboxのやり方に納得しなかったMacユーザーや、アプリケーションにrootアクセスを認めることにセキュリティの不安を感じる方は、AppleHelpWriterのこの記事を読んでみよう。DropboxをOS Xの Accessibilityのプリファレンスから削除するやり方が、詳しく書かれている。