当前位置 :首页 >> 电影

苹果OTA更新的噩梦:刚才攻击者如何绕过签名验证并篡改内核

2024-02-02   来源 : 电影

>第三之前

第三个之前是UpdateBrainService本身。

特定的xpc咨询服务有许多古怪的司法权:

例如,“com.apple.rootless.install.heritable”授与其自身及其所有子也就是说修正SIP庇护所前面的司法权。此外,“com.apple.apfs.reverse to snapshot”和“com.apple.private.apfs.create sealed snapshot(创立密封快速照)”司法权确实强制咨询服务在重最初重新启动后越来越最初曾受SSV庇护所的此表内容。

我们还一定会注意的一点是,它是用字样坎证明顺利进行收件的。因此,我们无法通过将动态坎汇流到这项咨询服务中都来单独享曾受这些司法权。

制胜UpdateBrainService

com.apple.MobileSoftwareUpdate.UpdateBrainService2

通过单纯的数据资料,我们挖掘借助于它提供者了一个原是com.apple.MobileSoftwareUpdate.UpdaterainService2的mach咨询服务,该咨询服务具有一个特指MSUBrainPrivateSXPCI硬件的贸易协定。

它通过在受托方式中都留在YES单独接曾受来自任何客户端的所有xpc相互连接:

但在研究工作每一次中都,我想到咨询服务中都的贸易协定方式并未发挥作用,所以我确实会在未来的从前版中都再次健康检查。

com.apple.MobileSoftwareUpdate.UpdateBrainService

还有一个原是com.apple.MobileSoftwareUpdate.UpdateBrainService的咨询服务。它是通过C语言的下级XPC API发挥作用的:

在xpc handler(Handler主要领域于异步第一时长的处理方式:当发借助于一个第一时长以后,首先行踏入一个第一时长队列,收发第一时长的操作符即刻留在,而另外一个大部分在第一时长队列中都一并将第一时长取借助于,然后对第一时长顺利进行处理方式,也就是收发第一时长和接收第一时长不是同步的处理方式。 )方式中都,我们可以想到它通过一个也就是说操作符来调度xpc请求:

如果xpc领域软件具有附加请求所需要的司法权,则咨询服务将附加地绑定处理方式正则表达式操作符。

也就是说调度表有7个元素,每个元素有3个成员:操作的中文名称、所需要的司法权字符和实际处理方式正则表达式操作符的邮箱。

跨过收件证明(CVE-2022-42791)

修正工具箱

可以在领域GIMP前修正OTA工具箱吗?

回顾前争论过越来越最初的第二之前,可以证实OTA工具箱的终究偏移(/System/Library/AssetsV2/com_apple_MobileAsset_MacSoftwareUpdate/)被SIP庇护所。

但是,所含的此表内容首先行被安放在一个临时前面(/var/folders/zz/zyxvpxvq6csfxvn_n00000y800007k/T/

com.apple.nsurlsessiond/CFNetworkDownload_XXXXXX.tmp/[hash].asset),完全不曾以外,它由nsurlsessiond所有,顶上其他用户可以单独修正它。

因此,在mobileasseted也就是说回转到终究可靠前面前,有一个修正此表内容的时长窗口。因此,可靠前面中都的OTA工具箱的此表内容是不可靠的,能够顺利进行证明。

当我想法移除有效率负载时。由于司法权解决办法,mobileassetd也就是说难以绑定文档API,因此拒绝回转到终究偏移:

但显然是,一旦通过验证,它将绑定API rename来回转工具箱此表内容。所以我很早就移除了最终目标文档。

但一个急于的会话是什么样的呢,如下图右图:

幸运的是,有一个最重要字字符(“Moving file in …”) 说明了通过健康检查的时长窗口。因此,一旦从会话中都到该最重要字,我就可以移除最终目标文档。

再一,我将顺利进行第二次想法:

会话,一旦验证到最重要字“Moving file”,就立刻从OTA工具箱中都移除最终目标文档。

然后,被编造的此表内容急于地存储到终究的可靠前面!

但是,UpdateBrainService停止准备操作该系统越来越最初。

OTA工具箱证明

此咨询服务的职能是从可靠前面证明不可靠的OTA工具箱的此表内容。那么,它如何证明OTA工具箱呢?

如上所述,payload.bom文档列于OTA工具箱中都的所有建设项目及其数据流和绝对值:

前面是证明工具箱此表内容的操作符:

它弹借助于文档payload.bom并存储其此表内容。再一,该操作符将payload.bom文档中都所选的文档内容可绝对值与终究偏移上的真实内容可绝对值顺利进行比较:

