CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2023-21554

QueueJumper (CVE-2023-21554): The Ghost of Middleware Past Returns

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 14, 2026·6 min read·41 visits

Executive Summary (TL;DR)

A critical 9.8/10 RCE in the Windows MSMQ service allows unauthenticated attackers to execute arbitrary code as the Network Service account via TCP port 1801. It affects almost all versions of Windows. Patch immediately or disable the service.

Microsoft Message Queuing (MSMQ) is a relic of a bygone era, a middleware service that allows applications to talk to each other when they aren't online at the same time. It's the kind of legacy debt that sysadmins forget exists until it sets the server on fire. Enter CVE-2023-21554, dubbed 'QueueJumper'. It is a critical, unauthenticated Remote Code Execution (RCE) vulnerability that allows an attacker to take over a Windows Server simply by sending a malformed packet to TCP port 1801. No credentials, no user interaction, just pure, unadulterated memory corruption.

The Hook: Who Still Uses MSMQ?

Microsoft Message Queuing (MSMQ) is like that one box of cables you keep in your closet 'just in case'. You don't know why you have it, you haven't touched it in a decade, but it's there, taking up space and gathering dust. In the Windows world, MSMQ is an optional component used for asynchronous communication. It was big in the early 2000s for gluing together enterprise applications.

Here's the kicker: even though it's 'optional', it often gets enabled silently. Install Microsoft Exchange? You might get MSMQ. Install certain SQL Server components? MSMQ tags along. Once enabled, it opens TCP port 1801 and listens for incoming connections from anyone. It doesn't ask for a password. It doesn't check if you're a friend. It just blindly accepts binary blobs and tries to parse them.

This vulnerability, discovered by Check Point Research, is a classic case of 'old code meets modern scrutiny'. The service runs as mqsvc.exe, usually with Network Service privileges. While that's not SYSTEM, it's more than enough to pivot, escalate, and turn a domain controller into a cryptocurrency miner.

The Flaw: Trust Issues in Binary Parsing

The vulnerability lives inside mqqm.dll, the library responsible for parsing the proprietary MSMQ binary protocol. If you've ever looked at protocol parsers written in C/C++ from the 90s, you know exactly where this is going. The protocol consists of a Base Header followed by a variable number of section headers (User Header, Property Header, Security Header, etc.).

Specifically, the flaw is an Out-of-Bounds Write (CWE-787). The parser reads a size field from the incoming packet header to determine how much memory to allocate—or worse, assumes a fixed buffer size—and then copies data from the packet into that buffer based on a different length field provided by the attacker.

It is the security equivalent of a bank teller asking, 'How much money are you giving me?' and you say 'Five dollars', but then you hand them a dump truck full of pennies and they try to stuff it all into a single envelope. The envelope rips, the pennies spill everywhere (memory corruption), and in the chaos, you slip a note to the manager saying 'Give me the vault key' (Remote Code Execution).

The Code: Anatomy of a Buffer Overflow

Let's look at the logic failure. The MSMQ protocol uses a pointer-rich structure for its headers. When mqsvc.exe receives a packet, it calls CQmPacket::CQmPacket to initialize the packet object. The vulnerability is triggered when parsing specific variable-length headers, such as the Extension Header.

In a simplified view, the vulnerable pseudo-code looks something like this:

// Simplified logic of the vulnerability
void ParseHeader(byte* packetData) {
    // Attacker controls headerSize
    DWORD headerSize = *(DWORD*)(packetData + OFFSET_SIZE);
    
    // Allocation might be small or fixed
    byte* buffer = new byte[FIXED_BUFFER_SIZE];
 
    // ... checks are missing or insufficient ...
 
    // CRITICAL FLAW: Writing beyond the bounds of 'buffer'
    // The code trusts the packet data to not exceed the buffer
    // without strictly validating headerSize against the allocated capacity.
    memcpy(buffer, packetData + OFFSET_DATA, headerSize);
}

