
Prova de conceito para CVE-2026-54992, um estouro de inteiro de leitura remota do MSMQ
Prova de conceito para o estouro de inteiro de leitura remota do Microsoft Message Queuing identificado como CVE-2026-54992.
A PoC usa duas VMs Windows. Um usuário comum no alvo vulnerável solicita ao serviço MSMQ local que leia de uma fila hospedada pelo helper. O helper retorna uma resposta MS-MQRR malformada, fazendo com que mqsvc.exe no alvo falhe. A PoC demonstra negação de serviço; ela não demonstra execução de código.
mqqm.dll valida cada seção de pacote retornada separadamente, mas, em versões afetadas, soma seus comprimentos de alocação usando um valor de 32 bits sem verificar estouro agregado. Esta PoC fornece comprimentos de seção 0x2000 e 0xffffe010. A soma matemática desses valores é 0x100000010, que é reduzida para 0x10. O MSMQ aloca o armazenamento do pacote usando o tamanho reduzido e então processa os comprimentos de seção originais, resultando em uma gravação fora dos limites.
Compile os dois binários x64 com MinGW-w64 e copie a pasta para ambas as VMs Windows:
make clean all
Use duas VMs Windows descartáveis em uma rede isolada. O helper e o serviço MSMQ real usam a porta TCP 2105; portanto, eles devem ser executados em máquinas separadas.
No alvo vulnerável, execute a partir de uma janela do PowerShell com privilégios elevados:
Set-ExecutionPolicy -Scope Process Bypass
.\setup-target.ps1
Na VM do helper, execute a partir de uma janela do PowerShell com privilégios elevados:
Set-ExecutionPolicy -Scope Process Bypass
.\start-emulator.ps1
Em seguida, no alvo, execute a partir de uma janela do PowerShell comum, sem elevação, substituindo o endereço pelo endereço IPv4 da VM do helper:
.\invoke-crash.ps1 -Server 192.168.122.53 -IUnderstandThisWillCrashMSMQ
Em uma compilação afetada, mqsvc.exe é encerrado e o MSMQ é interrompido com o código de saída de serviço 1067. Para redefinir o laboratório, execute restore-helper.ps1 no helper e reinicie o MSMQ no alvo.