Montag, 5. Oktober 2015

Attacking OpenID Connect 1.0 - Malicious Endpoints Attack

In this post we show a novel attack on OpenID Connect 1.0, which compromises cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entire protocol - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Malicious Endpoints attack. The idea behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is to influence cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information flow in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Discovery and Dynamic Registration Phase in such a way that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker gains access to sensitive information.


OpenID Connect aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication flow with Discovery and Dynamic Registration

OpenID Connect 1.0 protocol flow with Discovery and Dynamic Registration

  1. Initiate Single Sign-On:
    An End-User visits cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client (https://honestClient.com) and starts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Single Sign-On aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication in order to aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client and get access to his resources. For this purpose, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User enters his identity on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Honest OP (e.g. alice@honestop.com).
  2. Discovery Endpoint (Discovery):
    The Client normalizes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entered identity in order to estimate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correspondig OP. Afterwards cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client sends an HTTP request to this Discovery endpoint and subsequently retrieves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OP's confguration information including its endpoint locations: 
    1. The (Dynamic) Registration Endpoint (regEndp).
    2. The Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication Endpoint (authEndp.
    3. The Token Endpoint (tokenEndp).
  3. Using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Registration Endpoint (regEndp):
    In order to use OpenID Connect services for aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication, a Client has to register on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OP. For this registration, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client accesses this URL regEndp, for example, https://google.com/register.
  4. Using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Authorization Endpoint (authEndp):
    In order to execute cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client's Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication Request, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User has to be redirected to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 authEndp of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OP, for example to https://login.google.com/. Here, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User has to aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OP via a corresponding aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication process and authorize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client to access cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 requested resources.
  5. Using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Token Endpoint (tokenEndp):
    The Client communicates with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tokenEndp, for example, https://google.com/consume-token, in order to obtain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 id_token described in Section 2.5 and aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User. In addition, an access_token can be sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client in order to authorize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 access to restricted resources. This communication is done directly between Client and OP (without involving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User).

Malicious Endpoint Attack

A view of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Malicious Endpoint attack and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 protocol flow.

    Phase 1.1 - Injecting malicious endpoints: The attacker's intention in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first phase is to force a valid Client to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker's malicious Discovery service. For this purpose, he constructs a malicious link and sends it to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User. For example, this can be a link to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 valid Client containing an identity alice@malicious.com.
    If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim clicks on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 constructed link and thus visits cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client starts a discovery phase with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malicious Discovery service http://malicious.com. The Client sends a request to determine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corresponding endpoints. The attacker's Discovery service responds with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following values, initiating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual attack:
    Malicious Endpoints
    issuer http://malicious.com
    regEndp https://honestOP.com/register
    authEndp https://login.honestOP.com/
    tokenEndp http://malicious.com
    userInfoEndp http://malicious.com

    Phase 1.2 - Dynamic Registration In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next step, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client accesses regEndp for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Dynamic Registration. It sends a registration request to https://honestOP.com/register and receives a client_id and client_secret in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response.
    The Client automatically starts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Dynamic Registration, even if it is already registered on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 honest OpenID Provider. The reason for this behavior is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client believes that http://malicious.com is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 responsible op, since it is not known from previous aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication procedures. Thus, http://malicious.com is a new OpenID Provider for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client and it starts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registration procedure.

    Phase 2 - End-User Aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication and Authorization In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next phase, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client redirects cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User to authEndp, https://login.honestOP.com/, where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User has to aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate himself and authorize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client. The End-User is not able to detect any abnormalities in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 protocol flow: Phase 1.1 and Phase 1.2 cannot be observed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User, and in Phase 2 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User will be prompted to aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 honest OpenID Provider and authorize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 honest Client, both of which he knows and trusts. Thus, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User authorizes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OpenID Provider generates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code, which is sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client.
    Note: Phase 2 exactly follows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original OpenID Connect protocol flow -- cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no parameter manipulation, no redirects to malicious websites and no observation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network traffic between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 honest OpenID Provider and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client. This means that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack cannot be detected by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OpenID Provider and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 End-User.

    Phase 3 - The Theft In dependence of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 protocol flow (Code or Implicit) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 messages sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker differ.
    Code Flow: Within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Code flow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client redeems cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 received code from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous phase: It sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corresponding Client's credentials received during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Dynamic Registration (client_id/client_secret) to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tokenEndp originally specified by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malicious Discovery service - in this example http://malicious.com.
    Implicit Flow: Since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Implicit flow does not use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tokenEndp, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker is not able to receive cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information send in phase 2. But during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Discovery Phase an ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r malicious endpoint can be used - userinfo_endpoint. This endpoint is an OAuth 2.0 Protected Resource that returns Claims about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticated user. According to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specification, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 obtained access token is sent as a Bearer token by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Client. Thus, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can get access to a valid access token.

      Demo

      You can run our demo on:
      http://ssoattacks.org/OIDC_MaliciousDiscoveryService/



      Authors of this Post

      Vladislav Mladenov
      Christian Mainka (
      @CheariX)

      Beliebte Posts