The patch provided by Microsoft in April 2023 (KB5025229) introduces strict bounds checking. They added validation routines that ensure the NextSection pointer (which points to the next header in the stream) does not point outside the boundaries of the received packet data. If the offset calculations point into unmapped memory or overlap in invalid ways, the parser now throws an exception and drops the connection.

The Exploit: Jumping the Queue

Exploiting QueueJumper is surprisingly clean for a binary heap overflow. The attack vector is strictly network-based on TCP port 1801. A functional exploit requires sending a sequence of packets to set up the internal state of the Queue Manager, followed by the trigger packet.

The Attack Chain:

  1. Handshake: The attacker connects to 1801 and sends an establish_connection packet. This convinces the server to allocate a session object.
  2. Negotiation: A connection_parameters packet is sent to set packet sizes and timeouts. This grooms the heap, ensuring the subsequent allocation lands next to something interesting.
  3. The Trigger: The attacker sends a user_message packet containing a malformed Extension Header. This header claims to be small but contains a massive payload.

When mqsvc.exe processes the trigger, it calculates the address for the next header. Due to the integer overflow or missing check, it writes the attacker's shellcode into the adjacent memory chunk. If the attacker successfully overwrites a virtual function table (vtable) pointer or a return address on the stack, they gain control of the instruction pointer (RIP/EIP).

While public PoCs (like those by zoemurmure) mostly demonstrate a Denial of Service (crashing the service with an access violation), weaponizing this for RCE is trivial for a seasoned exploit dev. You simply replace the garbage data with a ROP chain leading to VirtualProtect and your shellcode.

The Impact: Why You Should Care

You might be thinking, "It's just the Network Service account, who cares?" You should care. Network Service is a built-in Windows account that has less privilege than SYSTEM, but it still has significant access to network resources. It can authenticate to other machines in the domain using the computer's machine account (DOMAIN\COMPUTER$).

Scenario:

  1. Attacker compromises an old web server running MSMQ via CVE-2023-21554.
  2. They get a shell as nt authority\network service.
  3. They use the machine account credentials to perform a DCSync attack or request a Kerberos ticket for other services (Silver Ticket).
  4. Within minutes, they move laterally to the Domain Controller.

With an EPSS score hovering around 0.92 (92%), this isn't theoretical. The barrier to entry is low, and the payoff is high. If you have port 1801 exposed to the internet, you are effectively running a public shell server.

The Fix: Kill It or Patch It

The mitigation strategy here is binary: either you need MSMQ, or you don't. Most of you don't.

Option 1: The Scorched Earth Policy (Recommended) If you don't have a specific, documented business need for MSMQ, disable it. Right now. Go to your servers and run:

Disable-WindowsOptionalFeature -Online -FeatureName MSMQ-Server -Remove

