Jul 28, 2026·5 min read·25 visits
An unauthenticated remote attacker can exploit the QTINeon reconnect handler to exhaust relay server memory and launch network amplification attacks against target game hosts.
Quiet-Terminal-Interactive's QTINeon version 1.0.0 is vulnerable to uncontrolled resource consumption and relay-to-host network amplification. The reconnect request handler lacks table size constraints, rate limiting, and request deduplication, allowing unauthenticated attackers to crash the relay server and overwhelm target hosts.
QTINeon is a game-agnostic, relay-based UDP multiplayer protocol library developed by Quiet-Terminal-Interactive. In its architecture, the relay server facilitates connections between remote clients and the game host, bypassing NAT restrictions and hiding the host's direct IP address. The system relies on specific UDP packet headers to manage state transitions, including session establishment and reconnections.
Version 1.0.0 of the library exposes an unprotected reconnect flow that can be targeted by remote attackers. While primary connection handshakes implement rate limits and table size constraints, the reconnect request handler lacks these essential security controls. This deficiency introduces a direct path to denial of service through memory exhaustion and packet forwarding amplification.
The underlying flaw resides within the reconnect processing mechanism, specifically the handleReconnectRequest function. When a client drops offline or attempts to resume an active session, it transmits a RECONNECT_REQUEST packet to the relay. The relay processes this request by registering it inside an internal mapping table named pendingReconnects to track the state of active handshakes.
Two critical flaws are present in this implementation. First, the pendingReconnects map does not enforce a maximum size boundary, meaning the server continues to allocate memory for every unique request it receives. Second, the handler performs no deduplication or rate limiting on incoming client identifiers, allowing a single sender to flood the server and force continuous map insertions.
As a consequence of these design gaps, the relay immediately routes every processed reconnect packet to the game host. The host is forced to process an unthrottled volume of handshakes, leading to system resource exhaustion.
The following code block demonstrates the difference between the vulnerable implementation in version 1.0.0 and a secure implementation that mitigates the resource allocation and forwarding flaws.
// VULNERABLE: Version 1.0.0 lack of size constraints and validation
public void handleReconnectRequest(ReconnectPacket packet, IPEndPoint clientEndPoint) {
// No check on pendingReconnects dictionary size
// No deduplication or validation of packet details
pendingReconnects[packet.ClientId] = new ReconnectState(packet, DateTime.UtcNow);
// Direct forwarding to host without rate limiting or validation
ForwardToHost(packet);
}To remediate this, developers must manually add size-limiting guard clauses, request deduplication, and a timer-based pruning task. The secure pattern checks map thresholds and discards duplicate requests before allocating memory or forwarding traffic.
// SECURE: Implementing bounds checking, deduplication, and rate controls
private const int MaxPendingReconnects = 1024;
public void handleReconnectRequest(ReconnectPacket packet, IPEndPoint clientEndPoint) {
// 1. Enforce size limit to prevent memory exhaustion
if (pendingReconnects.Count >= MaxPendingReconnects) {
return;
}
// 2. Prevent duplicate entries from the same client ID
if (pendingReconnects.ContainsKey(packet.ClientId)) {
return;
}
// 3. Track state with timestamp for automatic expiration
pendingReconnects[packet.ClientId] = new ReconnectState(packet, DateTime.UtcNow);
// 4. Forward with rate limiting applied
ForwardToHostWithRateLimit(packet);
}Exploitation of CVE-2026-54609 requires network access to the UDP port exposed by the QTINeon relay server. An attacker does not require authentication or valid session credentials to interact with the reconnect handler. By generating spoofed UDP packets containing a structured RECONNECT_REQUEST header, the attacker initiates the exploit.
The attacker sends a stream of unique client reconnect requests at a rapid rate. Each packet causes the relay to allocate dynamic memory for a new session structure in the pendingReconnects map. Within seconds, this unconstrained allocation consumes the available memory on the relay host, causing the process to terminate due to out-of-memory errors.
Simultaneously, the relay server acts as an amplifier by forwarding each packet to the target game host. Because the host must process every handshake attempt originating from the trusted relay, its network interface and processor become saturated, disconnecting legitimate players.
The security impact of this vulnerability is scored at 8.6 on the CVSS scale, indicating high severity. The CVSS vector highlights that the attack can be executed remotely with low complexity and no privileges. The scope is changed because exploiting the relay server directly impacts the availability of the game host.
Successful exploitation results in a complete denial of service for both the relay and the backend game host. The relay process suffers from memory exhaustion, while the game host experiences network bandwidth saturation and CPU exhaustion. There is no impact on confidentiality or integrity, as the vulnerability does not allow unauthorized data access or modifications.
No official patch is currently available for QTINeon version 1.0.0. Organizations deploying this library must implement custom code-level fixes to defend their infrastructure. The primary remediation strategy is the introduction of a maximum capacity constraint on the pendingReconnects mapping table.
Additionally, developers must implement a scheduled pruning routine that automatically evicts handshake entries older than 5 to 10 seconds. Network administrators should deploy rate-limiting rules on routers or firewalls to limit incoming UDP traffic on the relay's service port. Implementing IDS signatures to detect anomalous rates of reconnection request patterns is also recommended.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
QTINeon Quiet-Terminal-Interactive | == 1.0.0 | None |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-400 |
| Attack Vector | Network (AV:N) |
| CVSS Score | 8.6 |
| Scope | Changed (S:C) |
| Impact | Availability (A:H) |
| Exploit Status | none |
| KEV Status | Not Listed |
The product does not properly control the allocation and maintenance of a limited resource, enabling an actor to cause resource exhaustion.
CVE-2026-92941 is a critical sandbox-escape and trust-manipulation vulnerability in the vm2 library (versions 3.11.3 to 3.11.6). This security flaw allows untrusted code executing within a NodeVM sandbox environment to compromise the global TLS trust store of the host Node.js process. By leveraging a design flaw where the host's native 'tls.setDefaultCACertificates' can be executed via a proxy wrapper, combined with a bridge unwrapping bypass in the 'url' module, an attacker can modify the process-wide default root Certificate Authorities. Consequently, all subsequent outbound TLS/HTTPS clients running on the host thread are forced to trust attacker-signed certificates, facilitating transparent Man-in-the-Middle (MitM) attacks. The vulnerability was resolved in version 3.11.7 of vm2 by introducing built-in member-level sanitization before applying read-only proxy wrappers.
A critical engine-level reachability failure in Node.js 26 running V8 14.6 allows attackers to escape the vm2 sandbox environment. When consecutive prototype properties are modified using sequential assignments, a V8 optimization bug fails to invalidate the PromiseThenLookupChain protector. By calling Promise.prototype.finally, the attacker bypasses the vm2 wrappers, hijacks the promise reaction using a custom constructor, triggers a calibrated stack overflow to capture a host-realm RangeError, and executes arbitrary shell commands on the host.
A critical sandbox escape vulnerability in the vm2 library allows sandboxed JavaScript code to bypass containment and execute arbitrary native code on the host process. This occurs when the host's builtin crypto module is exposed to the NodeVM environment. Although vm2 implements a read-only proxy layer to restrict direct modifications to host properties, it does not prevent invocation of host-level functions. By calling the crypto.setEngine API with a path to a malicious native library on disk, an attacker can trigger OpenSSL's dynamic module loader. The host's operating system loader immediately runs the dynamic library's initializers/constructors before verifying engine compatibility, leading to remote code execution in the context of the host process.
CVE-2026-92938 is a critical sandbox escape vulnerability in the vm2 library (versions 3.11.3 through 3.11.6) that allows arbitrary native code execution on the host when the node:sqlite built-in module is loaded inside a sandboxed NodeVM environment.
CVE-2026-92937 is a critical sandbox escape vulnerability in the `vm2` Node.js library. Due to a logical failure in checking direct invocation targets inside the Proxy bridge, an attacker can register Promise callbacks using `Function.prototype.call` or `Function.prototype.apply` indirection. This bypasses the error sanitization wrappers, delivering raw host error objects directly to sandboxed callbacks and allowing the attacker to escape the sandbox and execute arbitrary shell commands on the host.
CVE-2026-92935 is a critical sandbox escape and remote code execution vulnerability in the vm2 library. By supplying an array or exotic object to the require property of NodeVM while nesting is enabled, attackers can bypass security checks, load the host vm2 module, and run arbitrary shell commands on the hosting server.