49
ゼロデイ脆弱性により、App Store マルウェアが OS X と iOS のパスワードを盗むことが可能に

セキュリティ研究者らは、OS Xに重大な脆弱性、そしてiOSにも1つの脆弱性を発見しました。これらの脆弱性により、App Storeに侵入した悪意のあるアプリは、サンドボックスなどのセキュリティ保護を回避または無視し、他のアプリのキーチェーンエントリからパスワードを盗み出したり、他のアプリのプライベートデータストレージからデータを盗み出したり、ネットワークポートを乗っ取ったり、別のアプリになりすまして特定の通信を傍受したりすることが可能になります。

AppleのApp Store(iOSとOS Xの両方)における審査プロセスは、マルウェアのシステム侵入を防ぐことを目的としている。この防壁が機能しなかった場合、Appleはサンドボックス化に頼る。サンドボックス化により、アプリは厳密に定義されたチャネルを経由しない限り、アプリが管理するデータやファイル以外のデータやファイルにアクセスできないようになる。

しかし、6人の研究者が、Appleがアプリのストレージとアプリ間の通信をチェックし、アプリにチェックを要求する方法に多くの弱点を発見しました。研究者たちはこれを「不正なアプリ間リソースアクセス」と呼び、XARAと略しています。

著者の一人であるインディアナ大学コンピュータサイエンス教授のシャオフェン・ワン氏は、インタビューで「OS Xはより豊富な機能を提供しています。今回のケースでは、それが脆弱になります」と述べています。

研究者らは、2014年10月とその後2回Appleに通知したが、欠陥の修正には6ヶ月かかると言われたと述べている。また、Appleは2月に論文の提出を求めたとも述べている。この脆弱性はマルウェアにすぐに組み込めるため「ゼロデイ」脆弱性とみなされているが、業界の開示慣行は遵守されていた。

研究者らが提示した攻撃ベクトルを最小化するのは、悪意のあるアプリはApp Storeに紛れ込まなければならないという点です。Appleにとって残念なことに、論文の著者らはこれらの脆弱性を悪用したアプリを提出し、承認を得ることができました。Appleは概念実証済みであったため、承認後すぐにアプリを削除しました。

金曜日、Appleの広報担当者は用意された声明の中で、「今週初めに、アプリデータを保護し、サンドボックス設定に問題のあるアプリをMac App Storeからブロックするサーバー側アプリセキュリティアップデートを実装しました。現在、追加の修正作業を進めており、研究者と協力して論文の主張を調査中です」と述べました。

この論文では 4 つの欠陥が詳述されており、そのうち 3 つは OS X に特有のものです。ただし、大幅な変更がなければ、特定の種類のアプリケーション間またはシステム全体のデータ ストレージの変更が行われた場合、iOS は、指摘されている 1 つまたは 2 つの追加の脆弱性の影響を受ける可能性があります。

研究者らが数百もの無料アプリを分析した結果、ほとんどのアプリがこれらの攻撃経路のほとんどに対して脆弱であることが明らかになりました。1Passwordの開発元であるAgile Bitsは水曜日にブログ記事でこれに対応し、同社の今後の計画とユーザーが自衛のためにできることを詳しく説明しました。

ザラの結果

研究者らは、Mac および iOS App Store の多数のアプリがこれらの攻撃に対して脆弱であることを発見した。

突破口への4つの道

この論文では、4 つの弱点について概説しています。

  • システム全体のキーチェーンを介したパスワードの盗難。

  • アプリ間のコンテナ クラッキング。1 つのアプリが、サンドボックス化された別のアプリの、表面上はプライベートなデータ ストアの内容を取得できます。

  • インターネット ソケット インターセプション。これにより、悪意のあるアプリがアプリへのトラフィック フローを乗っ取ることができます。

  • スキーム ハイジャック (iOS と OS X の両方)。あるアプリから別のアプリを起動するシステム全体の方法がリダイレクトされ、ログイン トークンやその他の情報が取得されます。

パスワードの盗難。著者らは、キーチェーン内の任意のアプリで使用されるパラメータを特定できることを発見しました。「キーチェーン項目の属性は実際には公開されていますが、その内容(認証情報)は保護されています」と著者らは述べています。

悪意のあるアプリは、標的アプリのキーチェーンエントリへのアクセスを、被害者より前にエントリを作成するか、既存のエントリを削除することで取得します。いずれの場合も、エントリが作成または再作成されると、マルウェアはアプリと同時にアクセス権限を取得します。

…攻撃者が行う必要があるのは、既存のアイテムを識別し、それをキーチェーンから削除し、同じ属性を持つ新しいアイテムを作成して、ターゲット アプリがそこに秘密を入力するのを待つことだけです。

対象となるアプリは、OS X キーチェーン エントリへのアクセスを制限するために使用されるアクセス制御リスト (ACL) をチェックできますが、これは Apple によって必須または推奨されていません。

研究者らはテストで、iCloud パスワードを含むシステム全体のアカウントデータを管理する環境設定パネルであるインターネット アカウントと Chrome ブラウザを攻撃したが、この手法はどのアプリでも機能する。

OS X 10.10.3 および 10.10.4 ベータ版で導入された変更には、この欠陥に対抗するように設計された要素が含まれていますが、研究者はそれが効果的ではないことを発見しました。

コンテナクラッキング。サンドボックス化された各アプリは保護されたデータストレージ領域を持つ場合がありますが、アプリが他のアプリとデータを共有しようとすると、論文の著者らが悪用できた脆弱性が生じます。

