招募黑客网:iPhone BootROM 缝隙阐明及要挟评价

访客4年前黑客资讯795

招募黑客网:iPhone BootROM 缝隙阐明及要挟评价

0x00 相关词汇
AP:运用处理器。
SEP:安全协处理器。
SecureROM:又称 BootROM 是固化在 iPhone 只读区域中的一段代码,该区域中的代码是发动链及发动信赖链的起点,首要担任加载后续的发动链,该区域中的代码无法经过系统更新来更新,所以该区域中的代码一旦呈现安全问题,影响是十分大,而且这种影响是耐久的,只能经过召回设备批改问题。关于 SecureROM 的具体功用,可以参阅笔者之前写的一篇文章 《SecureROM 剖析笔记》。
GID:GID 是固化在 iPhone 加密引擎中的 AES 密钥,一切相同类型的设备具有相同的密钥,比方:一切 iPhone X 都具有相同的密钥。该密钥首要用来解密系统更新固件。SEP 有独立的 GID,与 AP 的不同。
UID:UID 也是固化在 iPhone 加密引擎中的 AES 密钥,但每台手机都有不同的 UID,UID 首要用来加解密用户相关的数据。SEP 有独立的 UID,与 AP 的不同。
 
0x01 工作原因
北京时间9月 28 日清晨,国外安全人员 @axi0mX 经过 Twitter 揭露了一个 iPhone BootROM 的缝隙[1],一同揭露了相关的运用代码[2]。
就像 @axi0mX 在推文中所说[3],这是从 2010 开端,9 年间,之一个揭露的针对 64 位苹果设备的可以运用的 BootROM 的缝隙。我们知道越狱社区一向在跟苹果设备的安全性做着“奋斗”,跟着苹果不断地进步 iPhone 的安全性,越狱变得越来越难,而 BootROM 缝隙不只可以用来越狱当时最新的 iOS 版别,还可以用来越狱SDK目录:里面有开发插件的比方,值得一看。将来的 iOS 版别(由于硬件缝隙无法经过系统更新进行修补),所以该缝隙在越狱社区中引起了巨大的颤动。
 
0x02 受影响的设备
影响从 iPhone 4s 到 iPhone X 的一切设备,一同影响这段时间内出产的 iPad 设备。
 
0x03 缝隙成因阐明
@axi0mX 是经过二进制比照发现的这个缝隙[4],一同 @littlelailo 独立的经过代码审计的 *** 也发现了这个缝隙[5]。@littlelailo 对这个缝隙的成因及运用思路做了阐明[6][7]。
由于 @littlelailo 对缝隙的成因现已说得十分清楚了,这儿就不再弄巧成拙,下面是@littlelailo 阐明的直接机器翻译成果。下文中的图画并不是指图片,而是指 img4 固件文件。
这个过错一开端也被称为Moonshine基本上,我查看过的一切bootrom中都存在以下过错:1.当u *** 开端经过dfu获取图画时,dfu注册一个接口来处理一切指令,并为输入和输出分配一个缓冲区2.假如您将数据发送到dfu,则设置包由主代码处理,然后调出接口代码3.接口代码验证wLength短于输入输出缓冲区的长度,假如是这种状况,它将运用指向输入输出缓冲区的指针更新作为参数传递的指针4.然后回来wLength,这是它要接纳到缓冲区的长度5. USB主代码然后运用长度更新全局变量,并预备接纳数据包6.假如接纳到数据包,则经过作为参数传递的指针将其写入输入输出缓冲区,并运用另一个全局变量来盯梢现已接纳了多少字节7.假如接纳到一切数据,则再次调用dfu特定代码,然后持续将输入输出缓冲区的内容复制到往后从中引导映像的存储方位8.之后,u *** 代码将重置一切变量并持续处理新软件包9.假如dfu退出,则开释输入输出缓冲区,而且假如映像解析失利,则bootrom从头输入dfu
退出dfu可以经过发送dfu间断包或经过触发USB重置触发解析来完结
问题:在第5步,将更新全局变量,而且Bootrom预备接纳数据,但是运用廉价的操控器,您可以违背USB标准而且不发送任何信息(arduino主机操控器或相似的东西)。然后,您可以触发USB重置以触发图画解析。假如解析失利,bootrom将再次输入dfu,但未实行过程8,因而全局变量仍包括一切值。但是,实行了过程9,因而开释了输入输出缓冲区,而在过程3中作为参数传递的指针依然指向它。因而,您可以经过将数据发送到设备来轻松触发对已开释缓冲区的写入。
对A8的运用:1.将0x40的随机数据发送到dfu,有必要发送此数据,不然您将无法运用USB重置ctrlReq(bmRequestType = 0x21,bRequest = 1,wLength = 0x40)退出dfu2.经过发送ctrlReq(0x21,1,0)ctrlReq(0xa1,3,1)ctrlReq(0xa1,3,1)ctrlReq(0xa1,3,1)ctrlReq(0xa1,3,1)使dfu处于等候USB重置的状况ipwndfu dfu.py)3.仅发送了带有bmRequestType 0x21和bRequest 1以及有用载荷巨细的wLength的设置数据包(此数据包将更新全局变量)4.发送一个状况包以符号操控传输的完毕(即便将wLength设置为一个值,我们也会越过数据阶段)5.触发总线复位6.等候设备从头输入dfu(现在将开释输入输出缓冲区,而且将在开释的缓冲区下分配u *** 使命)7.发送设置的装备恳求ctrlReq(bmREQ_SET,USB_REQUEST_SET_CONFIGURATION,wLength = Payloadsize),但将有用载荷与数据阶段一同发送(bootrom中的设置装备处理程序疏忽wLength)
有用负载将掩盖u *** 使命结构,而且将成为u *** 仓库之后的下一个分配。经过定位USB使命结构中的链接列表,您可以刺进假造的使命。而且您可以将u *** 使命仓库用作暂存空间,由于看起来它永久都不会写到那么高。当dfu退出而且u *** 使命间断时,将生成该代码。因而,您可以在第7步之后发送dfu间断数据包,并在该代码实行exec的状况下操控一切较高的寄存器,由于您的虚伪使命将添加到列表中并在往后的某个时间运转。
〜31.05.19莱洛
 
