Hi Jeffrey,

Here is an extract of the paragraphs dealing with TLS in the draft, so that
you can easily see what to comment (wording improvement, missing stuff...).

   The point of COMPRESS as an NNTP extension is to behave as a
   transport layer, similar to STARTTLS [RFC4642].  Compression can
   therefore benefit to all NNTP commands sent or received after the use
   of COMPRESS.

It kind of sounds doomed under threat models with active attackers.
The active attacker can swallow the STARTTLS message and no one would
be the wiser.

How does the protocol thwart downgrades under active attackers?

First of all, one should note that STARTTLS is not widely used in practice for NNTP. Implicit TLS on a dedicated port (TCP 563) is the common way for NNTP clients to negotiate a TLS layer.

To answer your question, the Security Considerations Section of RFC 4642 (Using TLS with NNTP) mentions:

   Before the TLS handshake has begun, any protocol interactions are
   performed in the clear and may be modified by an active attacker.
   For this reason, clients and servers MUST discard any sensitive
   knowledge obtained prior to the start of the TLS handshake upon the
   establishment of a security layer.  Furthermore, the CAPABILITIES
   command SHOULD be re-issued upon the establishment of a security
   layer, and other protocol state SHOULD be re-negotiated as well.

[...]

   During the TLS negotiation, the client MUST check its understanding
   of the server hostname against the server's identity as presented in
   the server Certificate message, in order to prevent man-in-the-middle
   attacks.  Matching is performed according to these rules:

   -  The client MUST use the server hostname it used to open the
      connection (or the hostname specified in TLS "server_name"
      extension [TLS-EXT]) as the value to compare against the server
      name as expressed in the server certificate.  The client MUST NOT
      use any form of the server hostname derived from an insecure
      remote source (e.g., insecure DNS lookup).  CNAME canonicalization
      is not done.

   -  If a subjectAltName extension of type dNSName is present in the
      certificate, it SHOULD be used as the source of the server's
      identity.

   -  Matching is case-insensitive.

   -  A "*" wildcard character MAY be used as the left-most name
      component in the certificate.  For example, *.example.com would
      match a.example.com, foo.example.com, etc., but would not match
      example.com.

   -  If the certificate contains multiple names (e.g., more than one
      dNSName field), then a match with any one of the fields is
      considered acceptable.

   If the match fails, the client SHOULD either ask for explicit user
   confirmation or terminate the connection with a QUIT command and
   indicate the server's identity is suspect.

   Additionally, clients MUST verify the binding between the identity of
   the servers to which they connect and the public keys presented by
   those servers.  Clients SHOULD implement the algorithm in Section 6
   of [PKI-CERT] for general certificate validation, but MAY supplement
   that algorithm with other validation methods that achieve equivalent
   levels of verification (such as comparing the server certificate
   against a local store of already-verified certificates and identity
   bindings).

   A man-in-the-middle attack can be launched by deleting the STARTTLS
   capability label in the CAPABILITIES response from the server.  This
   would cause the client not to try to start a TLS session.  Another
   man-in-the-middle attack would allow the server to announce its
   STARTTLS capability, but alter the client's request to start TLS and
   the server's response.  An NNTP client can partially protect against
   these attacks by recording the fact that a particular NNTP server
   offers TLS during one session and generating an alarm if it does not
   appear in the CAPABILITIES response for a later session.  (Of course,
   the STARTTLS capability would not be listed after a security layer is
   in place.)

   If the client receives a 483 or 580 response, the client has to
   decide what to do next.  The client has to choose among three main
   options: to go ahead with the rest of the NNTP session, to (re)try
   TLS later in the session, or to give up and postpone
   newsreading/transport activity.  If an error occurs, the client can
   assume that the server may be able to negotiate TLS in the future and
   should try to negotiate TLS in a later session.  However, if the
   client and server were only using TLS for authentication and no
   previous 480 response was received, the client may want to proceed
   with the NNTP session, in case some of the operations the client
   wanted to perform are accepted by the server even if the client is
   unauthenticated.


Does it answer your question?

--
Julien ÉLIE

« Contra factum non datur argumentum. »

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to