Re: [Emu] Roman Danyliw's No Objection on draft-ietf-emu-tls-eap-types-12: (with COMMENT)

Alan DeKok <aland@deployingradius.com> Thu, 16 February 2023 03:29 UTC

Return-Path: <aland@deployingradius.com>
X-Original-To: emu@ietfa.amsl.com
Delivered-To: emu@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D6A04C16B5B0; Wed, 15 Feb 2023 19:29:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.899
X-Spam-Level:
X-Spam-Status: No, score=-6.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZYOGXS7emYIh; Wed, 15 Feb 2023 19:29:01 -0800 (PST)
Received: from mail.networkradius.com (mail.networkradius.com [62.210.147.122]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 300E4C15153C; Wed, 15 Feb 2023 19:28:59 -0800 (PST)
Received: from smtpclient.apple (135-23-95-173.cpe.pppoe.ca [135.23.95.173]) by mail.networkradius.com (Postfix) with ESMTPSA id 7ED8031B; Thu, 16 Feb 2023 03:28:54 +0000 (UTC)
Authentication-Results: NetworkRADIUS; dmarc=none (p=none dis=none) header.from=deployingradius.com
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\))
From: Alan DeKok <aland@deployingradius.com>
In-Reply-To: <167651598851.20540.7924623610620366927@ietfa.amsl.com>
Date: Wed, 15 Feb 2023 22:28:52 -0500
Cc: The IESG <iesg@ietf.org>, draft-ietf-emu-tls-eap-types@ietf.org, emu-chairs@ietf.org, EMU WG <emu@ietf.org>, jsalowey@gmail.com
Content-Transfer-Encoding: quoted-printable
Message-Id: <B464FFE3-CC54-4D5F-862D-C8C8B4E96D0E@deployingradius.com>
References: <167651598851.20540.7924623610620366927@ietfa.amsl.com>
To: Roman Danyliw <rdd@cert.org>
X-Mailer: Apple Mail (2.3696.120.41.1.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/emu/5bI9-xjsHOIj6Y86x8RFanfXsGU>
Subject: Re: [Emu] Roman Danyliw's No Objection on draft-ietf-emu-tls-eap-types-12: (with COMMENT)
X-BeenThere: emu@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "EAP Methods Update \(EMU\)" <emu.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/emu>, <mailto:emu-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/emu/>
List-Post: <mailto:emu@ietf.org>
List-Help: <mailto:emu-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/emu>, <mailto:emu-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Feb 2023 03:29:05 -0000

On Feb 15, 2023, at 9:53 PM, Roman Danyliw via Datatracker <noreply@ietf.org> wrote:
> ** Section 2.4
>   It is therefore RECOMMENDED that EAP servers always send a TLS
>   NewSessionTicket message, even if resumption is not configured.  When
>   the EAP peer attempts to use the ticket, the EAP server can instead
>   request a full authentication.  Implementations SHOULD NOT send
>   NewSessionTicket messages until the "inner tunnel" authentication has
>   completed, in order to take full advantage of the message as a
>   protected success indication.
> 
> It is my understanding that this SHOULD NOT is based in implementation
> realities.  Can text be added to establish the basis for this not being “MUST
> NOT”.  Please also add cross-references as appropriate into the document on the
> same topic.

  The issue is discussed in more detail in the Security Considerations section.  I'll add some text here which references RFC 8446 Section 4.6.1.

  In short, TLS 1.3 allows for NewSessionTicket to be sent from the server, even before the application data has been processed.  This means that a client could connect, get a ticket, disconnect, and then immediately "resume" the session, without ever being fully authenticated.

  As a result, EAP implementations have to either reject session tickets which were sent before the user was authenticated, or delay sending NewSessionTicket until after the user has been authenticated.

  On closer examination, the text about NewSessionTicket is in the "TTLS" section, but is really applicable to all TLS-based EAP methods.  I'll move the text from the Security Considerations section to a new section discussing TLS NewSessionTicket messages in more detail.  Here's some new text:

Section "Handling of TLS NewSessionTicket Messages"

In some cases, client certificates are not used for TLS-based EAP
methods.  In those cases, the user is authenticated only after
successful completion of the inner tunnel authentication.  However,
[RFC84346] Section 4.6.1 allows that "At any time after the server has
received the client Finished message, it MAY send a NewSessionTicket
message."  This message is sent by the server before the inner
authentication method has been run, and therefore before the user has
been authenticated.

This separation of data allows for a "time of use, time of check"
security issue.  Malicious clients can begin a session and receive a
NewSessionTicket message.  The malicious client can then abort the
authentication session, and use the obtained NewSessionTicket to
"resume" the previous session.  The malicious client can then obtain
network access without ever being authenticated.

As a result, EAP servers MUST NOT permit sessions to be resumed until
after authentication has successfully completed.  This requirement may
be met in a number of ways.  Where possible, implementations SHOULD
NOT send TLS NewSessionTicket messages until the "inner tunnel"
authentication has completed successfully.  However, the interaction
between EAP implementations and any underlying TLS library may be
complex, and this behavior may not always be possible.

Is is up to the EAP server to ensure that it does not allow for
insecure uses of EAP.  It may not be possible to delay the TLS
NewSessionTicket messages until the "inner tunnel" authentication has
completed successfully.  In that case, the EAP server MUST NOT allow
the session ticket to be valid (or validated) until after the "inner
tunnel" authentication has completed.

For example, if the ticket is cached on the server, the server coudl
skip caching the session ticket until after authentication has
completed.  Alternatively, the server could mark up the session ticket
with a flag stating whether or not authentication has completed.

This issue is not relevant for EAP-TLS, which uses client certificates
for authentication.  It is only relevant for TLS-based EAP methods
which do not use the TLS layer to authenticate