
Proof of concept per CVE-2026-54992, un overflow di interi in lettura remota di MSMQ
Prova di concetto per l'overflow di intero di lettura remota di Microsoft Message Queuing tracciato come CVE-2026-54992.
Il PoC utilizza due VM Windows. Un utente normale sul target vulnerabile chiede al servizio MSMQ locale di leggere da una coda ospitata dall'helper. L'helper restituisce una risposta MS-MQRR malformata, causando il crash di mqsvc.exe sul target. Il PoC dimostra un denial of service; non dimostra l'esecuzione di codice.
mqqm.dll convalida ogni sezione del pacchetto restituito separatamente ma, sulle versioni affette, somma le loro lunghezze di allocazione usando un valore a 32 bit senza verificare l'overflow aggregato. Questo PoC fornisce lunghezze di sezione 0x2000 e 0xffffe010. La loro somma matematica è 0x100000010, che si avvolge a 0x10. MSMQ alloca lo storage del pacchetto usando la dimensione avvolta e poi elabora le lunghezze delle sezioni originali, risultando in una scrittura fuori dai limiti.
Compila i due binari x64 con MinGW-w64, quindi copia la cartella su entrambe le VM Windows:
make clean all
Utilizza due VM Windows usa-e-getta su una rete isolata. L'helper e il vero servizio MSMQ utilizzano entrambi la porta TCP 2105, quindi devono essere eseguiti su macchine separate.
Sul target vulnerabile, esegui da una finestra di PowerShell elevata:
Set-ExecutionPolicy -Scope Process Bypass
.\setup-target.ps1
Sulla VM helper, esegui da una finestra di PowerShell elevata:
Set-ExecutionPolicy -Scope Process Bypass
.\start-emulator.ps1
Quindi, sul target, esegui da una normale finestra di PowerShell non elevata, sostituendo l'indirizzo con l'indirizzo IPv4 della VM helper:
.\invoke-crash.ps1 -Server 192.168.122.53 -IUnderstandThisWillCrashMSMQ
Su una build affetta, mqsvc.exe termina e MSMQ si arresta con codice di uscita del servizio 1067. Per resettare il laboratorio, esegui restore-helper.ps1 sull'helper e riavvia MSMQ sul target.