
Prueba de concepto para CVE-2026-54992, un desbordamiento de enteros de lectura remota en MSMQ
Prueba de concepto para el desbordamiento de enteros de lectura remota de Microsoft Message Queuing registrado como CVE-2026-54992.
El PoC utiliza dos máquinas virtuales de Windows. Un usuario normal en el objetivo vulnerable solicita al servicio MSMQ local que lea de una cola alojada por el ayudante. El ayudante devuelve una respuesta MS-MQRR malformada, provocando que mqsvc.exe en el objetivo se bloquee. El PoC demuestra denegación de servicio; no demuestra ejecución de código.
mqqm.dll valida cada sección del paquete devuelto por separado pero, en las versiones afectadas, suma sus longitudes de asignación usando un valor de 32 bits sin verificar el desbordamiento agregado. Este PoC suministra longitudes de sección 0x2000 y 0xffffe010. Su suma matemática es 0x100000010, que se envuelve a 0x10. MSMQ asigna almacenamiento de paquetes usando el tamaño envuelto y luego procesa las longitudes de sección originales, resultando en una escritura fuera de los límites.
Construya los dos binarios x64 con MinGW-w64, luego copie la carpeta a ambas máquinas virtuales de Windows:
make clean all
Utilice dos máquinas virtuales de Windows desechables en una red aislada. El ayudante y el servicio real de MSMQ utilizan ambos el puerto TCP 2105, por lo que deben ejecutarse en máquinas separadas.
En el objetivo vulnerable, ejecute desde una ventana de PowerShell elevada:
Set-ExecutionPolicy -Scope Process Bypass
.\setup-target.ps1
En la máquina virtual del ayudante, ejecute desde una ventana de PowerShell elevada:
Set-ExecutionPolicy -Scope Process Bypass
.\start-emulator.ps1
Luego, en el objetivo, ejecute desde una ventana de PowerShell normal no elevada, reemplazando la dirección con la dirección IPv4 de la máquina virtual del ayudante:
.\invoke-crash.ps1 -Server 192.168.122.53 -IUnderstandThisWillCrashMSMQ
En una compilación afectada, mqsvc.exe finaliza y MSMQ se detiene con el código de salida del servicio 1067. Para restablecer el laboratorio, ejecute restore-helper.ps1 en el ayudante y reinicie MSMQ en el objetivo.