IPBUF安全漏洞报告
English
CVE-2021-47845 CVSS 7.8 高危

CVE-2021-2021-47845 Spy Emergency 未引号服务路径权限提升漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2021-47845
漏洞类型
未引号服务路径
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Spy Emergency 25.0.650

相关标签

未引号服务路径权限提升本地攻击Spy EmergencyWindows服务高危漏洞CVE-2021-47845

漏洞概述

CVE-2021-47845是存在于Spy Emergency 25.0.650版本中的一个高危本地权限提升漏洞。该漏洞源于Windows服务配置中的未引号服务路径(Unquoted Service Path)问题。Spy Emergency是一款知名的反间谍软件程序,其Windows服务组件SpyEmergencyHealth.exe和SpyEmergencySrv.exe在系统注册表中注册为自动启动服务,但服务路径未使用引号包裹。当系统启动或服务重启时,Windows会按照路径中的空格字符逐步搜索并执行可执行文件。攻击者可以利用这一特性,将恶意可执行文件放置在路径中的某个中间目录,由于Windows会优先找到并执行该恶意文件,导致攻击者可以在系统权限下执行任意代码。由于该服务以SYSTEM高权限运行,成功利用此漏洞的攻击者可以获得系统最高权限,完全控制目标主机。此漏洞需要攻击者具有本地访问权限,属于本地攻击向量,但利用难度低,无需用户交互即可实现。CVSS 3.1评分达到7.8分,属于高危漏洞,对系统的机密性、完整性和可用性都造成严重影响。

技术细节

未引号服务路径漏洞是一种Windows环境下常见的权限提升技术。当Windows服务配置中的可执行文件路径包含空格且未使用双引号包裹时,解析器会从路径开头逐个查找空格位置,并在每个空格处尝试查找对应的可执行文件。以本漏洞为例,假设服务路径为C:\Program Files\Spy Emergency\SpyEmergencyHealth.exe,Windows服务控制管理器(SCM)会依次尝试执行:C:\Program.exe、C:\Program Files\SpyEmergencyHealth.exe、C:\Program Files\Spy Emergency\SpyEmergencyHealth.exe。攻击者只需将恶意可执行文件(如Program.exe)放置在C:\根目录下,当服务启动时,Windows会优先找到并执行攻击者的恶意程序。由于SpyEmergencyHealth.exe和SpyEmergencySrv.exe服务以SYSTEM权限运行,恶意代码也将以SYSTEM权限执行,从而实现权限提升。攻击者可以利用Metasploit框架的exploit/windows/local/trusted_service_path模块自动检测和利用此类漏洞。防御措施包括:使用引号包裹服务路径、确保中间目录权限安全、及时更新软件版本等。

攻击链分析

STEP 1
1
信息收集:攻击者首先通过wmic或PowerShell命令枚举系统服务,识别出包含未引号路径的Spy Emergency服务(SpyEmergencyHealth.exe和SpyEmergencySrv.exe)
STEP 2
2
权限检查:攻击者验证当前用户是否对待执行路径的父目录(如C:\)具有写权限,这是成功利用的前提条件
STEP 3
3
恶意代码部署:攻击者将精心命名的恶意可执行文件(如Program.exe)写入到路径中空格之前的目录,如C:\Program.exe
STEP 4
4
触发执行:等待系统启动、服务重启或管理员手动重启服务,Windows服务控制管理器将按顺序搜索并执行路径中的可执行文件
STEP 5
5
权限提升:Windows首先找到攻击者放置的恶意Program.exe并以SYSTEM权限执行,攻击者从而获得系统最高权限
STEP 6
6
持久化控制:恶意代码可在此基础上进行后门安装、凭据窃取或进一步横向移动,完成完整的攻击链

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2021-47845 PoC - Spy Emergency Unquoted Service Path # This PoC demonstrates the unquoted service path vulnerability in Spy Emergency import os import sys import subprocess def check_vulnerable_service(): """ Check if Spy Emergency services have unquoted service paths """ try: # Query Windows services for Spy Emergency cmd = 'wmic service where "name like \'%SpyEmergency%\'" get name,pathname,state,startmode' result = subprocess.check_output(cmd, shell=True, text=True) print("[+] Spy Emergency Services:") print(result) # Check for unquoted paths with spaces services = result.strip().split('\n')[1:] for service in services: if ' ' in service and '"' not in service: print(f"[!] VULNERABLE: Unquoted path detected in: {service}") except Exception as e: print(f"[-] Error checking services: {e}") def check_write_permissions(): """ Check if current user has write permissions to vulnerable paths """ vulnerable_paths = [ r'C:\Program.exe', r'C:\Program Files\SpyEmergencyHealth.exe' ] print("\n[+] Checking write permissions to potential injection points...") for path in vulnerable_paths: directory = os.path.dirname(path) try: test_file = os.path.join(directory, 'test_write.tmp') with open(test_file, 'w') as f: f.write('test') os.remove(test_file) print(f"[+] WRITE access to: {directory}") print(f"[+] Attacker could place malicious executable at: {path}") except: print(f"[-] No write access to: {directory}") def main(): print("=" * 60) print("CVE-2021-47845 - Spy Emergency Unquoted Service Path PoC") print("=" * 60) check_vulnerable_service() check_write_permissions() print("\n[!] Exploitation requires:") print(" 1. Write access to intermediate directory") print(" 2. Wait for service restart or system reboot") print(" 3. Malicious executable will execute with SYSTEM privileges") if __name__ == "__main__": main()

影响范围

Spy Emergency < 25.0.650

防御指南

临时缓解措施
在官方补丁发布之前,可通过以下措施临时缓解风险:1)使用icacls命令限制C:\根目录等的写权限,阻止攻击者部署恶意可执行文件;2)将Spy Emergency服务改为手动启动并避免重启;3)部署应用程序白名单策略,阻止未经授权的可执行文件运行;4)监控安全日志中的异常服务启动事件;5)考虑使用虚拟化技术隔离受影响的应用程序。

参考链接

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