iPhoneとAndroidを始めとした、スマートフォン市場が急激に成長しています。その一方で、携帯電話とPCの間を埋める存在と言えるスマートフォンは、携帯電話と同じくらい個人情報を有しており、また、PCと同じくらいビジネス関連のデータを有している可能性が高くあります。同時に、スマートフォンもPCと同様にセキュリティリスクが高まっており、セキュリティホールの発見も今後も増えてくると考えられます。今回はiPhone向けのアプリケーションにおいて、セキュリティホールが発見された事例を取り上げます。
アップルの携帯電話機「iPhone」向けアプリケーションのセキュリティホールは、デジタル署名処理に存在する部分で発見されました。iPhone向けの公式なソフトウェア開発キット(SDK)で開発されたアプリケーションを「App Store」で配布/販売したり、iPhoneに搭載したりするには、作成者とアップルのデジタル署名を施す必要があります。このデジタル署名はセキュリティ対策であり、(1)アプリケーションで問題が発生した場合に開発元を特定する、(2)承認済みアプリケーションが改ざんされていないことを保証する、という二つ目的があります。
今回のセキュリティホールは、あるiPhone関連開発者が、アップルが作成したiPhone用アプリケーションの機能をまねる方法を調べている最中に発見しました。具体的には、動的default.pngファイルを生成する機能です。default.pngファイルは、iPhoneアプリケーションの起動時に表示されるもので、静的なスプラッシュスクリーンとして利用することができます。アップル製アプリケーションを終了しようとすると、アプリケーションはその時点のスクリーンのスナップショットを取得し、アプリケーション本体にdefault.pngとして保存します。次にそのアプリケーションを起動する際には、アプリケーションがこの新しいdefault.pngを読み込み、前回の実行時と同じ画面を表示します。この時点でアプリケーションの読み込みは完了していませんが、保存しておいたdefault.pngにより、アプリケーションを読み込み終えたように見えます。
アップルが開発したアプリケーションと違って、サードパーティが開発したアプリケーションはdefault.pngファイルを変更することができません。default.pngはアプリケーション本体に格納される際に、デジタル署名を付与されます。同ファイルの変更はアプリケーションの変更を意味するため、デジタル署名が無効となってしまします。代替案として考えられるのが、アプリケーションのデータディレクトリ内にあるdefault.pngを使用する方法ですが、アプリケーションに格納されたファイルはiPhone上でしか参照することができません。
アップルのdefault.pngを複製する方法は、iPhone SDKに含まれている「codesign」ユーティリティの欠陥と関係しています。codesignは、開発者がアプリケーションにデジタル署名を付与する際に使用するユーティリティです。通常デジタル署名を作成する際には、codesignはiPhoneアプリケーションに含まれるすべてのファイルを対象とします。codesignの問題点は、シンボリックリンク(symlink)を処理しないことです。
symlinkはファイルへのショートカットのようなもので、一つのファイルを別々の場所から参照したい場合、あるいは別の名前で参照したい場合に、symlinkを新たな場所に作成します。つまり、symlinkは新たなファイルのコピーではなく、元のファイルを指すポインタに過ぎません。codesignはこのポインタを追跡しないため、署名の作成時にsymlinkファイルを考慮には入れません。今回の新しいアプローチでは、default.pngという名前のsymlinkファイルを作成します。このため、アプリケーション外の場所やファイルにリンクするよう指定すれば、アプリケーションを容易に改ざんすることができます。
よくできたトリックですが、これだけなら余り害はありません。もしsymlinkの問題がcodesignユーティリティに限定されるのであれば、インストール済みアプリケーションには影響しません。問題が起こるのは、symlinkを使用して、署名の際にプログラムファイルやコンポーネントの存在が隠されてしまった場合です。攻撃者は、プログラムの自動更新機能を使用して悪意のあるコンポーネントが後からインストールされるよう仕組むことができます。デジタル署名はsymlinkを無視するため、アプリケーションにこれからダウンロードする悪質な部品(攻撃処理モジュール)へのポインタが含まれていても検出することができません。アプリケーションの承認処理の間、攻撃処理モジュールはプログラムには含まれていないため、悪質なアプリケーションは検査をすり抜けてしまうことになります。この結果、iPhoneのOSが持っている悪意のあるコードに対する保護機能が、回避されてしまいます。
ただ、アプリケーションがデジタル署名されているため、上記のようなマルウェアの作者を追跡することは比較的容易です。この脆弱性がiPhone SDKのユーティリティと、iPhone OSの認証システムに潜んでいることは判明しています。
関連記事
- [2012/04/17] 日本のスマホアプリユーザーをターゲットにした最近のマルウェア
- [2011/05/09] スマートフォンを守るための5つのヒント
- [2011/01/11] 携帯電話ネットワークを所有するモバイルボット
- [2010/12/20] モバイルセキュリティとその管理
- [2010/11/26] jailbreak後のiPhoneをターゲットとした、マルウェア攻撃
- [2010/08/20] モバイルのセキュリティ-3:Androidのセキュリティ
- [2010/08/06] モバイルのセキュリティ-2:必要な対策
- [2010/07/01] モバイルのセキュリティ-1:取り巻く脅威
※本ページの内容はMcAfee Blogの抄訳です。
原文:Intrepid iPhone developers bypass security for functionality