Aller au contenu
Élevée 7.5

Twisted: Unauthenticated Remote Denial of Service in the Twisted conch Telnet Transport via an Unbounded Subnegotiation Buffer

CVE-2026-115778 Première détection SecPulse

Résumé IA

Rédigé par une IA externe ; il peut contenir des erreurs. Vérifiez la description d'origine et les références ci-dessous avant d'agir.

Twisted の conch Telnet 処理には、サブネゴシエーションのバッファに長さの上限がなく、認証前の接続から無制限にメモリを消費される問題があります。攻撃を受けるとプロセスが停止し、同じプロセス上で動くすべてのサービスが止まるおそれがあります。26.10.0rc1 で修正されているため、Twisted を同版以降に更新してください。

Paquets affectés

ÉcosystèmePaquetConcernéesCorrigé
twisted twisted — —
pip Twisted
< 26.10.0rc1
26.10.0rc1
PyPI twisted
< 26.10.0rc1
26.10.0rc1
Description d'origine La description telle que publiée par la source (souvent en anglais).

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:

# 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, `twiste…

Source: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

Références

Nous utilisons des cookies pour l'analyse d'audience et la mesure publicitaire. Ce réglage s'applique à tous les sites de Game co., Ltd. En savoir plus