
Exploit for CVE-2023-38571
macOS 的 Music 和 TV 存在不安全的重命名操作,导致通过完全控制用户的 TCC.db 来获得 FDA。
我针对每个应用分别提交了漏洞报告,如果适用,可以合并。
根本问题在于这些应用拥有 FDA 权限,但未能对其文件操作进行清理。
Music 和 TV 在这方面几乎相同,只是路径不同。此后我将以 Music 为例。TV 的利用代码非常直接,请自行查看。
Music 具有将文件复制到用户资料库的功能,该功能通过一个专用文件夹实现,用户可以在此文件夹中“拖放”文件。
用户只需在 ~/Music/Music/Media.localized/Automatically Add to Music.localized/ 中创建一个文件。
Music 会获取该文件,并执行不安全的重命名操作,将其移动到"~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized"。
如果我们使用一个有效的 TCC.db(由利用工具生成),它将被复制到 "Not Added.localized" 文件夹中,因为它不是媒体文件。这非常有用,因为我们可以通过简单的符号链接竞争,将这个重命名操作重定向到 TCC.db 的真实位置。
从技术上讲,该利用是一种竞争条件,但它非常可靠,我甚至没有实现重试机制,因为它总是在第一次尝试时就成功。
Music 的使用方法:
DEBUG=1 ./librarian.py 1
TV 的使用方法:
DEBUG=1 ./librarian.py 2
在测试之间重置 TCC 数据库的方法:
launchctl stop com.apple.tccd launchctl start com.apple.tccd sleep 1 tccutil reset All