
Preuve de concept pour CVE-2026-54992, un débordement d'entier en lecture à distance MSMQ
Preuve de concept pour le dépassement d'entier en lecture à distance de Microsoft Message Queuing, suivi sous la référence CVE-2026-54992.
Le PoC utilise deux machines virtuelles Windows. Un utilisateur normal sur la cible vulnérable demande au
service MSMQ local de lire une file hébergée par l’assistant. L’assistant renvoie
une réponse MS-MQRR malformée, ce qui fait planter mqsvc.exe sur la cible. Le
PoC démontre un déni de service ; il ne démontre pas une exécution de code.
mqqm.dll valide chaque section de paquet renvoyée séparément mais, sur les versions
concernées, additionne leurs longueurs d’allocation avec une valeur 32 bits sans vérifier
le dépassement agrégé. Ce PoC fournit des longueurs de section 0x2000 et
0xffffe010. Leur somme mathématique est 0x100000010, qui se replie sur 0x10.
MSMQ alloue le stockage du paquet en utilisant la taille repliée, puis traite les
longueurs de section d’origine, ce qui provoque une écriture hors limites.
Compilez les deux binaires x64 avec MinGW-w64, puis copiez le dossier vers les deux machines virtuelles Windows :
make clean all
Utilisez deux machines virtuelles Windows jetables sur un réseau isolé. L’assistant et le véritable service MSMQ utilisent tous deux le port TCP 2105, ils doivent donc s’exécuter sur des machines distinctes.
Sur la cible vulnérable, exécutez à partir d’une fenêtre PowerShell avec élévation de privilèges :
Set-ExecutionPolicy -Scope Process Bypass
.\setup-target.ps1
Sur la machine virtuelle de l’assistant, exécutez à partir d’une fenêtre PowerShell avec élévation de privilèges :
Set-ExecutionPolicy -Scope Process Bypass
.\start-emulator.ps1
Ensuite, sur la cible, exécutez à partir d’une fenêtre PowerShell normale sans élévation, en remplaçant l’adresse par l’adresse IPv4 de la machine virtuelle de l’assistant :
.\invoke-crash.ps1 -Server 192.168.122.53 -IUnderstandThisWillCrashMSMQ
Sur une version concernée, mqsvc.exe se termine et MSMQ s’arrête avec le code de sortie de service
1067. Pour réinitialiser le laboratoire, exécutez restore-helper.ps1 sur l’assistant et redémarrez
MSMQ sur la cible.