CVE-2026-115778
## Summary An allocation-without-limits vulnerability (CWE-770) in the Twisted conch telnet transport lets any unauthenticated remote peer exhaust server memory over a single connection. When the peer opens a telnet subnegotiation with `IAC SB` and then streams bytes without ever sending the `IAC SE` terminator, every byte is appended to a per-connection buffer that has no maximum length. The buffer persists across reads and is released only on the terminator the attacker withholds, so it grows without bound until the process is killed. ## Details The option-negotiation state machine in `Telnet.dataReceived` enters the `subnegotiation` state on `IAC SB` and sets an empty command list. In that state every non-`IAC` byte is appended to the list with no length check: ```python # src/twisted/conch/telnet.py (Telnet.dataReceived) elif self.state == "subnegotiation": if b == IAC: self.state = "subnegotiation-escaped" else: self.commands.append(b) # unbounded: no len(self.commands) check ``` `self.commands` is an instance attribute that persists across `dataReceived` calls and is deleted only when `IAC SE` completes the subnegotiation. Negotiation runs at the transport layer before authentication, and the bytes are consumed inside `dataReceived` before any application callback, so an application cannot impose a bound. Twisted caps other parser buffers, for example `NetstringReceiver.MAX_LENGTH`, but not this one. Affected product: Twisted, `twisted.conch.telnet` transport Affected versions: confirmed against 26.4.0 ## PoC On any endpoint that exposes the Twisted telnet transport, such as the Twisted manhole telnet service, open one connection and send the two bytes `IAC SB` (`0xFF 0xFA`), then stream any non-`0xFF` bytes continuously and never send the `IAC SE` terminator (`0xFF 0xF0`). No credentials are required, because option negotiation runs before authentication. Every byte is appended to the per-connection subnegotiation buffer
Properties
- Summary
- Twisted: Unauthenticated Remote Denial of Service in the Twisted conch Telnet Transport via an Unbounded Subnegotiation Buffer
- Severity
- high
- Nvd fetched at
- 2026-10-23T22:30:12.098505+00:00
- Cvss score
- 7.5
- Cvss severity
- HIGH
- Retrieved at
- 2026-10-23T22:32:28+00:00
- Ghsa published
- 2026-10-23T20:45:26Z
- Source url
- https://github.com/advisories/GHSA-cwm5-jh59-mwxr
- Ghsa updated
- 2026-10-23T20:45:27Z
- Ghsa id
- GHSA-cwm5-jh59-mwxr
- Last source
- GitHub Advisory Database
- Score
- 7.5
- Cvss version
- 3.1
- Cve id
- CVE-2026-115778
- Cvss vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- First seen by Signal
- 2026-10-23T22:32:25+00:00
- Is ghsa only
- false
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Published at
- 2026-10-23T21:17:23.320
- Last modified
- 2026-10-23T21:17:23.320
Related Entities (4)
HAS_WEAKNESS (2)
AFFECTS (1)
VULNERABLE_TO (1)
Explore deeper with Ninja Signal's threat intelligence graph