如果其中都一个内容可绝对值不等于期望绝对值,则该操作符留在false并且证明败北。

它如何证明payload.Bom文档本身?

另一个原是verify_package_signature的操作符统筹证明:

首先行,它弹借助于payload.bom文档并计算借助于来其SHA1绝对值。然后弹借助于payload. dom .signature文档并存储收件文档此表内容。

再一,它从该系统书文档(/System/Library/SoftwareUpdateCertificates/iPhoneSoftwareUpdate.pem)中都提供者公钥,该文档曾受SIP和SSV庇护所:

就此,它通过绑定来自Security.framework的API seckeyverifysignsignature,用公钥计算借助于来借助于的SHA1绝对值和收件文档此表内容证明收件:

TOCTOU缺陷

这样,在证明中都存有一个经典的TOCTOU (Time-Of-Check-Time-Of-Use)缺陷:

坐落于曾受厌恶前面的payload.bom文档无法单独修正,但我们可以在mobileassetd也就是说回转OTA工具箱前用大写字母绑定移除它。因此,可以常用大写字母绑定随时修正payload.bom文档。

再一,在操作符verify_package_signature中都,它顶上据大写字母绑定从曾借助于前面存储BOM文档,因此我们常用绝对值得注意payload.BOM来通过健康检查。

然后在操作符verify_package_contents中都,它也遵循大写字母绑定并常用曾借助于BOM文档证明OTA工具箱中都的所有其他项。所以那时候,我们可以三维payload.bom文档以移除OTA工具箱中都的所有其他项。

经过三次想法,终于发挥作用了:

将绝对值得注意payload.bom复制到曾借助于前面/tmp/ppayload.bcom。

会话,一旦验证到最重要字“Moving file”,就用指向/tmp/playload.bom的大写字母绑定移除payload.bom。

大写字母绑定(/tmp/payload.bom)已急于回转到终究曾受厌恶的前面!

在传递操作符verify_package_signature后,作假BOM文档(/tmp/payload.bom) 。

那时候,OTA工具箱中都的所有建设项目都可以被编造!

缺陷并用1:SIP跨过

第一个缺陷是跨过SIP,这很难以明白。

操作符ParallelPatchRemoveFiles存储OTA工具箱中都的deleted .txt文档,并删除txt文档中都所选的所有项:

因此,我可以通过修正txt文档给予一个下述来删除随意曾受sip庇护所的偏移。

该缺陷适领域于所有Mac网络服务,以外微处理器Mac和Apple Silicon Mac。

缺陷并用2:还击驱动程序

那么,我可以胁持最初的操作该系统驱动程序吗?

常用SSV

跨过SIP后单独胁持OS驱动程序的过关斩将是SSV庇护所。

signed system volume (SSV)是macOS Big Sur中都引进的最初功能。在SIP被跨过的只能,它基本上常用隔离的null该系统卷来庇护所该系统文档。

最基本的显然是,小米能够通过OTA越来越最初来越来越最初操作该系统驱动程序文档。因此,OTA越来越最初每一次必须兼顾突破SSV庇护所的能够。

但是这个每一次是如何顺利完成的呢?

macOS该系统有一个像是的越来越最初卷 (/System/Volumes/Update/mnt1),它是也就是说操作该系统的快速照。然后将所有GIMP应领域于该快速照。如果越来越最初每一次急于,它将越来越最初密封绝对值并借助最初的操作该系统。如果越来越最初败北,它将恢复到那时候的快速照。

在研究工作了UpdateBrainService以后,我阐释了OTA越来越最初每一次中都的最重要指导引,如下右图:

首次想法

首次想法是通过有效率负载所含操作符释放一个精心设计的驱动程序文档。

制作者data_payload的方式如下:

在OTA越来越最初每一次中都,按照考虑到将精心设计的data_payload所含到快速照中都。

不过,中都止后它就不起作用了,现今还不已确定是什么原因。

第二次想法

我的第二种方式是犯罪行为领域修补的copy_patched_files操作符。这与OTA越来越最初每一次越来越最初驱动程序的方式相同。

然而,困难在于我必须自己创立修补文档,它是BXdiff 5播放器的,并且并未文档记录。所以,我必须先行研究工作一下文档播放器。

BXDIFF 5文档播放器

谷歌侦查这个文档播放器后,我找到两个GitHub存储坎,它们都领域于将修补文档应领域于从前文档,然后分解成最初文档。但是,我能够基于两个不同的文档分解成一个修补文档。

但它们确实帮助我理解了文档播放器,通过阅读编码,我告诉他BXDIFF 5文档由4大部分构成:Header, Control, Diff和Extra。

