Here's my $0.02 on updates to the "Security Considerations" section.
---
5.9. Authorization
We note that EAP-TLS may be encapsulated in other protocols, such as
PPP [RFC1661], RADIUS [RFC2865], Diameter [RFC6733], or PANA
[RFC5191]. Systems implementing those protocols can make policy
decisions, and can enforce authorization based on information from
the EAP-TLS exchange. As such, we need to discuss interactions
between those protocols and EAP-TLS. For generality, we state
requirements on EAP servers, instead of updating those other
protocols.
As noted in Section 2.2, above, the EAP-Response / Identity is
unauthenticated. EAP servers therefore MUST NOT make policy decisions based
on
that identity. Instead, where they make policy decisions, EAP
servers MUST base those decisions on authenticated identities, such
as information from the client certificate, or from the PSK identity
provisioned for resumption, or from other cached information as
described in the next section.
We note that this requirement does not over-ride the requirements
given in [RFC7542] Section 4. EAP servers which use the NAI format
necessarily also MUST follow the requirements of the NAI
specification.
In order to implement the requirements of [RFC7542], EAP servers MAY
examine the EAP-Response / Identity field, and reject authentication
if they determine that the field is in any way unsuitable.
In short, EAP servers MUST NOT authorize sessions based the EAP-
Response / Identity field. The field is untrusted, and may be
trivially forged.
5.10. Resumption
There are a number of security issues related to resumption.
[RFC516] is unfortunately silent on this topic, so we discuss this
issue in detail here. We note that the problems outlined here are
also relevant to earlier versions of TLS. The solutions are also
similar.
When resumption occurs, it largely occurs based on the cached TLS
data, at the TLS layer. The only credentials supplied during this
resumption are the EAP-Response/Identity. However, as noted above in
Section 2.2, the identity presented in the EAP-Response/Identity is
unauthenticated information, and SHALL NOT be used for access control
or accounting purposes. Note that this also applies to resumption.
This requirement gives us a conundrum. We have a successful
resumption, but we have no idea what identity is being used in that
resumption. We are thus unable to apply any authorization to that
authentication request. Since we have no way to authorize the user,
the only secure step we can take is to reject the session. This
rejection removes any possibility of resumption.
The solution to this conundrum is to associate authentication
credentials and authorization information with the original
authentication. That information can then be obtained and applied
during resumption.
There are two ways to make this association. The first method is via
[RFC5077], where the TLS server encapsulates the session state into a
ticket and forwards it to the client. The client can subsequently
resume a session using the obtained ticket. The second method is
where the TLS server caches information about the TLS session, based
on a unique key. For TLS versions before 1.3, this key can be the
session ID. For TLS 1.3, this key is the unique PSK identity.
The following requirements apply to both methods of associating
additional data with the TLS session. For simplicity, we use the
term "cached data" to mean any authentication credentials or
authorization information that has been associated with the TLS
session via either session tickets, or via caching on the TLS server.
Where the EAP server applies no authorization policies to TLS
sessions, it MAY allow resumption where no cached data is available.
That is, if no policies are applied during the original
authentication, it is acceptable to not apply policies during any
resumption.
In all other cases, the EAP server MUST cache data during the
original authentication. This cached data MUST be sufficient to make
authorization decisions during session resumption. Where this cached
data is unavailable, the resumption MUST be rejected, as no policies
can be meaningfully applied.
Any authorization applied during resumption MUST be done using the
cached data, and MUST NOT be done by examining the EAP-Response /
Identity that was supplied during resumption. As noted earlier, that
identity is unauthenticated and therefore insecure.
The above requirements also apply if the EAP server expects some
system to perform accounting for the session. Since accounting must
be tied to an authenticated identity, and resumption does not supply
such an identity, accounting is impossible without access to cached
data.
As discussed in the previous section, EAP-TLS may be carried inside
of another protocol. This encapsulation creates further security
issues with resumption.
These encapsulating protocols can provide additional, non-EAP
information to the EAP server. This information can include, but is
not limited to, the following data:
* MAC address of the EAP peer * IP address of the EAP peer *
Informtion about the ethernet switch to which the EAP peer is
connecting
* MAC address of the switch
* IP address of the switch
* switch port used by the EAP peer
* Wifi SSID
* Information about the ethernet layer used by the EAP peer
The EAP server also has access to the cached EAP-Response / Identity
from the original authentication.
None of these fields are authenticated or secured. As a result, any
or all of these fields can change between the original
authentication, and resumption. This change creates a "Time of
check, time of use" (TOCTOU) security vulnerability. A malicious
user could supply one set of data during authentication, and a
different set of data during resumption. The malicious user could
then obtain different authorization during resumption, potentially
leading to them obtaining access that they should not have.
When EAP servers make policy decisions based on unauthenticated
information, they MUST then add that information to the cached data
described above. This cached information MUST be used as part of any
policy decision or authorization made for resumption. That
requirement allows the EAP peer to potentially obtain the same
authorization as for the original session. The requirement also
ensures that where accounting is needed, the resumption is correctly
accounted for via the original authentication credentials.
The new information given during resumption SHOULD also be used as
part of any policy decision or authorization made for resumption.
EAP servers MAY reject resumption where the information supplied
during resumption does not match the information supplied during the
original authentication. Where a good decision is unclear, EAP
servers SHOULD err on the side of caution, and therefore reject the
resumption.
It is difficult for us to state the above requirement more precisely
than the above. We cannot require that the resumption be rejected in
all cases. For example, it may be permissible for a user to change
switch ports, and still use resumption. It may be permissible for
for the user to request additional authorization during resumption.
Where EAP servers determine that the user is acting maliciously, they
MUST reject the resumption.
We can unfortunately provide little additional guidelines here. It
is up to each implementation and / or deploymentment of EAP-TLS to
determine which information to examine, and which policies apply.
_______________________________________________
Emu mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/emu