Powerdir:macOSTCC绕过漏洞

微软研究人员在 macOS 系统中发现一个 TCC 绕过漏洞—— powerdir 。
微软研究人员在 macOS 系统中发现一个安全漏洞—— powerdir,漏洞 CVE 编号 CVE-2021-30970 。攻击者利用该漏洞可以绕过 macOS 操作系统的 TCC(Transparency, Consent, and Control)技术,实现对用户受保护数据的非授权访问 。
TCC
TCC 是苹果 2012 年在 macOS Mountain Lion 系统中引入的新功能,旨在帮助用户配置应用的隐私设置,比如访问设备摄像头、麦克风、位置、访问用户日历或 iCloud 账户等 。为保护 TCC,苹果引入了一个预防非授权的代码执行的新特征和强制执行的策略将对 TCC 的访问限制为具有全盘访问权限的应用 。TCC 维护者一个包含 app 请求同意历史的数据库 。
图 macOS TCC 设置
研究人员发现可以通过修改目标用户的 home 目录,并植入一个保存了 app 请求的同意历史的虚假 TCC 数据库 。通过利用该漏洞,攻击者可以对用户受保护的个人数据进行工具 。比如,攻击者可以劫持设备上安装的 APP 或安装自己的恶意 APP,访问麦克风来记录隐私回话或获取用户屏幕上展示的敏感个人信息截图 。
Powerdir 漏洞
【Powerdir:macOSTCC绕过漏洞】研究人员此前在 TCC 中发现过一个安全漏洞—— CVE-2020-9934,该漏洞是 $HOME 环境变量投毒漏洞 。苹果公司发布的补丁在 tccd 的 _db_open 函数中:
图 CVE-2020-9934 tccd 补丁
研究人员发现苹果公司没有扩展 $HOME 环境变量,而是在当前用户下调用 getpwuid ( )。首先,getpwuid 函数会从内存中提取 ( struct password* ) ,其中包含给定用户的信息 。然后,tccd 会从中提取 pwdir 成员 。Pwdir 成员中包含用户的 home 目录,其值即使在 $HOME 环境变量被修改后仍然存在 。
该方案确实可以预防环境变量投毒攻击,但是没有解决核心问题 。研究人员通过 Directory Services command-line utility ( dscl ) 根据修改用户目录并植入一个虚假的 tcc 。db 文件:
在需要 root 权限时,研究人员发现只有当 app 被收入 TCC 策略 kTCCServiceSystemPolicySysAdminFiles 时才可以工作,其中 kTCCServiceSystemPolicySysAdminFiles 是本地或特定用户的 TCC 。db 维护的 。虽然比全盘访问权限要弱,但是仍然可以绕过 TCC 的限制 。
然后可以到处用户的 Directory Services,修改输出文件,并再次导入该文件,就可以成功绕过 dscl TCC 策略限制 。
因此,第一个 POC 漏洞利用如下:
获取目标 app 的 csreq blob;
植入一个具有所需访问权限和 csrqe blob 的虚假 TCC 。db 文件;
导出用户的 Directory Services 记录;
修改 Directory Services 记录来修改用户的 home 目录;
导出修改后的 Directory Services 记录;
停止用户 tccd,并重启进程 。
使用该漏洞利用攻击者可以修改应用的设置 。如下图所示,该漏洞利用可以获取 Teams app 的麦克风和摄像头访问权限:
图 PoC 利用 1
微软研究人员在 2021 年 7 月将该漏洞将该漏洞提交给苹果产品安全团队 。10 月,macOS Monterey 系统发布后,由于 disimport 工具工作原理的变化导致之前提交的 POC 漏洞利用无法工作 。因此,研究人员开始寻求其他修改 home 目录的方式 。
研究人员在分析最新的 macOS 版本中发现一个负责配置本地系统的 System Configuration daemon —— /usr/libexec/configd 。其中研究人员使用了 configd 的 3 个方面:
苹果签名的二进制文件—— com 。apple 。private 。tcc 。allow,值为 kTCCServiceSystemPolicySysAdminFiles 。意味着可以静默地修改 home 目录;
在配置代理方面具有可扩展性,也就是说可以加载的定制 Bundle,可以进行代码注入;
在加载定制的配置代理时没有加固的运行时 flag,也就是说可以使用未签名的代码来加载 。
在配置 configd 时,攻击者可以通过 -t 选项指定要加载的定制的 Bundle 。通过 configd 代码注入的方式来修改用户的 home 目录 。PoC 2 视频如下所示:
https://www 。microsoft 。com/en-us/videoplayer/embed/RWRqyn
补丁
苹果公司已于 12 月 13 日发布了该漏洞的安全更新,研究人员建议 macOS 用户尽快安装更新补丁 。

    推荐阅读