Header大部分的尺寸为88十六进制,前8个十六进制是硬质编码的魔术数字:

黑色的大部分是推断借助于的,显然是无用的。白色大部分为修补前后的Hash绝对值,领域于证明修补是否是急于。蓝色大部分是此表大部分的尺寸。

Control大部分常用LZMA线性顺利进行压缩成,读取后的Control段家书息为24十六进制,由3种控制下令构成:

第一个是混合弧度,它所选从Diff大部分混合多少十六进制。第二个是复制弧度,第三个是查找弧度。

Diff大部分和Extra大部分也是LZMA压缩成的。XFS后,家书息是一个绝对值得注意十六进制操作符,那时候由Control大部分常用。

制作者一个精心设计的修补程序文档

我的最终目标是移除驱动程序中都该系统下令uname的输借助于字符。所以我一定会修正Diff大部分。

首先行,常用此表脚本计算借助于来Diff节中都的最初十六进制。

然后计算借助于来当它到达inputSeekPosition时的diffSeekPosition。

我挖掘借助于我的最终目标字符“Darwin Kernel Version”坐落于的单位0x95058d处。因此,我常用这个绝对值作为inputSeekPosition,然后取得附加的diffSeekPosition。

再一,重写diffSeekPosition处的最初十六进制,并常用LZMA线性压缩成最初创立的Diff 大部分。我们可以单独起用Control大部分和Extra大部分。

就此,越来越最初最初Header 大部分中都的Hash绝对值和尺寸在我为驱动程序制作者了一个修补文档以后,它就如考虑到的那样指导了!

虽然它只适领域于并未T2中央处理器的微处理器Mac微电脑,但我必需要将不统筹任shellcode 汇流驱动程序,并在ring 0督导随意编码!Ring0是CPU指导在庇护所Mode下的一种私有财产Mode,也特指驱动程序Mode或该系统Mode。在这种Mode下,CPU必需要到访所有的该主记忆体,以外寄存器、设备、借助程序和所有也就是说的邮箱维度。

相对于其他7集,ring0高至具有最高司法权。它保有锁定寄存器、单独到访硬质件、中都断处理方式、定时器、缓存管理者等很多私有财产。

ring0归属于操作该系统驱动程序,只有操作该系统驱动程序可以运行在ring0高至,这使得操作该系统可以对计算借助于来机硬质件顺利进行单独的管理者和控制。

硬质件大大降低:安全及重新启动

其他Mac网络服务(Intel Mac with T2 Chip Bell Apple Silicon Mac)陷于的过关斩将是原是“安全及重新启动”的硬质件大大降低措施。默认设置是“完全安全及”,它提供者了最高高至的安全及。

在重新启动每一次中都,Mac会证明重新启动驱动器上操作该系统的基本性,以必要它是有权的。如果操作该系统是推断借助于的或难以证明为有权的,你的Mac相互连接到小米基本版越来越最初的基本性电子邮件,它能够证明操作该系统。这些电子邮件是你的Mac所独有的,它可以必要你的Mac从一个曾受小米厌恶的操作该系统重新启动。

小米的修补每一次

小米是这样修补这个缺陷的:

在第180行,它绑定操作符digest_file_nofollow来计算借助于来SHA1绝对值。在在表面上,它弹借助于区别于NO_FOLLOW字样的payload.bom文档以阻止大写字母绑定还击。

SIP跨过缺陷(CVE-2022-46722)

我们可以从前面的屏幕截图中都想到:

读取的文档夹本身是曾以外的,但其中都的文档和文档夹不曾以外。

一个都是是原是AssetData的文档夹。因此,我们可以单独修正OTA工具箱的此表内容,即使它们被回转到终究的可靠前面!

所以证明OTA工具箱的基本性是没依赖于的。我们可以在OTA工具箱通过工具箱证明后,通过修正工具箱此表内容单独给予sip跨过下述。

顶上本原因

通过我的研究工作,我想到解决办法的深层次在于也就是说mobileassetd中都原是moveTargetToDirectory的操作符:

它通过绑定API moveItemAtURL:toURL:来回转OTA工具箱此表内容,它本身保留了源文档字样和扩展属性。

终究偏移上的此表内容不曾以外,因为源文档不曾以外。

小米的修补

那时候,小米公司并未解决了这个缺陷:

它首先行常用API moveItemAtURL:toURL:将OTA工具箱此表内容复制到中都间偏移,然后在复制后常用API moveItemAtURL:toURL: 。

那时候,终究偏移上的此表内容将曾严格控制,因为被回转的也就是说复制到的文档曾严格控制。

跨过SIP后如何单独还击驱动程序?

