聚焦源代码安全,网罗国内外最新资讯!
Darwin 通知是 CoreOS 层的一个组成部分,为苹果操作系统上进程间的简单消息交换提供了底层机制。与Darwin 通知机制相关联的并非对象或字符串,而是 state(通常是 Uint64),且一般仅通过布尔值(true 或 false)进行表示。
该API的一个简单用例是只希望将某既定事件通知给其它进程,那么可以调用notify_post函数,而接收该通知的进程可通过 notify_register_dispatch 函数进行登记,当其它进程以特定名称发布该通知时,在特定队列上就会调用一个代码块。希望发布Darwin 通知的具有状态显示的进程需要首先注册一个句柄,而这可通过调用 notify_register_check 函数完成。希望获得通知状态的进程则可通过notify_register_check机制调用notify_get_state获得当前状态。如此,Darwin通知即可用于某些事件类型,同时持有系统上任何进程在任何既定时间进行查询的状态。
苹果操作系统上的任何进程,包括iOS 在内均可注册成从沙箱,需要任何Darwin通知,且无需任何特别权限。
Darwin 通知的属性如下:
无需特权即可接受通知
无需特权即可发送通知
以公开API的形式可用
无验证发送人的机制
那iOS上是否存在一些使用Darwin通知的地方执行强大操作,从沙箱应用中执行拒绝服务攻击?
从早期的 iOS 18 beta 版中找到iOS root 文件系统并获取能够使用 notify_register_dispatch 和 notify_check 的进程后,研究员开发了一款测试应用,名为 “EvilNotify”。
研究员测试后发现,即使用户强制退出该app,这起拒绝服务攻击仍然能影响整个系统,具体而言,攻击能够:
导致“液体检测”特性的图标显示在状态栏中。
触发“显示端口”连接状态在“灵动岛 (Dynamic Island)”中显示.
拦截系统范围内拉下“控制中心”、“通知中心”和“锁屏”的手势。
强制系统无法使用无线网络,仅能使用蜂窝网络。
锁定系统。
触发“数据正在传输中”的UI,只有用户取消才能使用该设备。
使设备进入并使“找到我的”进入“丢失状态”,触发Apple ID 密码对话提示,重新启用“苹果支付”。
触发设备进入“正在恢复”模式。
上述提到的最后一个场景“正在恢复”似乎是最有可能实现的,只需点击“重启”按钮,就会导致设备重启。而且实现起来非常简洁,毕竟只有如下一行代码:
notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted")
这一行代码就足以使设备进入“正在恢复”状态。由于设备实际并非恢复状态,因此时限之后该操作必然失败,而唯一的修复方法就是点击“重启”按钮,重启设备。
当设备通过一台联网计算机从一份本地备份恢复时,就会触发通知,进而触发UI。如之前所述,任何进程都可发送该通知并诱骗系统进入该模式。
Darwin 通知可能变成拒绝服务,而作者所需做的就是在设备重启时不断触发它。研究员设法验证了即使app不在前台时notify_post也可运行,设备多次重启也能够重复发布通知。
之后研究员创建名为“VeryEvilNotify”的小组件,当iOS 检测到它时就会将其唤醒并迫切执行,随后会在多个地方如锁屏、主页屏幕、通知中心和控制中心进行展示。研究员之后将上述提到的一行代码加入小组件扩展,并通过在TimelineProvider 的每个扩展点方法中调用 Swift 的 fatalError() 函数,设法让系统执行了创建的 VeryEvilNotify app,避免了因扩展请求太频繁而被系统限时并延迟更新的机制。之后,屏幕显示了“正在恢复”的UI,之后失败并给出重启系统的提示。重启之后,当 SpringBoard 初始化后,该扩展都会被系统唤起,设备要求擦除并从备份重启。
研究员后续并未验证该app是否会终于备份,设备从中恢复,该漏洞被再次出发,使其作为拒绝服务攻击更有效。研究人员猜测当小组件扩展崩溃时,iOS应该会有一些重新尝试的机制,不过也有可能因为重启开始之后失败导致该机制失效。
该漏洞编号为CVE-2025-24091,作者因此获得1.75万美元的赏金。该漏洞已在 iOS 18.3中修复。
iPhone Triangulation 攻击滥用未记录的苹果硬件特性
苹果开放iPhone 14 Pro 申请,助力2024安全研究
以色列监控公司 QuaDream 利用零点击 exploit 攻击高风险 iPhone
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~

