DavidCarliez/CVE-2026-54992-PoC
GitHub: DavidCarliez/CVE-2026-54992-PoC
该项目是 CVE-2026-54992 的概念验证,复现了 Microsoft MSMQ 远程读取整数溢出导致的拒绝服务漏洞。
Stars: 5 | Forks: 0
# CVE-2026-54992 PoC
这是针对编号为 CVE-2026-54992 的 Microsoft Message Queuing 远程读取整数
溢出的概念验证。
此 PoC 使用了两台 Windows 虚拟机。漏洞目标上的普通用户请求
本地 MSMQ 服务从辅助机托管的队列中读取数据。辅助机返回
一个格式错误的 MS-MQRR 响应,导致目标机上的 `mqsvc.exe` 崩溃。该
PoC 演示了拒绝服务攻击;它并未演示代码执行。
## 根本原因
`mqqm.dll` 分别验证每个返回的数据包部分,但在受影响的
版本中,它使用 32 位值累加其分配长度,而没有检查
是否存在总和溢出。此 PoC 提供的部分长度为 `0x2000` 和
`0xffffe010`。它们的数学总和为 `0x100000010`,发生溢出截断后变为 `0x10`。
MSMQ 使用溢出后的尺寸分配数据包存储空间,随后按照
原始部分长度进行处理,最终导致越界写入。
## 构建
使用 MinGW-w64 构建这两个 x64 二进制文件,然后将该文件夹复制到两台 Windows
虚拟机上:
```
make clean all
```
## 运行
在隔离的网络中使用两台一次性的 Windows 虚拟机。辅助机和真正的
MSMQ 服务都使用 TCP 端口 2105,因此它们必须运行在不同的机器上。
在漏洞目标机上,从提权的 PowerShell 窗口中运行:
```
Set-ExecutionPolicy -Scope Process Bypass
.\setup-target.ps1
```
在辅助机虚拟机上,从提权的 PowerShell 窗口中运行:
```
Set-ExecutionPolicy -Scope Process Bypass
.\start-emulator.ps1
```
接着,在目标机上,从普通的非提权 PowerShell 窗口中运行,并将
地址替换为辅助机虚拟机的 IPv4 地址:
```
.\invoke-crash.ps1 -Server 192.168.122.53 -IUnderstandThisWillCrashMSMQ
```
在受影响的构建版本上,`mqsvc.exe` 将终止,并且 MSMQ 会停止,服务退出
代码为 1067。要重置实验环境,请在辅助机上运行 `restore-helper.ps1`,并在目标机上重新启动
MSMQ。
标签:AI合规, Maven, PoC, 客户端加密, 暴力破解, 漏洞验证, 配置错误