Option 2: The Patch (For the Unfortunate) If you are running legacy software that requires MSMQ (I'm sorry), you must apply the April 2023 Security Updates. This includes KB5025229 for Windows 10/11 and corresponding KBs for Server 2008/2012/2016/2019/2022.

Option 3: Firewalls (The Band-Aid) If you can't patch and can't disable it (why?), block TCP port 1801 at the perimeter. MSMQ should never, ever be exposed to the public internet. If Shodan can see your port 1801, you've already lost.

Official Patches

MicrosoftOfficial Microsoft Security Response Center (MSRC) Advisory

Technical Appendix

CVSS Score
9.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
EPSS Probability
92.12%
Top 8% most exploited

Affected Systems

Windows 10Windows 11Windows Server 2008Windows Server 2012Windows Server 2016Windows Server 2019Windows Server 2022

Affected Versions Detail

Product
Affected Versions
Fixed Version
Windows 10
Microsoft
< April 2023 UpdateApril 2023 Patch
Windows Server
Microsoft
2008 - 2022 (Pre-April 2023)April 2023 Patch
AttributeDetail
CVSS Score9.8 (Critical)
Attack VectorNetwork (TCP 1801)
AuthenticationNone (Unauthenticated)
EPSS Score0.92 (High Probability)
CWECWE-20 / CWE-787
ImpactRemote Code Execution (System Takeover)

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1210Exploitation of Remote Services
Lateral Movement
CWE-20
Improper Input Validation

Known Exploits & Detection

GitHubPython script triggering a crash (DoS) in mqsvc.exe
GitHubTechnical analysis and crash PoC
NucleiDetection Template Available

Vulnerability Timeline

Vulnerability disclosed by Check Point Research
2023-04-11
Microsoft releases patch (Patch Tuesday)
2023-04-11
Public DoS PoCs released on GitHub
2023-04-15

References & Sources

  • [1]Check Point Research - QueueJumper Analysis

More Reports

•6 days ago•CVE-2026-9354
6.9

CVE-2026-9354: Arbitrary Mass Mention Bypass in NousResearch hermes-agent Slack and Mattermost Adapters

A vulnerability in the Slack and Mattermost platform adapters for NousResearch hermes-agent permits an unauthenticated remote attacker to execute arbitrary mass mentions. By leveraging prompt injection, an attacker can bypass output sanitization logic and trigger workspace-wide notification exhaustion.

Alon Barad
Alon Barad
35 views•6 min read
•6 days ago•CVE-2026-9306
6.3

CVE-2026-9306: Unauthenticated Insecure Direct Object Reference (IDOR) in QuantumNous new-api Midjourney Relay

CVE-2026-9306 is a critical unauthenticated Insecure Direct Object Reference (IDOR) vulnerability located in the QuantumNous new-api application, affecting versions up to and including 0.12.1. The flaw is caused by improper middleware ordering combined with a lack of object-level authorization checks. This allows remote, unauthenticated attackers to retrieve sensitive Midjourney images belonging to other users by supplying a valid task identifier.

Amit Schendel
Amit Schendel
13 views•5 min read
•7 days ago•GHSA-GGXF-37HM-9WQF
6.5

GHSA-GGXF-37HM-9WQF: Session Leakage via Unsafe Challenge Path Parsing in instagrapi

The instagrapi library prior to version 2.6.9 contains an improper input validation vulnerability within its challenge handling mechanism. Maliciously crafted server responses can manipulate the client into forwarding session cookies and credentials to an external attacker-controlled domain.

Amit Schendel
Amit Schendel
21 views•6 min read
•7 days ago•GHSA-QQQM-5547-774X
9.1

GHSA-QQQM-5547-774X: Unauthenticated Path Traversal in FileBrowser Quantum PATCH Handler

GHSA-QQQM-5547-774X is a critical path traversal vulnerability in the FileBrowser Quantum application, specifically within the Go backend package. The vulnerability resides in the HTTP handler responsible for processing bulk file modifications via the public API. Unauthenticated attackers can exploit an order-of-operations flaw in the path sanitization logic to bypass intended directory restrictions. This allows adversaries to arbitrarily read, move, and overwrite files on the underlying filesystem by supplying specially crafted HTTP PATCH requests.

Alon Barad
Alon Barad
9 views•6 min read
•8 days ago•CVE-2026-8723
5.3

CVE-2026-8723: Synchronous Denial of Service in qs npm Package via TypeError

The qs query string parsing and serialization library for Node.js is vulnerable to a synchronous Denial of Service (DoS) attack. The vulnerability manifests as a process-terminating TypeError when processing arrays with null or undefined elements under specific configuration parameters.

Amit Schendel
Amit Schendel
37 views•7 min read
•8 days ago•GHSA-7M8F-HGJQ-8GC9
7.5

GHSA-7M8F-HGJQ-8GC9: Pre-Authentication Denial of Service via Insecure Deserialization Order in aiosend

The aiosend library prior to version 3.0.6 contains a pre-authentication Denial of Service (DoS) vulnerability in its webhook handling mechanism. The software processes and deserializes incoming JSON payloads before verifying the cryptographic signature, allowing unauthenticated attackers to exhaust server CPU and memory resources by sending large, complex payloads.

Amit Schendel
Amit Schendel
4 views•6 min read