トレンドマイクロは、2014年4月、特定の Android端末用アプリに存在するセキュリティ上の「不具合」を確認しました。この不具合が悪用されると、ユーザ情報の収集や Android端末への攻撃の恐れが発生します。弊社の検証によると、影響を受けるアプリは少なくとも 2つ確認されており、いずれも非常に人気の高い生産性アプリとショッピング関連アプリでした。
この不具合は、基本的にはアプリの機能を実行する、特定のコンポーネントに存在します。この問題のコンポーネントは、属性「android:exported」を持ち、この属性が「true」に設定されている場合、他のアプリケーションからの実行およびアクセスを可能にします。つまり、モバイル端末にインストールされたアプリが、他のアプリの機能を動作させる可能性があるということです。他のアプリ販売業者のアプリと提携したい開発者や販売業者にとっては非常に便利な使い方ですが、セキュリティ面から見ると、サイバー犯罪者にも悪用する機会を与えることになります。
■攻撃開始に利用される「Activity」
この不具合を悪用する方法は、攻撃者の意図や不具合を抱えるアプリの性質によって異なります。例えば、弊社の解析によると、あるショッピング関連アプリでは、特定の「Activity」が攻撃を受けやすく、他のアプリによって動作される可能性があることが判明しました。なお、問題のActivityは、ユーザが購入すると表示されるポップアップを表示するものです。
ここで予想されることは、不正なアプリがそのショッピング関連アプリ内のポップアップを表示し、それを利用して攻撃を開始することです。攻撃者は、表示されたポップアップが不正なリンクや他の不正なアプリに誘導する不正なアプリを作成するかもしれません。
■情報収集に利用される「Content Providers」
このセキュリティの問題を悪用する別の方法は、重要な情報を収集するために、それを管理する「Content Providers」を狙うことです。Content Providers は、異なるアプリ間で情報を共有する機能です。例えば、生産性アプリに保存されたユーザ情報に関連した Content Providers は、情報収集に利用される可能性があります。
重要だと思われる Content Providers は、パーミッションを定義することで保護できるかもしれません。しかし、適切なパーミッション保護レベルを設定しなければ、その Content Providers は攻撃に無防備となります。上述の生産性アプリでは、ユーザ情報を保存する Content Providers は、パーミッション「READ」および「WRITE」で保護されていました。しかし、どちらのパーミッションも保護レベルが「通常」となっていたため、モバイル端末にインストールされたすべてのアプリにも、この 2つのパーミッションが与えられていました。
■アプリ開発者は何をすべきか
今回の問題は、アプリ開発者に、アプリのそれぞれのコンポーネントに適切な制限を付与する重要性を強調しました。攻撃を受けやすいコンポーネントは、パーミッションや適切な保護レベルで守られるべきです。弊社では、過去のブログ記事で、保護レベルの使用は、Android のコンポーネントを保護するのに、確実に安全とは言えないものの、十分なセキュリティレベルを与えると述べました。
開発者は、アプリで使用されるコンポーネントを確認し、コンポーネントへのアクセスが適切に制限されていることを確かめて下さい。上記で述べたアプリの開発者にはすでに連絡を取り、この問題を報告しています。
参考記事:
by Weichao Sun (Mobile Threats Analyst)
翻訳:品川 暁子(Core Technology Marketing, TrendLabs)