
照片来源:Laurenz Heymann,Unsplash
Google Project Zero研究人员公开一项研究,说明iOS、iPadOS和macOS在特定条件下,即使不涉及内存安全漏洞或时序旁路,攻击者仍可能通过数据结构的特性推得系统内存地址,进而削弱地址空间布局随机化(Address Space Layout Randomization,ASLR)安全防护的效果。该攻击手法研究属于在macOS上的人为测试情境,尚未发现可直接利用的攻击面,而Apple也已在今年3月31日的安全更新中修补潜在风险。
研究的重点在于指针作为键值(Key)的数据结构如何成为泄漏来源,研究人员设计的测试程序利用了Apple的NSKeyedUnarchiver与NSKeyedArchiver API,模拟反序列化与再序列化的过程。攻击者若能传入精心设计的对象,并获得系统输出的序列化结果,便能通过观察键值输出的顺序,推断出特定对象在内存中的地址。
而NSNull正是这项攻击技巧的关键,与一般对象不同,NSNull对应的CFNull是该类在全系统唯一的单例(Singleton),存在于共享缓存之中。由于其哈希值直接取自对象地址,当其被插入NSDictionary字典时,最终序列化的输出顺序就会暴露其哈希桶(Hash Bucket)位置。研究人员通过安排大量数值键(NSNumber)填满不同的哈希桶,再插入NSNull到NSDictionary,成功观察到其位置差异,进一步利用数学方法组合出完整哈希值,最终还原出CFNull的实际地址。
虽然这只是理论性展示,但概念上与过去的hashDoS或其他以指针为基础哈希所引发的泄漏手法相关。特别的是,该手法不依赖性能差异或时间观测,只要能获取序列化结果,就能推算地址。研究人员也提醒,即便没有混合不同类型键值,单纯使用指针为键值的数据结构,在合适情境下也可能泄漏部分信息,进而影响ASLR的随机化保障。
不过,对用户而言,这并非立即可被滥用的攻击途径。研究人员也坦言,尚未发现实际的macOS或iOS攻击面,但如果特定服务中,反序列化与再序列化数据会跨越安全边界回传,就可能被利用来建立地址泄漏通道。
Apple在今年3月发布的iOS 18.4、iPadOS 18.4与macOS Sequoia 15.4等版本中,已针对相关风险进行修补,用户只需更新至最新版本即可避免。