🛡️ CVE-2026-54609 — qti-neon

🟠 CVSS 8.6 — High ✅ No Known Exploit CWE-400 NVD
8.6
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

QTINeon has unauthenticated relay-to-host amplification via unbounded RECONNECT_REQUEST forwarding

Impact

The relay's reconnect handler forwards every RECONNECT_REQUEST to the host without deduplication or a size cap on the pendingReconnects map, unlike the connect flow which guards against this with maxPendingConnections. An unauthenticated attacker who knows a valid session ID can send RECONNECT_REQUEST packets from many spoofed source addresses; each packet that passes the session lookup is forwarded to the host as a new reconnect attempt. Because the per-source rate limiter assigns a fresh token bucket to each spoofed IP, it provides no protection. The host receives one forwarded packet per spoofed source per cleanup cycle, making the relay an amplification vector for denial-of-service against the host. The host's real address is never exposed to clients by design, so this is the primary viable DoS path against it. A secondary issue: once more than maxRateLimiters spoofed IPs are seen, performCleanup calls rateLimiters.clear(), resetting rate limit state for all sources including legitimate ones.

Affected: NeonRelay in all three implementations (Java, Python, TypeScript).

Patches

Not yet patched. Fix consists of three changes to handleReconnectRequest in each implementation:

1. Reject the request if pendingReconnects.size() >= maxPendingConnections (mirrors the existing connect-flow guard)

2. Only forward to the host if the sessionId:clientId key is not already present in pendingReconnects — the map entry can still be updated with the new source address, but the host only needs to validate once per slot

3. In performCleanup, evict throttled entries before falling back to rateLimiters.clear() to avoid resetting legitimate sources' rate limit state

Workarounds

Operators can partially mitigate by placing the relay behind a network-level filter that drops packets with spoofed source addresses (BCP38/uRPF). This does not address the missing pendingReconnects size cap or the rateLimiters.clear() issue but eliminates the amplification path in most deployment environments.

References

  • PROTOCOL.md — reconnect flow
  • ARCHITECTURE.md — reconnect handshake detail (step 4 describes the unbounded put)

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. No user interaction is required. The scope is changed, meaning a successful attack can affect components beyond the vulnerable one. Rated impact: confidentiality none, integrity none, availability high.

Weakness class

CVE-2026-54609 is classified as CWE-400: Uncontrolled Resource Consumption. A request can consume memory, CPU or storage without limit, exhausting capacity for everyone else.

Affected software

CVE-2026-54609 is recorded against 3 packages.

  • com.quietterminal:qti-neon
  • qti-neon
  • unknown

Timeline and source

Published on 28 July 2026 and last revised on 4 August 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
github.com (Package)

Details

Severity HIGH
CVSS Score 8.6
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H
CWE CWE-400
Public Exploit ✅ No
Source NVD
Published 2026-07-28
Updated 2026-08-12
Modified 2026-08-04
Fix URL N/A

Affected Packages

Software From version Fixed in
com.quietterminal:qti-neon
qti-neon
unknown

Site Security Check

Is qti-neon part of your stack?

CVE-2026-54609 is rated CVSS 8.6 High. BotEraser scans your installation against known CVE records and tells you whether this vulnerability applies to the versions you actually run.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.