**

*Dear QUIC WG,*

*

I’m Kashyap Thimmaraju, a postdoctoral researcher at Humboldt University Berlin. Recently I discovered a couple of attacks with the QUIC protocol. Lars Eggert recommended that I share my findings with the WG to discuss the impact and relevance of these findings.


In this email I’ve described my work on the new connection ID (NCID) for server implementations.


ANALYSIS

The draft does not specify how servers should handle new CIDs (NCID) where:

1.

   All the NCIDs are the same as the client generated SCID

2.

   All the NCIDs are the same as the client generated DCID

3.

   All the NCIDs are the same but different from the client generated
   SCID and DCID


EVALUATION

The primary goal of my evaluation is to observe how implementations behave to the 3 test cases outlined in the analysis. To conduct this experiment I adopted the following methodology. First, I created a client that uses deterministic CIDs for the source and destination CIDs and the NCIDs (I modified LiteSpeed Technologies open-source QUIC client). Second, I used 15 implementations from those listed on the QUIC Working Group’s GitHub page1: either manually built Docker containers or the public test server. The list of servers tested are shown across the rows in the table below. To conduct the experiment, I always had the client open a QUIC connection with source CID 1 and destination CID 2. The NCID that was then used was either all 1, or all 2, or all 3. The connection was kept open (if possible) for a maximum of 10s with the server, and then closed. I saved the debug logs of the client, packet traces and session keys. I then repeated the process for each of the 15 implementations. Finally, to obtain the results of the test, I searched the debug log of the client or the packet trace to confirm whether the QUIC connection obtained a successful handshake or not. If not, I collected any error messages.


RESULTS

The results from my evaluation are shown in the table below. In particular, I found that either the handshake succeeded or the handshake failed due to a PROTOCOL_VIOLATION, Error Code: 10 message from the server. When I had tested this on quant early on, çase aresulted in crashing the server (see https://github.com/NTAP/quant/issues/68 <https://github.com/NTAP/quant/issues/68>). The difference in behaviours raises the question on how servers should respond to such messages and what amount of detail should be provided in the reason of the error message.


TEST CASE : HANDSHAKE COMPLETED : PROTCOL VIOLATION

A : Aioquic, Cloudflare, Neqo, Nginx, Pquic, Akamai, Ats, Chromium, F5, Quinn, Mvfst : Lsquic, mvfst, ngtcp2, picoquic, quant, quicly

B : Aioquic, Cloudflare, Neqo, Nginx, Pquic, Mvfst : Ngtcp2, picoquic, quant, quicly

C : Aioquic, Cloudflare, Neqo, Nginx, Pquic, Akamai, Ats, Chromium, F5, Quinn, Mvfst : Lsquic, ngtcp2, picoquic, quant, quicly

*
Sincerely,

--
Dr.-Ing Kashyap Thimmaraju

Lehrstuhl für Technische Informatik
Institut für Informatik
Humboldt-Universität zu Berlin

Besucheranschrift:
Rudower Chaussee 25, 12489 Berlin
Haus 4, 3. OG

[email protected]

http://www.ti.informatik.hu-berlin.de

Reply via email to