
完全先取り! iPod touch開発
第1回:iPod touchにアプリケーションがインストールできる不思議
著者:masuidrive
公開日:2007/11/27(火)
libtiffのバグを利用したJailBreak
iPod touchにインストールされているlibtiffのバグとは、本来のフォーマットとは違う値が埋め込まれたTIFF画像を表示すると、その値によって意図しない動作を行わせることができるというものです。このようなプログラムを「exploit code」と呼びます。JailBreakではexploit codeを利用し、iPod touch上のディスク領域の読み書きとアプリケーションインストーラの導入を行っています。
「なぜSafariでJailBreakするのか」という理由は、JailBreak前のiPod touchでは外部から直接libtiffに画像を読み込ませることができないためです。exploit codeの入ったTIFF画像を読み込ませるには、そのTIFF画像が公開されているURLにlibtiffを使っているSafariを介して接続することが、近道だったということです。
この方法ならば、外部から好きなプログラムを実行させることが可能で、ファイルを書き換えるといった操作を容易に行うことができます。
このように画像処理ライブラリのバグを利用して画像にプログラムを埋め込む手法は、Windowsなどで出回ってるWebブラウザで感染するタイプのウイルスとまったく同じ仕組みなのです。「ウイルスを送るか、Appleの制限を外すJailBreakを行うか」、それだけの違いしかないのです。
JailBreakをするTIFF画像だと思って、まったく別のexploit codeが含まれた画像を表示することのないように注意してください。
なお、現在最新のJailBreak用のexploit codeの含まれた画像の中には、Jail Break後にlibtiffのバグ修正を行い、危険なtiff exploitを回避できるものまで登場しています。

図2:JailBreakの流れ
iPhoneはどのようにしてJailBreakされたのか
iPod touchがJailBreakされる前段階として、iPhoneの存在を忘れてはいけないでしょう。
通常、Windowsではアプリのインストールにはインストーラなどの専用アプリを使います。しかし、Mac OS Xでは、アプリケーションファイルをコピーするだけでインストールが完了します(もちろん例外もありますが)。
同じOS Xを搭載したiPhoneでも、特別なインストーラを使わずファイルのコピーだけでアプリケーションのインストールができる可能性が非常に高いといえます。しかし、PCとiPhoneをUSB接続した際にPC側からアクセスできる領域は、曲や写真といったiTunesで扱うデータだけでした。
この方法ではアプリケーションを保存するための領域にアクセスできません。そこで、この領域以外にもアクセスできる方法探しが開始され、なんとiPhoneが発売された1週間後には発見されてしまいました。このときは、iPhoneとパソコンを繋ぐUSBの通信内容を解析し、内部ファイルシステムにアクセスできるようになったとのことです。
iPhoneのメディア領域以外にもアクセスができるようになったことで、その行為が「JailBreak=監獄破り」と呼ばれるようになったのです。
次のページ