[Imap-protocol] Pipelined commands before completion of STARTTLS

Mark Crispin mrc+imap at panda.com
Tue Mar 8 15:00:28 PST 2011


On Tue, 8 Mar 2011, Philip Guenther wrote:

>> 1. Send a BAD response if a command is pipelined after STARTTLS.

>>

>> 2. Ignore the pipelined cleartext commands.

>

> 3. immediately close the connection

>

> 4. Treat data after the CRLF as data for the TLS handshake (i.e., to shave

> an RTT off in the success case).


My observation of all of this:

Behavior 1 is difficult to do consistently, especially if the TLS
handshake starts with client data (no initial server data).

Behavior 2 is the expected implementation today.

Behavior 3 is a natural and expected consequence of the TLS handshake
being invalid. However, behavior 3 may have the effect of making an MITM
attack become a DOS.

Behavior 4 can not be deployed in a reliable way without some negotiated
capability, due to behavior 2.


My recommendations follow.

Clients:
MUST NOT pipeline or otherwise transmit anything after STARTTLS
until such time as it is permitted to transmit a TLS handshake.

MUST NOT assume any behavior on the part of the server, until
such time as there is a negotiated extension for behavior 4.

Servers:
MUST NOT implement behavior 1.

MUST implement behavior 2 or 4, at the server's option. Note
that, due to timing, behavior 2 is actually a special case of
behavior 4.

MUST NOT implement behavior 3, except as a consequence of an
invalid TLS handshake in a behavior 4 implementation.

-- Mark --

http://panda.com/mrc
Democracy is two wolves and a sheep deciding what to eat for lunch.
Liberty is a well-armed sheep contesting the vote.


More information about the Imap-protocol mailing list