
CVE-2026-54992 के लिए प्रमाण-अवधारणा, एक MSMQ दूरस्थ-पठन पूर्णांक अतिप्रवाह
Microsoft Message Queuing के remote-read integer overflow के लिए proof of concept, जिसे CVE-2026-54992 के रूप में ट्रैक किया जाता है।
PoC दो Windows VMs का उपयोग करता है। कमजोर लक्ष्य पर एक सामान्य उपयोगकर्ता स्थानीय MSMQ सेवा से helper द्वारा होस्ट किए गए queue से पढ़ने के लिए कहता है। Helper एक malformed MS-MQRR response लौटाता है, जिससे लक्ष्य पर mqsvc.exe क्रैश हो जाता है। PoC denial of service प्रदर्शित करता है; यह code execution प्रदर्शित नहीं करता।
mqqm.dll प्रत्येक लौटाए गए packet section को अलग-अलग मान्य करता है, लेकिन प्रभावित संस्करणों में, उनके allocation lengths को 32-bit मान का उपयोग करके जोड़ता है, बिना aggregate overflow की जाँच किए। यह PoC section lengths के रूप में 0x2000 और 0xffffe010 प्रदान करता है। इनका गणितीय योग 0x100000010 है, जो 0x10 में wrap हो जाता है। MSMQ wrapped size का उपयोग करके packet storage आवंटित करता है और फिर मूल section lengths को संसाधित करता है, जिसके परिणामस्वरूप out-of-bounds write होता है।
MinGW-w64 के साथ दो x64 binaries बनाएं, फिर फ़ोल्डर को दोनों Windows VMs पर कॉपी करें:
make clean all
एक अलग नेटवर्क पर दो disposable Windows VMs का उपयोग करें। Helper और वास्तविक MSMQ सेवा दोनों TCP port 2105 का उपयोग करते हैं, इसलिए उन्हें अलग-अलग मशीनों पर चलना चाहिए।
कमजोर लक्ष्य पर, elevated PowerShell window से चलाएँ:
Set-ExecutionPolicy -Scope Process Bypass
.\setup-target.ps1
Helper VM पर, elevated PowerShell window से चलाएँ:
Set-ExecutionPolicy -Scope Process Bypass
.\start-emulator.ps1
फिर, लक्ष्य पर, सामान्य non-elevated PowerShell window से चलाएँ, पते को helper VM के IPv4 पते से बदलें:
.\invoke-crash.ps1 -Server 192.168.122.53 -IUnderstandThisWillCrashMSMQ
प्रभावित build पर, mqsvc.exe समाप्त हो जाता है और MSMQ service exit code 1067 के साथ रुक जाता है। लैब को रीसेट करने के लिए, helper पर restore-helper.ps1 चलाएँ और लक्ष्य पर MSMQ को पुनः आरंभ करें।