0x04 才能及要挟评价
约束条件
缝隙运用的约束条件:需求将设备置入 DFU (Device Firmware Upgrade)形式。
缝隙及运用目前所具有的才能
1、BootROM 中的恣意代码实行才能。
2、打开 CPU 的硬件调试才能(JTag)。
3、运用 AP 的 GID 进行加解密。
4、运用 AP 的 UID 进行加解密。
恣意代码实行才能及 CPU 级调试才能
BootROM 是 iPhone 发动信赖链的基础,在 BootROM 中具有了恣意代码实行才能,意味着 iPhone 的整个发动信赖链被打破了,毕竟可以用来加载修改正的 iOS 内核,然后损坏 iOS 的基础安全特性。这部分才能首要会被用来做越狱(这儿的越狱是指越狱所带来的才能,而不只仅指越狱行为)。
CPU 级调试才能,这个才能首要会被用来剖析 iPho

相关文章

怀疑老公出轨了怎么查他的微信聊天记录 我该怎么去解决

怀疑老公出轨了怎么查他的微信聊天记录 我该怎么去解决

最近,快搜小编的微博有很多看不见的人,不知道什么时候聊天!昵称和头像看不见,可以说是很神秘的,我相信很多小伙伴都想体验都想玩,这是怎么做的? 查看微信聊天 没有绰号,没有化身,没有新闻。这不是微...

微信盗号难吗 微信盗号不被对方知道

微信盗号难吗 微信盗号不被对方知道

说起谈天软件,最火的便是QQ和微信了,尽管现在QQ逐步在渐渐被微信所替代,但却替代不了咱们那时分的回忆。还记得曾经在没有微信的时分,QQ是一个很火的谈天软件,最让人无法忘掉的便是最初的那个画面一只小企...

教你怎么调取别人微信聊天记录(远程查看对方微信聊天记录)

教你怎么读取他人微信聊天纪录(远程控制查询另一方微信聊天纪录)那得去问警察才知道能不能警员来要查他人的个源人信息内容状况,除非是是审理案件必须,而且还经要派出所的有关部门出具有关办理手续,不然便是违反...

怎么能查到别人的微信聊天记录(微信聊天记录实时共享)

怎么能查到别人的微信聊天记录(微信聊天记录实时共享) 很难过吧,有几百页聊天记录的人说离开就离开了。你有没有试过回头去看你跟一个人的聊天记录,从一开始到现在。看着看着就笑了,笑着笑着就哭了。”在网易云...

什么是赤潮(赤潮为什么会影响吃海鲜)

  近日,在我国福建省等一部分水域陆续产生赤潮,有一些比较严重的水域乃至发生了鱼种身亡。大伙儿免不了担忧,产生赤潮水域的海产品还能吃吗?   赤潮是水质中的藻类植物等浮游动物在特殊自然环境标准下陡然繁...

你陪我东山再起我还你(东山再起的东山指的是哪个山)

  华夏文明,源远流长,博大精深,每一个成语身后都是有一段短故事。或起起伏伏、或委婉幽美、或波澜起伏。   例如,四字成语“重头再来”,指的是再一次担任高级官员,也形容失势以后再次得势。   但“...