McAfee Avert Labs Blog
Intrepid iPhone developers bypass security for functionality」より
November 15,2008 Posted by Jimmy Shah

 米アップルの携帯電話機「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の認証システムに潜んでいることは分かっている。問題点は,今後のアップデートですぐに修正されるだろう。


Copyrights (C) 2008 McAfee, Inc. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,マカフィーの許可を得て,米国のセキュリティ・ラボであるMcAfee Avert Labsの研究員が執筆するブログMcAfee Avert Labs Blogの記事を抜粋して日本語化したものです。オリジナルの記事は,「Intrepid iPhone developers bypass security for functionality」でお読みいただけます。