iPhoneの裏技でApp Storeのセキュリティを破り、アプリケーションの更新を通じて悪意あるコードを実行することができる

次の記事

コツァコス・タッチはミダス・タッチに非ず:3匹目のどじょうのSNS「Moli」内破

iPhoneにセキュリティ上の不具合を発見した。サードパーティーの開発者が、AppleのApp Store登録承認手続きを迂回して、アプリケーションから意図的に任意のコードを更新・実行することができるのだ。通常アプリケーションの登録(および更新)にあたっては、App Storeへの登録前に長ったらしい審査期間を必要とする。これは悪意あるコードが埋め込まれていないか、あるいはAppleの利用規程に違反するところがないかを精査するための期間だ。しかし今回発見された欠点を突けば、開発者が好き勝手なことを行うことができる。

この欠陥は、ほとんどのiPhone利用者にとって問題のない小技に見えるような仕組みに端を発する。つまりiPhoneのアプリケーションを起動する際、その読込時にDefault.pngという名前の画像がしばらく表示される。Appleの開発するアプリケーションでは、このDefault.pngを動的に扱うことができ、アプリケーションデータを読み込む前に現在の日付を表示したり、データの中身を表示するようなことができる。これまでサードパーティーの開発者については、アプリケーションのインストール後にDefault.pngを操作する方法は無かった。この問題に対処するため、開発者のPatrick CollisonがiPhoneのコード署名システムをごまかして、動的な起動画像を読み込むことができるようにする回避策を発見した(この方法の詳細についてはCollisonのブログ記事を参照のこと)。

Collisonの発見した裏技を詳細に検討して数名のiPhoneの開発者と検討したところ、この裏技は見かけよりも重要な(そして有害にもなり得る)ものであることが判明した。通常はiPhoneのAPIは署名エリア外のコードを読み取ることを拒否するようになっている。しかし画像を読み込むための今回発見された裏技(symlinksを利用する)を使うことにより、iPhoneはコードが「信用された」(つまり「許可された」)領域から読み込まれたものと判断してしまう。これを利用して、開発者は自在にどのようなコードでも更新して実行することができるようになる。

もちろん一般的な話をすれば、開発者にはプラットフォーム側から承認されていない更新やコードを動作させる自由がある。これはWindowsやMacのデスクトップ機の場合と同じことだ。ただ、これらデスクトップ機の場合については、新たなソフトウェアをダウンロードすることには危険が伴うものだと、時間を掛けて認識されるようになってきた。しかしApp Storeについては、すべてのソフトウェアにアップルの認定スタンプが押されている。このために利用者は判断をApple任せとして、入手可能なアプリケーションを手当たり次第に試してみるという傾向もある。

幸いなことに、App Storeに登録されているアプリケーションで、ここに紹介している裏技を実装しているものはないようだ。したがってAppleがアプリケーションの新規登録を行う前に、ここで記した問題点を迅速に解決してしまえば世の中のiPhoneが危険に晒されることはないということになる。

原文へ

(翻訳:Maeda, H)