Fugu 15 是 Linus Henze 基于他发现的数个影响 iOS 15.0-15.4.1 的漏洞而开发的越狱演示程序,在去年十月的 Objective by the Sea 会议上首次公开技术细节。本营销号曾经做过轻微剧透。
议题有一句很值得玩味的话:A demo of Fugu15 will also be shown, including an interesting (and uncommon) way to install Fugu15 on a device. 古早的 jailbreakme 是通过访问一个网页触发 exploit;而装 app 越狱更为流行,电脑装一次自签名 app 能续上好几天。Electra 和 Unc0ver 都是典型的例子。那 Fugu15 有什么花样?直接泄露一个吧,虽然这次没有完美越狱,但 Fugu15 可以通过网页直接安装。
0xcc,公众号:非尝咸鱼贩Fugu15 越狱(iOS 15.4.1 A12+)首发在即——Objective by the Sea v5 抢先剧透
OBTS v5 之后,到了 2022 年万圣节,Linus 终于发布了第一版的开源代码。但这份开源程序只适合安全研究,获得一个可交互的 shell。对渴望安装插件的用户来说用处不大,甚至都不能在上面跑 frida 😂
之后这个工程基本上由 opa334 等开发者接手。
https://github.com/opa334/Fugu15
其实这个工具一直都可以从 GitHub 下载代码自行编译安装,只不过还有大量稳定性的问题迟迟无法发布。
昨天 opa334 表示因为群众呼声过高,提前公开测试版,只对 tweak 插件的开发者提供帮助支持。
当前项目的名称叫 Fugu15 Max,作者表示最终将会采用新的名字。
目前“基本上没有插件能用(Barely any packages currently available)”;想要适配新版系统的插件作者可以参考他们的 wiki 的文档。
iOS 15 加入新的安全机制 Signed System Volume(SSV)之后,root 文件系统很难再挂载为可编辑,只能采用 rootless 的设计。没有适配 rootless 的插件均无法使用,也不会再有经典的 Cydia。
其他的问题包括:用户态的进程重置没有完全实现,进程注入可能需要手动 kill 掉目标强迫其重启;在 iOS 15-15.3.1 上存在一个 bug,需要禁用 Wi-Fi 才能运行越狱。这个 bug 在 Linus 的演讲 ppt 里就提到过。
checkra1n 没有再公开发布过针对 iOS 15 以上的更新,主要也是因为 SSV。其实团队一直在适配新系统,只提供基本的 SSH,运行重签名的程序和代码注入,没有 Cydia 也没有插件。基本上就只能做一些用户态逆向开发工作,不对外发布了。
提到 checkra1n 就不得不提继任者 palera1n。这个工具依然沿用了 checkm8 漏洞,针对 iOS 15 以上版本继续维护,也是 rootless 的——也就是用的 Sileo 插件市场。
其实有时候在想,都 2023 年了,还需要 iOS 越狱吗?
尊重每个人不同的审美,不过我是不习惯花花绿绿的主题和字体,看了眼睛疼。经过十几年的迭代,iOS 也从各种产品(甚至包括越狱插件)“借鉴”了不少特性,留给插件发挥的空间不多了。
一种特定的需求就是安全研究。iOS 这个全封闭的系统,连个调试系统进程都不允许。
目前来看使用类似 Fugu 的公开越狱效果并不理想。首先归功于 iOS 引入越来越多的漏洞缓解机制,漏洞利用短时间内不能消灭,但越来越复杂。这样一来从细节公开到工具发布经历的时间周期越来越长,等到环境可用,已经落后至少一个大版本了。
palera1n 目前还能支持到相当高的版本,但其使用的固件漏洞不影响 iPhone X 之后的型号。iPhone X 是 2017 年下半年发布,至今将近 6 年,免不了有老化和变慢的问题,而且新系统随时可能放弃支持旧款型号。
Apple 官方的 Security Research Device 就能在最新的软件和硬件上开启调试功能,也是推荐的安全研究平台。可惜的是,由于显而易见的原因,中国的安全研究人员并不能申请加入这个计划。
Apple Silicon 的笔记本倒也可以考虑。iOS 和 macOS 还是分享了不少的 codebase。从研究硬件缓解措施的角度看,iOS 上的 PAC、APRR 等机制,Apple Silicon Mac 也有。
实在不行还有一艘贼船 Corellium,在云上虚拟 iPhone 系统,支持各种目标的调试,还预装了 frida。最大的毛病就是虚拟化本身就慢,而且对国内的网络可能访问不太友好。
GitHub 上有一个基于 qemu 虚拟 iPhone 11 的开源项目,来自 Trung Nguyễn Hoàng (@ntrung03)。这个项目我没有折腾过,所以具体的体验也不太清楚……可以参考作者的 BlackHat 主题演讲,以及项目的 Wiki。
https://github.com/TrungNguyen1909/qemu-t8030/wiki/Bringing-up-the-emulator
https://i.blackhat.com/USA-22/Thursday/US-22-Nguyen-TruEmu.pdf
上个月独立开发者 Guilherme Rambo 在 Mastodon 上晒出一个演示视频,使用 Virtualization.framework 的私有 API 在 Apple Silicon 上运行一个真正意义上的 iOS 16 虚拟机。这个虚拟机据称可以以非常高的帧率运行。
需要注意虚拟机和 Xcode 模拟器是有巨大区别的。虚拟机会模拟整个操作系统,Xcode 的 simulator 本质上还是运行在 macOS 的进程。不信打开任务管理器看看。而且模拟器镜像不少代码和 iOS 环境存在差异。
显然作者不打算公开发布,不然 Corellium 可能会受到巨大挑战 😏
One more thing...
上个月有一串神秘的电磁扰动经过我的电脑,然后就出现了前文提到的 iOS 16 虚拟机……
只不过扰动的有些大,内核 panic,最终也没运行起来。要不然早就录个小视频,发一篇独家测评装 b 了。
参考资料
Signed system volume security in iOS, iPadOS, and macOS
https://support.apple.com/guide/security/signed-system-volume-security-secd698747c9/web
Fugu15 1.0.0-beta 1 release
https://github.com/opa334/Fugu15/releases/tag/1.0.0-beta.1
checkra1n
https://checkra.in/
palera1n
https://palera.in/
Apple Security Research Program
https://security.apple.com/research-device/
iPhone 11 emulated on QEMU
https://github.com/TrungNguyen1909/qemu-t8030
Virtualized iOS 16
https://mastodon.social/@_inside/109953573784264208