Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
asus-bsitf-0-day-poc — CVE-2026-13585 的概念验证 | Kitploit
工具/GitHubGitHub/416rehman/asus-bsitf-0-day-poc
权限提升漏洞分析漏洞利用硬件安全二进制利用
GitHub416rehman/asus-bsitf-0-day-poc

asus-bsitf-0-day-poc

CVE-2026-13585 的概念验证

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

POC - ASUS bsitf.sys 内核内存映射到用户态

CVE-2026-13585

摘要

ASUS bsitf.sys(也以 AsusBSItf.sys 形式分发)内核驱动暴露了 IOCTL 0x222808,该 IOCTL 分配攻击者控制大小的物理连续内核内存,将其映射到调用进程的地址空间并赋予完全读写权限,同时返回用户态虚拟地址和物理地址给调用者。

该设备需要管理员权限才能打开,这使得这是一个从管理员到内核的提权。在 BYOVD(自带易受攻击驱动)场景中,已经拥有管理员权限的攻击者(例如通过社会工程或单独漏洞)可以加载这个合法签名的驱动,从而无需内核漏洞即可获得任意内核内存访问权限。

受影响版本

版本文件名包池类型
3.0.10.0bsitf.sysASUS Business Manager / AbmSvcPackageNonPagedPool(可执行)
3.1.10.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx
3.1.25.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx

所有版本都会创建设备 \Device\bsitf,符号链接为 \DosDevices\bsitf。

影响

映射的缓冲区是一个全新的内核池分配,而非任意内核地址。调用者控制其内容但不控制其位置。与真正的任意内核读写相比,这限制了利用方式。

  • 内核池耗尽(DoS) — 重复分配而不释放将耗尽 NonPagedPool,导致蓝屏死机。未强制实施大小上限或分配限制。
  • 物理地址泄露 — IOCTL 返回每个分配的物理地址,可用作信息泄露或基于 DMA 的攻击。
  • 可执行内核内存暂存(仅 v3.0.x) — 在版本 3.0.10.0 中,池类型为 NonPagedPool(可执行)。可以从用户态将 Shellcode 写入映射的缓冲区,但需要通过另一个漏洞将内核执行重定向到该缓冲区地址。

在 v3.1.x 版本(NonPagedPoolNx)中,缓冲区不可执行,实际影响仅限于拒绝服务和物理地址泄露。

根本原因

分发处理程序中的 IOCTL 0x222808 执行以下操作,且未进行输入验证:

root@kitploit:~
alloc_size = *(DWORD *)Irp->AssociatedIrp.SystemBuffer;  // user-controlled

kernel_va = MmAllocateContiguousMemory(alloc_size, 0xffffffff);
mdl = IoAllocateMdl(kernel_va, alloc_size, FALSE, FALSE, NULL);
MmBuildMdlForNonPagedPool(mdl);
user_va = MmMapLockedPages(mdl, UserMode);

output[0] = user_va;        // usermode virtual address
output[1] = physical_addr;  // physical address of allocation

未检查分配大小、未释放分配数量或输入验证。该设备需要管理员才能打开,但一旦获取句柄,IOCTL 不受限制。

概念验证

构建

root@kitploit:~
cargo build --release

加载驱动

root@kitploit:~
sc create bsitf binPath= "C:\path\to\bsitf.sys" type= kernel
sc start bsitf

运行

root@kitploit:~
# 默认:0x1000(4KB)分配
cargo run --release

# 自定义大小(十六进制)
cargo run --release -- 10000

预期输出

root@kitploit:~
[*] bsitf.sys kernel memory mapping PoC
[*] target alloc size: 0x1000

[+] device handle acquired

[*] allocating 0x1000 bytes of kernel memory via IOCTL 0x222808
[+] kernel allocation succeeded:
    usermode VA:     0x000001D856F90000
    physical addr:   0x00000000BF6CB000

[*] original contents (first 16 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[*] writing 0xCC pattern (int3 sled)...
[+] readback: usermode R/W CONFIRMED

[*] freeing kernel mapping via IOCTL 0x22280C
[+] mapping freed successfully

已在 Windows 11 24H2 上测试(需要管理员权限)

修复措施

  1. 使用合理的上限验证分配大小
  2. 限制每个句柄的未释放分配数量
  3. 不要将内核分配映射到用户态地址空间
  4. 不要向用户态调用者返回物理地址
  5. 在所有版本中使用 NonPagedPoolNx

时间线

日期事件
2026-04-06通过自动化分析发现漏洞
2026-04-06在 Windows 11 24H2 上确认 PoC
2026-04-06报告已提交至 ASUS PSIRT

参考

  • CWE-782:暴露的 IOCTL 访问控制不足
  • 设备:\Device\bsitf,符号链接:\DosDevices\bsitf
  • 分发处理程序:FUN_140001070

免责声明

此概念验证仅用于授权的安全研究和负责任披露。请勿将其用于未经您拥有或明确授权测试的系统。

下载工具