-
-
[翻译]CVE-2018–8412: Office 2016 for Mac通过旧版程序包进行权限升级
-
发表于: 2018-9-11 22:17 5489
-
补丁已发布,请将您的MAU (Microsoft AutoUpdate)升级到18081201
微软自动更新助手 (Microsoft Autoupdate Helper) 3.18(180410) + 旧版不安全SilverLight安装包权限升级漏洞(EoP)
此问题波及Microsoft Office for Mac 2016和SkypeForBusiness(16.17.0.65)
本报告涵盖两个主要缺陷:
在 /Library/PrivilegedHelperTools/com.microsoft.autoupdate.helper
中有一个 XPC服务com.microsoft.autoupdate.helper
。
(XPC是OSX下的一种跨进程通信技术。 它定义了两个运行进程可以相互通信的方式。)
它基于NSXPCConnection,仅导出以下两个XPC接口:
仅允许白名单上的有效Microsoft签名二进制文件通过:
以下是两种可能的绕过方式。
首先, 它使用pid(进程ID), 这是不可信任的, 因为 exec*
函数可以将本身进程替换成另一个, 同时保持pid不变。详细内容请见 MacOS/iOS用户空间权利指派检查非常宽松 and 别信任进程ID!
实际上这种方式是不可行的。 当调用者尝试替换自身时,将调用失效处理程序,这会导致[MAUHelperTool shouldExit]
方法返回true。
然后主事件循环将终止该进程。 所以这是不可行的。
但另一种方法是使用DYLD_ *
环境变量生成一个有效的进程,以启用动态代码注入。
由于以下文件不受保护,因此可以滥用它们来绕过签名检查。
/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/Microsoft AutoUpdate
/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/Microsoft AU Daemon.app/Contents/MacOS/Microsoft AU Daemon
可以使用下面任一方法来保护这些二进制文件:
所以现在我可以与XPC通信。
弄乱log(日志)是没用的。 - [MAUHelperTool installUpdateWithPackage:withXMLPath:withReply:]
接受来自XPC客户端的路径并安装它。 但它会锁定程序包并在包上执行数字签名验证!
我无法绕过pkg文件上的签名验证,这个问题似乎无法解决。
我做出了决定:不要绕过。
在检查了一些有效的包之后,我找到了旧版的SilverLight的安装包:https://www.microsoft.com/getsilverlight/Get-Started/Install/Default
这个安装包当然是被信任的:
post-install脚本引起了我的注意。
设置全局写入权限:
有意思的命令:
(在之前的chmod命令后,它是可写入的)
所以它们起到什么作用呢?
rundylib
, 就如它名字所示
那么PlayReadyGetIBXVersionTool呢?
它在特权进程中从“Cache”加载并执行共享库,只是为了获得版本信息。
/Library/Internet Plug-Ins/Silverlight.plugin/Contents/MacOS/SLMSPRBootstrap.dylib
和 /Library/Application Support/Microsoft/PlayReady/Cache
均可由非特权用户写入。但前者需要条件竞争,我更喜欢稳定的漏洞。
因此,这个漏洞利用非常简单。
演示 (注意此为Youtube视频,考虑翻墙观看):
https://youtu.be/EmVmLuX6TS4
原文链接:https://medium.com/0xcc/cve-2018-8412-ms-office-2016-for-mac-privilege-escalation-via-a-legacy-package-7fccdbf71d9b
翻译: 看雪翻译小组 一壶葱茜
校对: 看雪翻译小组 Nxe# hello
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)