金利0無利息キャッシング – キャッシングできます

 | 

2012-07-21

Sparrowのローカルファイル読み取り可能な脆弱性とその修正について

13:28 | Sparrowのローカルファイル読み取り可能な脆弱性とその修正について - 金利0無利息キャッシング – キャッシングできます を含むブックマーク はてなブックマーク - Sparrowのローカルファイル読み取り可能な脆弱性とその修正について - 金利0無利息キャッシング – キャッシングできます

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メール経由でローカルファイルを盗み出すことが出来ます。

OSX版の検証コード

<video controls onloadstart="eval(this.data)" data="alert(event.type)">
<source src="..." type="video/quicktime">
</video>

iOS版の検証コード

<a href="javascript:...">click me</a> 
デスクトップ版の影響範囲
  • 実行ユーザーの権限で読める、パスが既知のローカルファイル盗むことができます。
  • Sparrowのメールボックスや、他のアプリの設定ファイルや、~/.ssh/以下の秘密鍵等を取得することが出来ます。
  • App Store版 1.6.2はSandbox化されていたため、読み取れるファイルが限定されていました。
    • ただし、Sparrowのデータフォルダ以下のファイルが読めるため、アドレス帳やメールを保存しているdbファイルが読み取れます。
  • /private/var/db/mds/messages/se_SecurityMessages からユーザー名を取得することができます
  • ユーザー名が既知であればSparrowのデータフォルダのパスも求めることが出来ます。
iOS版の影響範囲
  • iOSのアドレス帳のファイルを読み取る
  • Sparrowのデータフォルダ内のファイルを読み取る
  • いずれもリモートサーバーに送信が可能

経緯

この問題は2012年7月9日に伝えています。参考 https://twitter.com/domleca/status/222354049863925760

7月21日時点で

  • 問題がないのは、Sparrow公式サイトで配布されているものです
  • AppStoreで配布されている、Sparrow Liteおよび、iOS用のSparrowには脆弱性があります

2012-08-01追記

  • iOS用 1.3.1 が7/24にリリースされているけど、このバージョンではまだ直ってない。
  • 有料で検証してなかったので書かなかったけど、App Store版の有料のSparrow(1.6.2)にも同様の問題がある。自分が攻撃方法を把握していないのは、バージョン1.6.4以降です。
  • App Store版のSparrowはsandbox機構によって読めるファイルが限定されることになるがユーザー名(/Users/*****/の部分)が既知なら、Sparrowのデータフォルダ内のファイルが読める(アドレス帳やメール本文が含まれる)
    • 何はともあれsandbox化せよ、というのは、正しい戦略だろうけし、一定のリスク軽減が見込める。
    • ただしそのアプリが保存している情報、アクセス可能なファイルが重要なものなら、依然として危険だと考えたほうが良い。

2012-08-09追記

  • App Storeで8/7付けでリリースされているOSX版の Sparrow 1.6.3 (1172) Sparrow Lite 1.6.3 (1173) で脆弱性が修正されています
  • "自分の知る範囲で" 攻撃する方法はありません

2012-08-30

  • 8/30リリースのSparrow iOS版 1.3.2で脆弱性が修正されました。
  • 有料無料、OS問わず全てのバージョンが修正されました

傾向と対策

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にも載ってなかったりするので、似たような問題が繰り返されているのではないかと感じています。(この記事を翻訳してくれる人いたら助かります)

Appleは何を審査しているのか

Sparrowは非常に良くできたアプリだとは思いますが、HTMLメールの表示機能を備えたメーラーにとって、この手の脆弱性は幾度と無く繰り返されてきた既知の問題であり、非常に初歩的なものです。AppleApp Storeで配布されるアプリケーションを審査しています、場合によっては審査を理由にセキュリティfixがあろうがリリースが延期されます。

で、軽く調べたところ

まあつまり何が言いたいかというと、Appleセキュリティ上の理由でApp Storeでの配布を止めることがありますが、こういった初歩的な脆弱性を見逃しています。そして、多くのユーザーは気付かずに使っています。いわゆるギークな人たちや、セキュリティ専門家と呼ばれる人たちも、疑問を抱かずにこのメーラーを使っていました。(使ってる例: https://twitter.com/sen_u/status/225433441724940288 )

最後に

攻撃コードは非常にシンプルなものです。Googleに買収された段階で(注目が集まった段階で) この問題に気づいている攻撃者は少なからず存在しているものと考えられます。証拠は残るでしょうが、非常に簡単にターゲットのローカルファイルやアドレス帳を盗み出すことが可能です。security fixとして告知されていませんが、Sparrowのアップデートはsecurity fixです。繰り返しますが、アップデートを強く推奨します。

トラックバック - http://subtech.g.hatena.ne.jp/mala/20120721
 |