由于苹果iOS在发展初期各项功能都被近乎苛刻的限制了,但同时这也成为人们对孜孜不倦的开发iOS越狱软件的原动力。随着App Store的开放,对iOS的越狱从破解铃声和壁纸转变成对商业程序的破解。
越狱的原理
iOS设备的启动顺序是:通电后,从bootrom中执行代码映射到内存空间的特定地址里,然后载入设备 NOR芯片中的Low Level Bootloader,并对iBoot进行签名检查。如果iBook通过了检查,它将被载入并对iOS Kernel进行签名检查。成功的话载入iOS Kernel并由其对文件系统及所有程序进行签名检查。
任何一步签名检查的失败都会导致启动过程的中止。足够敏锐的话,你会发现在这个不断检查的过程中,bootrom加载LLB并没有进行签名检查。这就是越狱工具Pwnage 1.0做的事,载入一个修改过的LLB并停止一系列的签名检查。在Pwnage2.0中,利用了一个证书解析过程中的溢出来打断认证链。而且 bootrom与firmware无关,除非更新硬件设计否则这个设备将一直被越狱。所有的MB型号设备都存在bootrom漏洞,甚至一些MC型号的 3GS也存在这种漏洞。
iOS的越狱分为tethered(非完美)和untethered两种。非完美越狱意味着用户拥有了一个修改后的iBoot却没有一个修改后的LLB,以致于无法通过签名检查而停止。这种情况下设备会进入DFU模式试图恢复,所以可以连接电脑利用越狱工具直接引导iBoot而不进行恢复。
直到新的bootrom漏洞被发现后新的完美越狱才成为可能。09年初发现了一个24kpwn漏洞。具体是:在恢复的时候并不会检查被刷入NOR芯片的LLB镜像文件。因此刷入一个超过0x24000 byte大小限制的LLB将导致一个溢出,以致bootrom的签名检查取消并且载入一个修改过的LLB。苹果终于试图拿出一个强大的防御方案来,在修补24kpwn漏洞的同时加入了ECID检查。恢复设备时不再允许降级且利用每个设备的ECID(设备相关的一个芯片ID)返回一个签名(SHSH)来添加到固件中进行恢复。如果签名没有成功,那么刷新过程将失败。
看起来很牢固的一个服务端签名方案。致命的一点在于还是返回了SHSH到本地,那么就可以将这个签名保存下来用于再次越狱或降级了。这就是利用TinyUmbrella之类的工具备份SHSH可以进行的事。
在3.0-3.1.2阶段发现了两个重要的iBoot漏洞:iBoot Environment Variable Overflow和usb_control_msg漏洞。但是从3.1.3开始所有的iBoot漏洞都被填补了。目光被放到了Kernel上。利用了恢复过程中了一个允许未签名代码执行的漏洞,可以在不修改iBoot的前提下运行修改后的kernel了。
4.0发布时,利用了全系列存在的一个safari中的pdf字体漏洞导致解析时堆栈溢出而破解。之后又发现了SHAtter bootrom漏洞。
IOS设备的越狱与反越狱就在苹果的不断修补与黑客的不断寻找漏洞的过程中继续开展下去。
网友评论