Windows Installer服务中存在一个未修复的安全漏洞,允许攻击者通过操纵环境变量在系统修复过程中执行任意代码。该漏洞源于自定义操作在执行时未能正确进行用户模拟,导致以SYSTEM权限运行用户控制的命令。
自定义操作概述
自定义操作是Windows Installer中用于扩展安装功能的用户定义操作。它们可以通过以下方式实现:
- 编译为使用C/C++ API的自定义DLL
- 在WSX文件中内联VBScript或JScript代码片段
- 在WSX文件中显式调用系统命令
漏洞利用原理
在安装修复过程中,即使由低权限用户触发,标记为Impersonate="no"的自定义操作仍会以SYSTEM权限执行。攻击者可以通过控制环境变量(如USERPROFILE)来注入恶意命令路径。
复现步骤
- 创建包含恶意自定义操作的WSX文件
- 使用WiX工具集编译生成MSI安装包
- 低权限用户在目标系统上放置恶意payload
- 触发安装修复过程
- 系统以SYSTEM权限执行恶意payload
受影响的环境变量
以下Windows Installer属性和环境变量可被低权限用户"毒化":
- AdminToolsFolder、AppDataFolder等15个系统属性
- APPDATA、LOCALAPPDATA、USERPROFILE等环境变量
影响评估
该漏洞需要目标系统上已安装存在漏洞的MSI包,可作为本地权限提升或持久化机制使用。微软已于2023年12月收到报告,但至今未修复。
时间线
- 2023年12月1日:向微软安全响应中心报告
- 2024年2月9日:提供补充信息
- 2024年5月9日:微软以无法复现为由关闭案例
- 截至发文时,漏洞仍在最新Windows 11版本中存在
该研究揭示了Windows Installer服务在权限管理方面的深层问题,为系统安全审计提供了重要参考。