Multipath TCP (MPTCP) hat kürzlich Aufmerksamkeit erregt, nachdem eine Schwachstelle in seiner Linux-Implementierung gemeldet wurde, die als CVE-2026-98432 identifiziert wurde. Statt die Schwachstelle selbst zu untersuchen, konzentriert sich diese Analyse darauf, wie MPTCP funktioniert und wie seine Nutzung im Netzwerkverkehr erkannt werden kann.

Das herkömmliche TCP ordnet eine Verbindung einem bestimmten Paar von Host-IP-Adressen zu. Dieses Modell kann für mobile Geräte problematisch sein, die möglicherweise von WLAN zu Mobilfunk wechseln und andernfalls Verbindungen neu aufbauen müssten. MPTCP behebt diese Einschränkung, indem es ermöglicht, eine Verbindung über verschiedene IP-Adressen aufzuteilen oder zwischen ihnen zu übertragen. Außerdem kann es Servern helfen, Verbindungen mit hoher Bandbreite effektiver zu nutzen als eine einzelne TCP-Verbindung.

Die am häufigsten beobachtete Implementierung findet sich in iOS und iPadOS. IPv4-Verbindungen zum Adressraum 17.0.0.0/8 von Apple verwenden häufig MPTCP. Die Technologie wurde zunächst für Siri eingesetzt und später auf Dienste wie Apple Music ausgeweitet.

Derzeit sind zwei MPTCP-Versionen definiert und im Einsatz: Version 0 und Version 1. MPTCP wird durch die TCP-Option 30 identifiziert. Die Option enthält ein Subtyp- und ein Versionsfeld; mehrere Subtypen unterstützen die Aushandlung und Verwaltung von Verbindungen.

MP_CAPABLE, Subtyp 0, zeigt an, dass beide Endpunkte MPTCP unterstützen, und muss während des TCP-Handshakes erscheinen, damit die Funktion aktiviert wird. Jede MP_CAPABLE-Option enthält außerdem einen acht Byte langen Schlüssel, der später zur Identifizierung und Authentifizierung zusätzlicher Teilströme verwendet wird.

MP_JOIN, Subtyp 1, ermöglicht es einer weiteren TCP-Verbindung, der bestehenden MPTCP-Verbindung beizutreten. Dieser Teilstrom wird normalerweise vom Client initiiert und kann eine andere IP-Adresse verwenden, obwohl die Spezifikation auch die Initiierung durch den Server erlaubt. Die Ports sind normalerweise identisch, müssen es aber nicht sein. DSS, kurz für Data Sequence Signal, ordnet die Sequenznummern jeder einzelnen TCP-Verbindung den Sequenznummern der kombinierten MPTCP-Verbindung zu.

Die Subtypen ADD_ADDR und REMOVE_ADDR kündigen zusätzliche Adressen oder Ports an beziehungsweise ziehen diese zurück. Diese können für MPTCP-Teilströme verwendet werden, ohne direkt eine neue Verbindung aufzubauen.

Die direkteste Möglichkeit, MPTCP zu erkennen, besteht darin, nach der TCP-Option 30 zu suchen. Wireshark unterstützt dies über seinen Anzeigefilter „mptcp“. Tcpdump verfügt über keinen speziellen Mechanismus zum Abgleichen von TCP-Optionen, aber MPTCP-Pakete, insbesondere SYN-Pakete, haben häufig große TCP-Header; die Überprüfung der TCP-Headerlänge kann daher einen Hinweis liefern, etwa mit dem Filter „tcp[12]>0xd0“.

Suricata kann TCP-Optionen mit dem Schlüsselwort „tcp.hdr“ untersuchen. Die Optionslängen variieren, aber eine MP_CAPABLE-Nachricht, die sowohl den Sender- als auch den Empfängerschlüssel enthält, sollte 20 Byte lang sein. Ihre ersten drei Bytes lauten „1e 14 00“ für Version 0 beziehungsweise „1e 14 01“ für Version 1.

Snort stellt kein Schlüsselwort zur Untersuchung von TCP-Optionen bereit und bietet der Analyse zufolge keine spezielle Möglichkeit, nach MPTCP zu filtern. In Zeek werden TCP-Optionen standardmäßig nicht protokolliert, aber die Ereignisse tcp_option und tcp_options können verwendet werden, um Option 30 aufzuzeichnen und Kommunikationen zu identifizieren, die MPTCP verwenden.

Quellen: SANS Internet Storm Center.