AppleはOS Xで個別のデータストレージコンテナを設定する際に使用する「バンドル識別子」(BID)の一意性を強制していますが、サブシステムには同じ要件が適用されません。悪意のあるプログラムは、サブシステムのBIDを利用して、他のアプリのメインデータコンテナのACLに自身を追加し、フルアクセスを許可してしまう可能性があります。

研究者らは、Evernote、WeChat、QQ、Money Control、および付録に記載されているその他のサービスに対してエンドツーエンドの攻撃を実行し、この攻撃を組み込んだアプリをApp Storeで承認させました。

たとえば、Evernote のコンテナでは、ターゲット アプリの BID をハイジャックした XPC サービスを使用する攻撃アプリが、ユーザーのすべての連絡先と、~/Library/Containers/com.evernote.Evernote/account/ にある個人のメモを盗み出すことに成功しました。

インターネットソケットの傍受。インターネットはアドレスとポートを使って動作します。アドレスは、コンピューター、モバイル、その他のデバイスごとに固有のものです。ポートは、アパートの各部屋のようなもので、それぞれが特定の機能を持っています。

OS Xでは、アプリはポートを登録してブラウザとの通信に使用できます。論文では1Passwordを例に挙げており、1Passwordにはメインの1Passwordアプリと通信するブラウザ拡張機能があります。(繰り返しになりますが、1Passwordはこの問題を修正すべく取り組んでおり、ユーザーが攻撃を防ぐためのアドバイスも提供しています。)

悪意のあるアプリは、標的のアプリがポートを登録する前にそのポートを乗っ取り、データを傍受する可能性があります。1Passwordの場合、悪意のあるアプリ(App Storeで承認されたもの)は、ユーザーがウェブアカウントにログインするたびにパスワードを盗み取る可能性があります。

この方法では、かつてサイドジャッキングと呼ばれていたことも可能になります。つまり、サイトとのセッション中にユーザーのブラウザを識別するために使用されるトークンを盗み、そのトークンを他の場所で使用することです。

スキームハイジャック。スキームとは、インターネットやその他のリソースの種類を識別し、URLの形式で情報を渡す方法です。例えば、一般的なウェブスキームは「http」(http://)です。すべてのiOSおよびOS Xアプリは、他のアプリがデータを渡したり、アプリ内で「ディープリンク」を開いたりできるように、システムにスキームを登録します。

しかし、AppleはバンドルIDのように固有のスキームを必須としていません。Apple固有のスキームを除けば、どのアプリでも検証済みのスキームを登録できます。また、アプリが正しいアプリにURLを渡しているかどうかを判断する方法はなく、オペレーティングシステムに依存する必要があります。

論文の著者らは次のようなことを発見した。

リストにないスキームの場合は、OS X では最初に登録したアプリに、iOS では最後に登録したアプリにバインドされます。

研究者たちは、この手法があまり使用されていないOS Xと、非常に一般的に使用されているiOSにおいて、他のアプリ用のトークンを取得し、セッションをサイドジャックすることに成功しました。彼らが指摘する概念実証の一つは、Facebookの仕組みを乗っ取り、Pinterestアプリがトークンを要求し、Facebookからのレスポンス(Pinterestアプリのアクセストークンを含む)をマルウェアが取得するというものでした。

アプリ開発者は、間違ったアプリが応答をリダイレクトしたことを判断できます (Pinterest アプリは何か問題が発生したことを認識します)。しかし、それでは最初にトークンを奪ったアウトバウンド ハイジャックを阻止することはできません。

検証してから信頼する

著者らは、アプリがこれらの脆弱性に対してどの程度脆弱であるかを判断するために様々なテストを実施し、主要カテゴリごとに最大100件の無料アプリに相当する1,612個の無料アプリを削除しました。システムキーチェーンを使用し、脆弱性が存在すると思われる198個のうち、ランダムに選択した20個のうち18個が悪用される可能性があることが判明しました。(2つのGoogleアプリは影響を受けていません。)

スキームの脆弱性については、コードスキャンに基づいて 982 個の Mac アプリにこの問題の可能性があり、詳細な分析のためにランダムに選択された 200 個のうち 132 個に脆弱性があることが判明しました。

インディアナ大学のワン氏は、iOSには明らかに多くの発見があると述べた。彼らの研究は、アプリ間の問題を深く調査した数少ない研究の一つであり、「もし私がハイジャッカーだったら、標的をiOSに移すだけだ」と彼は言った。

これらの脆弱性に対する短期的な解決策は、アプリ開発者への新たな推奨事項と要件、そしてApp Storeの審査における追加手順の組み合わせです。「App Storeができることは、少なくとも悪意のあるアプリではなく、標的として脆弱なアプリを特定するために、同様の措置を講じることです」とワン氏は述べています。

同僚の博士課程学生、Luyi Xing氏も、「Appleはスキーム管理を強化するために何らかの対策を講じるべきだ」と指摘した。しかし、Xing氏は、これは結局のところアプリの実装の問題ではなく、設計上の問題だと指摘した。Appleは抜本的な見直しを迫られるだろうし、新しい認証・登録手順がApp Storeの要件に盛り込まれることで、開発者にも負担がかかるだろう。

この脆弱性を悪用できるのは App Store に公開されたアプリのみであるため、現時点ではファイアウォールとして機能します。