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 Emu@ietf.org https://www.ietf.org/mailman/listinfo/emu