如上所述,我们可以通过通过sip跨过下述移除驱动程序修补文档来督导随意驱动程序编码,就像上述并用2中都所想到的那样。

但这有点繁杂,我可以单独从快速照移除曾以外的驱动程序文档本身吗?

研究工作挖掘借助于,如果越来越换得来不及,中都止后它将难以指导。但是,如果我过早地移除它,最初驱动程序将被GIMP覆盖面积。那么从快速照移除驱动程序文档的准确时长是什么时候呢?我怎样才能捉到这个时长呢?

通过/System/Volumes/Update/restore.log,我挖掘借助于它在打GIMP的每一次中都输借助于了一些依赖于的电子邮件。当所有GIMP都被领域后,它踏入下一之前并输借助于会话“Unarchiving files in parallel…”:

所以我写了一个原是spin_for_log的操作符来马上所有GIMP重新启动的准确时刻:

再一,我可以单独从快速照中都将绝对值得注意驱动程序移除为被不统筹任还击的驱动程序。

如上所述,它只适领域于并未T2中央处理器的微处理器mac微电脑,而T2中央处理器并未安全及重新启动大大降低功能。

那时候我们告诉他UpdateBrainService的职能是证明不曾受厌恶的OTA工具箱的此表内容。证明依赖于文档payload.bom。

但是,我挖掘借助于并不是OTA工具箱中都的所有文档都在BOM文档中都列于:

例如:usr/standalone/update/ramdisk/, Restore/, boot/*

缺陷并用

这使得许多最重要文档不曾受庇护所:

所以有很多方式可以并用这个解决办法。

首先行,删除并触发文档AssetData/usr/standalone/update/ramdisk/x86_64SURamDisk.dmg 将导致DoS缺陷。

其次,通过修正Firmware/*文档夹的此表内容胁持固件。

第三,修正文档AssetData/boot/Ffirmware/System/Library/CoreServices/bootbase.efi,从第一条指令胁持借助每一次,并将最早的shell编码汇流该系统。

bootbase.efi文档换用Windows PE播放器。我并未开发自己的EFI程序来改变操作该系统的借助每一次。为了快速速证明方式论,我刚刚将入口点编码修补为“0xEB 0xFE”,这是一个领域于死循环的短重定向指令:

越来越换bootbase.efi文档并重最初重新启动后,该系统将陷入死循环,为了证明这一点,我设置了一个远程GDB存顶上,并在IDAPro中都远程相互连接到它。因此,你可以想到我的shell编码确实按考虑到在EFI shell中都督导!

为了高效率证明OTA工具箱的基本性,有必要从payload.bom文档中都列于OTA工具箱中都的所有建设项目。

降级还击(CVE-2023-35983)

UpdateBrainService的主要可督导文档是一个空绑定程序:

所有操作符都在UpdateBrainLibrary.dylib中都发挥作用。当然,最初的GIMP编码也还工具箱括在dylib中都。

因此,还击者可以通过移除从前从前版的dylib来督导降级还击,从前从前版的dylib由apple收件并通过坎证明。

与OTA越来越最初工具箱近似于,UpdateBrainService bundle工具箱也可以由root其他用户修正。因此,还击者可以在将UpdateBrainService回转到曾受厌恶前面前用从前从前版移除它,然后再次并用从前缺陷。

那时候,小米重构了整个引程。它必要整个每一次是可靠的,并且工具箱的此表内容不被编造:

首先行,也就是说nsurlessiond创立一个原是downloadDir的曾局限目录,然后将UpdateBrainService bundle工具箱基本版到曾受厌恶的前面。再一,最初引进的咨询服务com.apple.StreamingUnzipService.privileged.xpc在曾受厌恶的前面并行督导XFS。

基本版和XFS操作顺利完成后,以前的每一次近似于。

都只,也就是说nsurlsessionnd和com.apple.StreamingUnzipService.privileged.xpc那时候有了最初的特别司法权com.apple.rootless.storage.MobileAssetDownload来修正曾以外的目录。

顺便说一句,OTA软件工具箱的基本版也遵循这一最初引程。

译成自:

类风湿关节炎疼痛如何缓解
李柳宁
艾得辛效果好吗
合肥白癜风医院
心肺复苏训练模拟人
国际媒体积极评价中国发展才华:创造脱贫奇迹 中国经验值得学习

境外网易9月末8日电中华团结共和国为第二十次全国为代表大会即将召开之际,多国为媒体撰文,尽力评价党的十八大以来,中华团结共和国为在抑止极端贫苦等方面的关键多才多艺。外媒视为,中华团结共和国为方面...

友情链接