|
|
||
2012-09-07 修正されたのでタイトル変更
Mac OS X, iOS用の人気のあるメーラーであるところのSparrowにHTMLメール経由での情報漏洩を引き起こす脆弱性がありました。
8/30リリースのSparrow iOS版 1.3.2で脆弱性が修正されました。Various bugfixes となっていますが、重大なsecurity fixが含まれています。これで有料無料、OS問わず全てのバージョンが修正されました。使っているユーザーはすみやかにアップデートすることを推奨します(公式サイト配布版1.6.4以降、AppStore版1.6.3以降、iOS版1.3.2以降)
ある程度のJavaScriptの知識があればHTMLメール経由でローカルファイルを盗み出すことが出来ます。
<video controls onloadstart="eval(this.data)" data="alert(event.type)"> <source src="..." type="video/quicktime"> </video>
<a href="javascript:...">click me</a>
この問題は2012年7月9日に伝えています。参考 https://twitter.com/domleca/status/222354049863925760
7月21日時点で
2012-08-01追記
2012-08-09追記
2012-08-30
OSX版はHTML5時代に新規追加されたvideoタグ用のイベントハンドラなどが通る状態でした。メールを開いただけで任意のJavaScriptコードが実行可能です。ユーザーの権限で読める任意のファイルを読み取り、リモートサーバーに送信可能な状態でした。iOS版はリンクをクリックしたタイミングで任意のJavaScriptコードが実行可能です。こちらもvideoタグが通りますが、自動再生はされません。メールを開いただけで自動実行されるものは把握していませんが、誤タップしてしまったり、予めリンク先を確認することも困難であるため、十分に悪用可能だと考えられます。少なくとも自分が用意した攻撃パターンが全て通らなくなっているのを確認しました。iOS版は修正までに割と時間かかりましたが、おそらくHTMLサニタイジング処理自体を大幅に書き換えたものだと思います。
攻撃コードをメールで送る関係で、証拠は残ります。また、メールアカウントのパスワードはkeychainに保存されていてアクセス出来ませんでした。メールアカウントのパスワードを盗み出す方法はおそらくありません。
なぜこういう問題が発生してしまうか、というと、HTMLを使ってリッチテキストを表示するという部分と、メールの転送や返信を行うためのUI部品が混在していて、両方同じwindow上で行われていることが根本的な原因の一つになっています。単純にリッチテキストの表示として使うのであれば、JavaScriptやプラグインを無効にしたWebViewを組み込めば一番単純なのですが、UI部品がJavaScriptによって動いているため、そのようにはなっていないのです。
Sparrowの開発者とコンタクトを取った際に、すぐに任意のJavaScriptコードが実行されることについては理解してもらえましたが「サンドボックスによって影響が軽減される」と考えていました。これは無理もない話で、特に、iOSのアドレス帳や着信履歴のファイルが盗みとられる、といった問題については広く知られていないように思います。
参考
この問題はiOS6において改善されることが予定されています。なので、iOSのアドレス帳や着信履歴のファイルが盗みとられる、という問題については、そのうち気にする必要がなくなるのではないかと思いますが「そのアプリケーションからアクセス権限のあるファイル」については、引き続き読み取ることが可能なままでしょう。サンドボックス化しているといっても、他のアプリケーションに影響を及ぼさないだけで、そのアプリケーションが重要な個人情報を持っているのであれば、バグが原因で重大な機密情報の漏洩が起こりうるということになります。また、JavaScript側からアプリケーション側の機能を呼び出せるようになっている場合は、JavaScriptからそのアプリケーションの全機能を掌握したり、OSのコマンドを実行可能になる可能性もあります。組み込みWebViewにおいてXSSっぽい問題(JavaScriptコードのインジェクション)が起きた場合に、どの程度悪用可能であるのか、というのはケースバイケースです。単にアプリケーションをクラッシュさせることが出来る、というものから、重要な機密情報を盗み出すことが可能なものまであります。
つまり
このあたりの問題について的確に解説した記事があまり無いですし、AppleのSecure Coding Guideにも載ってなかったりするので、似たような問題が繰り返されているのではないかと感じています。(この記事を翻訳してくれる人いたら助かります)
Sparrowは非常に良くできたアプリだとは思いますが、HTMLメールの表示機能を備えたメーラーにとって、この手の脆弱性は幾度と無く繰り返されてきた既知の問題であり、非常に初歩的なものです。AppleはApp Storeで配布されるアプリケーションを審査しています、場合によっては審査を理由にセキュリティfixがあろうがリリースが延期されます。
で、軽く調べたところ
まあつまり何が言いたいかというと、Appleはセキュリティ上の理由でApp Storeでの配布を止めることがありますが、こういった初歩的な脆弱性を見逃しています。そして、多くのユーザーは気付かずに使っています。いわゆるギークな人たちや、セキュリティ専門家と呼ばれる人たちも、疑問を抱かずにこのメーラーを使っていました。(使ってる例: https://twitter.com/sen_u/status/225433441724940288 )
攻撃コードは非常にシンプルなものです。Googleに買収された段階で(注目が集まった段階で) この問題に気づいている攻撃者は少なからず存在しているものと考えられます。証拠は残るでしょうが、非常に簡単にターゲットのローカルファイルやアドレス帳を盗み出すことが可能です。security fixとして告知されていませんが、Sparrowのアップデートはsecurity fixです。繰り返しますが、アップデートを強く推奨します。