Google's OpenID Connect Security Analysis
Google's OpenID Connect Security Analysis
net/publication/280873003
CITATIONS READS
21 509
2 authors, including:
Chris J Mitchell
Royal Holloway, University of London
378 PUBLICATIONS 4,628 CITATIONS
SEE PROFILE
All content following this page was uploaded by Chris J Mitchell on 25 August 2015.
Abstract
Many millions of users routinely use their Google accounts to log
in to relying party (RP) websites supporting the Google OpenID Con-
nect service. OpenID Connect, a newly standardised single-sign-on
protocol, builds an identity layer on top of the OAuth 2.0 protocol,
which has itself been widely adopted to support identity management
services. It adds identity management functionality to the OAuth 2.0
system and allows an RP to obtain assurances regarding the authen-
ticity of an end user. A number of authors have analysed the security
of the OAuth 2.0 protocol, but whether OpenID Connect is secure in
practice remains an open question. We report on a large-scale prac-
tical study of Google’s implementation of OpenID Connect, involving
forensic examination of 103 RP websites which support its use for sign-
in. Our study reveals serious vulnerabilities of a number of types, all
of which allow an attacker to log in to an RP website as a victim user.
Further examination suggests that these vulnerabilities are caused by
a combination of Google’s design of its OpenID Connect service and
RP developers making design decisions which sacrifice security for sim-
plicity of implementation. We also give practical recommendations for
both RPs and OPs to help improve the security of real world OpenID
Connect systems.
1 Introduction
In order to help alleviate the damage caused by identity-oriented attacks
and simplify the management of identities, a range of identity management
systems, such as OAuth 2.0, Shibboleth, CardSpace, OpenID, have been
put forward [20, 25, 36]. As a replacement for the well-established OpenID
[36] scheme, OpenID Connect 1.0 [37] builds an identity layer on top of
the OAuth 2.0 framework [25]. The OAuth 2.0 framework enables an RP
to obtain profile information about the end user, but does not provide any
1
means for the RP to obtain information about the authentication of the end
user. In OpenID Connect, in addition to obtaining profile information about
the end-user, RPs can obtain assurances about the end user’s identity from
an OpenID Provider (OP), which itself authenticates the user.
OpenID Connect involves interactions between four core parties:
1. the End User (U), who attempts to access on-line services protected
by the RP;
2. the User Agent (UA), typically a web browser, that is employed by
an end user to transmit requests to, and receive responses from, web
servers;
3. the OpenID Provider (OP), e.g. Google, which provides methods to
authenticate an end user and generates assertions regarding the au-
thentication event and the attributes of the end user;
4. the Relying Party (RP), e.g. Wikihow, which provides protected on-
line services and consumes the identity assertion generated by the IdP
in order to decide whether or not to grant access to the end user.
In summary, the end user employs a user agent to access resources pro-
vided and protected by the RP, which relies on the OP to provide authentic
information about the user.
Even though OpenID Connect was only finalised at the start of 2014,
there are already more than half a billion OpenID Connect-based user ac-
counts provided by Google [9], PayPal [6] and Microsoft [4]. This large
user base has led very large numbers of RPs to integrate their services with
OpenID Connect.
The security of OAuth 2.0, the foundation for OpenID Connect, has
been analysed using formal methods [32, 35, 39]. Research focusing on im-
plementations of OAuth 2.0 has also been conducted [22, 31, 41, 44, 47].
However, as a newly standardised protocol, it is not yet clear whether prac-
tical implementations of OpenID Connect properly follow the specification
[37]. Given the large scale use of the Google service, it is important to un-
derstand how secure deployments of OpenID Connect really are. In order to
help answer the question, the operation of all one thousand sites from the
GTMetrix Top 1000 Sites [11] providing services in English was examined.
Of these sites, 103 were found to support the use of the Google’s OpenID
Connect service, at the time of our survey (early 2015). All 103 of these
websites were then further examined for potential vulnerabilities, with the
results as reported in this paper. In our study, all the RPs and the Google
OP site were treated as black boxes, and the HTTP messages transmitted
between the RP and OP via the browser were carefully analysed to identify
possible vulnerabilities. For every identified vulnerability, we implemented
and tested an exploit to evaluate the possible attack surface.
2
Our study reveals serious vulnerabilities of a number of types, which
either allow an attacker to log in to the RP website as the victim user or
enable the compromise of potentially sensitive user information. Google
has customised its implementation of OpenID Connect by combining SDKs,
web APIs and sample code, and as a result the OpenID Connect specifica-
tion only acts as a loose guideline to what RPs have actually implemented.
Further examination suggests that the identified vulnerabilities are mainly
caused by RP developers misunderstanding how to use the Google OpenID
Connect service, and by making design decisions which sacrifice security for
simplicity of implementation. Some of the attacks we have discovered use
cross-site scripting (XSS) [34, 43, 45, 30] and cross site request forgeries
(CSRFs) [17, 23, 29, 33, 46], well-established and widely exploited attack
techniques.
OpenID Connect is being used to protect millions of user accounts, as
well as sensitive user information stored at both RPs and the Google OP
server. Moreover, as of April 20th 2015, Google shut down its OpenID
2.0 [8] service; as a result a huge number of RPs have had to upgrade
their Google sign-in service to use OpenID Connect. It is therefore vitally
important that the issues we have identified are addressed urgently, and that
Google considers issuing updated advice to all RPs using its service. In this
connection we have notified all the RPs in whose OpenID Connect service
we have identified serious vulnerabilities, as well as Google itself.
The remainder of the paper is organised as follows. In Section 2 we
give an overview of OpenID Connect. We describe our adversary model in
section 3. Section 4 describes the experiments we performed to evaluate the
security of Google’s implementation of OpenID Connect. Possible reasons
for the identified vulnerabilities are discussed in section 5. In section 6 we
give proposed mitigations for these vulnerabilities, we review related work
in section 7, and section 8 concludes the paper.
2 OpenID Connect
2.1 Introduction
OAuth 2.0 [25] enables an end user to grant an online service controlled
access to his or her personal details (e.g. email address, birth date, pictures)
held by a third party, without revealing his or her password for this third
party. Without the help of a system like OAuth 2.0, relying parties (e.g.
Wikihow) would need to ask the user to provide his or her password in order
to access user information stored at a third party (e.g. Google), which is a
less than ideal solution.
As already noted, OpenID Connect 1.0 [37] is built as an identity layer
on top of the OAuth 2.0 protocol. The functionality that it adds enables RPs
to verify the identity of an end user by relying on an authentication process
3
performed by an OpenID Provider (OP), i.e. it adds identity management
functionality to the OAuth 2.0 system.
Both an access token [7] and an id token [13] can be verified by making
a call to the web API of the issuing OP.
4
authentication event. After receiving an access token, the RP can use it to
access end user’s attributes using the API provided by the OP, and after
receiving an id token the RP is informed about the authentication of the
user, as summarised in Fig. 2.1.
5
2.3.1 Hybrid Server-side Flow
Google’s OpenID Connect implementation uses postMessage [1, 5, 18, 40]
to enable cross domain communication between the RP and Google’s OP.
Normally, scripts on different pages are only allowed to access each other
if the web pages that caused them to execute are at locations sharing the
same protocol, port number and host. The postMessage method lifts this
restriction by providing a way to securely pass messages across domains.
Further information on the operation of postMessage can be found, for
example, in Son and Shmatikov [40]. In the Hybrid Server-side Flow and
Client-side Flow , an RP Client is running on the UA and listening for the
postMessage event.
We now give a detailed description of the Hybrid Server-side Flow .
4. U → UA → OP: The user completes the login form and grants per-
mission for the RP to access the attributes stored by the OP.
5. OP → UA: After receiving the permission grant from the user, the
OP generates an HTML document which contains the authorization
response and sends it back to the UA. The authorization response
contains the code, access token and id token generated by the OP;
and state, the value sent in step 2.
6
the RP Client receives the authorization response it extracts the code
and sends it back to the RP.
8. OP → RP: The OP checks the code, client secret and redirect uri and,
if correct, responds to the RP with access token and id token, the
latter of which is the same as the id token sent in step 5.
7
2.3.3 Authorization Code Flow
One advantage of this flow is that no tokens are made available to the user
agent or to any malicious applications which might be able to access the
user agent. This is advantageous since if either of the tokens are obtained
by a malicious party they could be used to access sensitive user data and/or
successfully masquerade as the user. The OP must authenticate the RP
before it issues the pair of tokens, and hence use of the Authorization Code
Flow requires that an RP shares a secret with the OP. The flow involves the
OP returning an authorization code, typically a short-lived opaque string,
to the RP, which uses it to obtain the id token and access token directly
from the OP’s access token endpoint, i.e. not via the UA. The main steps
are as follows.
4. U → UA → OP: The user completes the login form and grants per-
mission for the RP to access the attributes stored by the OP.
8
retrieve an access token; the code sent in step 5; the redirect uri ; and
client secret, the secret shared by the RP and OP.
8. OP → RP: The OP checks the code, client secret and redirect uri and
if all are correct responds to the RP with an access token and id token.
3 Adversary Model
In our assessment of the security of Google’s implementation of OpenID
Connect, and of the implementations of specific RPs using the service, we
consider two possible scenarios for the capabilities of an adversary.
9
4 A Security Study
To evaluate the security of OpenID Connect, we used Fiddler1 to capture
BRMs sent between RPs and the OP; we also developed a Python program
to parse the BRMs to simplify analysis and to avoid mistakes resulting from
manual inspections. All the experiments were performed using accounts set
up specially for the purpose; i.e. at no time was any user’s account accessed
without permission. Of the 103 RPs supporting Google OpenID Connect
that we examined, we found that 69 (67%) adopt the Authorization Code
Flow , 33 (32%) use the Hybrid Server-side Flow , and just 1 adopted the
Client-side Flow .
10
the Google+ post URL for a Gmail account, for which the ID is
115722834054889887046.
We reported our findings to the three affected websites, and recommen-
dations were also provided to enable the RP developers to fix the problem
(see also 6.3).
11
4.1.3 Intercepting an access token
As stated above, 58% of RPs using the Hybrid Server-side Flow require the
submission of an access token back to their Google sign-in endpoint (see
step 6 in section 2.3.1). If the RP Client running on the UA sends an
access token back to its Google sign-in endpoint without SSL protection, a
passive network attacker is able to intercept it (see section 3). According
to the OAuth 2.0 specification [27], an access token should never be sent
unencrypted between the user browser and the RP. However, we found that
12% of RPs using the Hybrid Server-side Flow (i.e. 4 out of 33) send the
access token unprotected. A sniffer written in Python was implemented to
test this.
We also observed that one additional site, namely TheFreeDictionary4
does use SSL to protect the transfer of the code to its Google sign-in end-
point. However, the access token is subsequently stored in a cookie, and
when the cookie is sent from the browser back to TheFreeDictionary the
link is not SSL-protected. That is, the access token is observable by a pas-
sive eavesdropper.
• the RP uses SSL to protect the link to the Google sign-in endpoint,
but changes to http when it sends the user’s information back to the
user’s browser.
As described in Section 4.1.3, a passive eavesdropper can intercept the
access token for 12% of the RPs that use the Hybrid Server-side Flow (i.e.
4 out of 33), and can then use it to retrieve potentially sensitive user in-
formation, notably including the Google ID and email address. As stated
in section 2.2, the id token is a JSON web token, in which the user email
4
http://www.thefreedictionary.com
12
address and Google ID are encoded in cleartext using Base64; as a result
anyone obtaining the token can immediately obtain the information within
it. One of the four RPs referred to above sends an id token in addition
to the access token to its Google sign-in endpoint, and thus a passive web
attacker can retrieve the user information it contains without requesting it
from Google using the access token. We also found that one RP did not
enable SSL to protect its Google sign-in endpoint and returned user infor-
mation directly to the user browser. Another RP sends user information
back to its Google sign-in endpoint without SSL protection. Yet another
RP uses SSL to protect the link to the Google sign-in endpoint, but changes
to HTTP when it sends the user information back to the user browser. As a
result, user privacy cannot be guaranteed for 21% of the RPs we examined
(i.e. 7 out of 33). As noted above, a sniffer in Python was implemented to
demonstrate the feasibility of the attack.
1. The attacker first logs in to the RP website using his or her own ac-
count (see step 4 in section 2.3.1), and intercepts the tokens generated
by Google (see step 5 in section 2.3.1) .
4. The victim user is now, by some means, induced to visit the website of-
fering the attacker’s web page. The HTML can be constructed in such
a way (described in detail below) that the victim’s UA will automati-
cally use the GET or POST method to send the attacker-constructed
request to the RP; as a result the user session on the RP website will
be bound to the attacker’s account.
13
to the RP’s server without an accompanying state value. Use of a static
img or iframe tag to perform an attack of the above type does not work
against these RPs, as the browser will automatically use the GET method to
retrieve the img and iframe data. Thus, in order to use the POST method
to submit those tokens, we created a special HTML page to conduct our
session-swapping attack. We used JavaScript to create an iframe with a
unique name in the browser. We then constructed a form inside the iframe
whose action points to the RP’s Google sign-in endpoint. We then put the
attacker’s tokens into the form input and configured the HTML to submit
the form whenever the HTML document is loaded into a browser.
To deploy the attack, the constructed HTML page is made available
via a publicly available web server. If a victim user visits this page, the
JavaScript inside the HTML automatically submits the attacker’s tokens to
the RP using the POST method; as a result the victim user’s session on
the RP is bound to the attacker’s, i.e. a session-swapping attack has been
performed. An attacker could use such an attack to collect sensitive user
information, e.g. if the victim user updates his credit card information on
the RP website, the credit card information will be written to the attacker’s
account.
Unfortunately, we found that 73% of RPs which adopt the Hybrid Server-
side Flow (i.e. 24 out of 33) are vulnerable to this attack. Of these 24
RPs, eight (i.e. 24% of this category) submit a code to their Google sign-in
endpoint; as the code is a one-time value, the attacker must update it within
the attack HTML every time the page is retrieved by a victim user. For the
other 48% of vulnerable RPs (i.e. 16 out of 33), an access token or the user’s
Google ID is submitted back to the Google sign-in endpoint, in which case
the attacker does not need to update the attack page HTML as frequently.
14
RP’s Google sign-in endpoint.
15
The opener window then sends the access token to the attacker’s server.
Unfortunately, our results show that all the RPs that adopt the Autho-
rization Code Flow are vulnerable to this attack. The vulnerability affects
all Android versions up to 4.4, which as of April 6, 2015 still accounted for
53.2% of Android devices5 .
16
4.2.5 Forcing a Login Using a CSRF attack
A CSRF login attack operates in the context of an ongoing interaction be-
tween a target web browser (running on behalf of a target user) and a target
RP. In such an attack, a malicious website somehow causes the target user’s
browser to initiate an OpenID Connect authorization request to the OP. Be-
cause of Google’s “automatic authorization granting” feature, receiving such
a request can cause the Google OP to generate an authorization response
which is delivered to the RP without the involvement of the user. If the
target user is currently logged in to Google, the browser will send cookies
containing the target user’s Google OP-generated tokens, along with the
attacker-supplied authorization request, to the OP. The OP will process
the malicious authorization request as if it was initiated by the target user,
and will generate an authorization response and send it to the RP. The
target browser could be made to send the spurious request in various ways;
for example, a malicious site visited by the browser could use the HTML
img tag’s src attribute to specify the URL of a malicious request, causing
the browser to silently use a GET method to send the request.
Our experiments have shown that 35% of the RPs which adopt the Au-
thorization Code Flow (i.e. 24 out of 69) are vulnerable to such an attack.
One consequence of this attack is that an attacker can cause a victim user
to log in to the RP, as long as the user has previously logged in to Google.
This could damage the user experience of the RP website, as the victim user
might dislike such a potentially annoying “automatic login” feature.
5 Discussion
OpenID Connect builds on top of the current web infrastructure, in which
web application vulnerabilities (e.g. cross-site request forgeries, cross-site
scripting) are common and have been widely exploited [2]. The existence of
these vulnerabilities exacerbates the threat posed by some of the implemen-
tation issues we have identified.
Most of the vulnerabilities described in section 4 are caused by a com-
bination of certain characteristics of the Google service and RP design de-
cisions that appear to value simplicity over security. We next consider in
greater detail how and why the various classes of vulnerability that we have
identified have arisen.
17
RP Clients submit an access token, an id token and/or a Google ID back
to their Google sign-in endpoints. It appears that the OpenID Connect
Specification only acts as a loose guideline for these RPs.
Meanwhile, the authorization request generated in the Hybrid Server-
side Flow by RPs which use Google’s OpenID Connect API will always
include response type=code token id token; therefore the authorization re-
sponse which is sent to the RP Client contains a code, access token and
id token. Unlike the Authorization Code Flow , where only a code is re-
turned to the RP’s Google sign-in endpoint (see step 6 in section 2.3.3) and
no RP Client exists, this gives the RP the ability to customise their Hybrid
Server-side Flow . In fact our experiments have shown that as many as 70%
of RPs (i.e. 23 out of 33) customise their Hybrid Server-side Flow . These
customisations potentially improve the performance of the OpenID Connect
system at the RP as well as enhancing the user experience, but they also risk
introducing new vulnerabilities into the system, e.g. allowing an attacker to
log in to the RP as any victim user (see section 4.1.1) and to impersonate
the victim user using an access token generated for another RP (see section
4.1.2). Moreover, as the code, access token and id token are returned by
Google inside a HTML document, these values are also revealed to the user
agent and hence to any applications (e.g. browser plug-ins), which might be
able to access the user agent. If the plug-in or user agent has vulnerabilities
which could allow an attacker to access these values, the attacker can steal
the user’s access token; for example a malicious plug-in which has the right
to read the content of HTML pages could obtain the access token.
18
As the state value generated by the Google OpenID Connect API is
not bound to the RP’s session and cannot be extracted by the RP Client,
another state value which is bound to the session needs to be implemented to
protect the RP’s Google sign-in endpoint against a CSRF attack. However,
73% of RPs using the Hybrid Server-side Flow fail to take this step. As a
result they are all vulnerable to the session swapping attack described in
section 4.1.5.
Google does recommend RPs to use a state value to protect their Google
sign-in endpoint. However, examination of the Google OpenID Connect
sample code [3] reveals that Google has not included a state value in its
example of an RP Client-generated AJAX request, which is used to send
data back to the RP [10]. The lack of a state parameter in the sample code
and the complexity of implementing anti-CSRF measures helps to explain
why 73% of the RPs using the Hybrid Server-side Flow are vulnerable to
this attack.
6 Recommendations
OpenID Connect has been deployed by many RPs and OPs, and it appears
that increasing numbers of RPs supporting the Google service will imple-
ment OpenID Connect for SSO now that Google has shut down its OpenID
service. However, our study has revealed serious vulnerabilities in existing
systems, and there is a significant danger that these vulnerabilities will be
replicated in future systems.
19
Below we make a number of recommendations, directed at both RPs
and OPs, designed to address the vulnerabilities we have identified. These
recommendations primarily apply to RPs using the Google service and to the
Google OP itself, but some may have broader applicability. There are two
reasons for making these recommendations, namely both to try to address
the problems that exist in current systems, and to help ensure that future
systems are built in a more robust way.
20
value which should be bound to the browser session so that the state
value can used to verify the validity of the response.
21
6.3 Notifying affected parties
We reported the issues described in section 4.1.1 to the three affected parties
in February and also provided advice to help them fix the problem. As
of 30 July 2015, one of the three has fixed the problem, one has ignored
our warning, and the third terminated support for the Google SSO service.
On April 17th 2015 we also notified Google of all the issues described in
this paper. Google acknowledged the problem described in section 5.2 and
notified their OpenID Connect group.
7 Related Work
OAuth 2.0, as the predecessor of OpenID Connect, has been analysed using
formal methods. Pai et al. [35] confirmed a security issue described in the
OAuth 2.0 Thread Model [32] using the Alloy Framework [26]. Chari et al.
analysed OAuth 2.0 in the Universal Composability Security framework [21]
and showed that OAuth 2.0 is secure if all the communications links are
SSL-protected. Frostig and Slack [39] discovered a cross site request forgery
attack in the Implicit Grant flow of OAuth 2.0, using the Murphi framework
[24]. Bansal et al. [15] analysed the security of OAuth 2.0 using the WebSpi
[16] and ProVerif models [19]. However, all this work is based on abstract
models of OAuth 2.0, and so delicate implementation details are ignored.
Meanwhile, a range of work exploring the security properties of real-
world implementations of OAuth 2.0 has also been conducted. Wang et
al. [44] examined a number of deployed SSO systems, focussing on a logic
flaw present in many such systems, including OpenID. In parallel, Sun and
Beznosov [41] also studied deployed systems of OAuth 2.0 providing services
in English. Li and Mitchell [31] examined the security of deployed OAuth
2.0 systems providing services in Chinese. In parallel, Zhou and Evans [47]
conducted a large scale study of the security of Facebook’s OAuth 2.0 imple-
mentation. Chen et al. [22], and Shehab and Mohsen [38] have looked at the
security of the implementation of OAuth 2.0 on mobile platforms. However,
despite all the work on OAuth, very little research has been conducted on
the security of OpenID Connect systems.
8 Concluding Remarks
In this paper, we have reported on the first field study of the security prop-
erties of Google’s implementation of OpenID Connect. We examined the se-
curity of all 103 of the RPs that implement support for the Google OpenID
Connect service from the GTMetrix list of the Top 1000 Sites. The method-
ology we used to discover vulnerabilities is similar to that used by Wang
et al. [44] and Sun and Beznosov [41], i.e. we analysed the HTTP mes-
22
sages transmitted between the RP and OP via the browser; however, our
approach was different in two key respects. First, we added a further class
of adversary to the threat model, in which a malicious RP tries to collect
user access tokens and then use them to impersonate the user to other RPs.
Second, we focussed our study on OpenID Connect rather than OAuth 2.0
and other generic SSO systems. This has allowed us to to identify gaps
between the implementation and specification of OpenID Connect, discover
a number of vulnerabilities which allow an attack to log in to the RP as a
victim user, and propose practical and useful improvements which can be
adopted by all OpenID Connect RPs and OPs.
References
[1] HTML5 Web Messaging, 2012. http://www.w3.org/TR/2012/WD-webmessaging-20120313/.
[14] Rafay Baloch. Android Browser Same Origin Policy Bypass, 2014.
http://www.rafayhackingarticles.net/2014/08/android-browser-same-origin-policy.
23
[15] Chetan Bansal, Karthikeyan Bhargavan, Antoine Delignat-Lavaud, and
Sergio Maffeis. Discovering concrete attacks on website authorization
by formal analysis. Journal of Computer Security, 22(4):601–657, 2014.
[17] Adam Barth, Collin Jackson, and John C Mitchell. Robust defenses for
cross-site request forgery. In Peng Ning, Paul F. Syverson, and Somesh
Jha, editors, Proceedings of the 2008 ACM Conference on Computer
and Communications Security, CCS 2008, Alexandria, Virginia, USA,
October 27-31, 2008, pages 75–88. ACM, 2008.
[18] Adam Barth, Collin Jackson, and John C. Mitchell. Securing frame
communication in browsers. Commun. ACM, 52(6):83–91, 2009.
[21] Suresh Chari, Charanjit S Jutla, and Arnab Roy. Universally compos-
able security analysis of OAuth v2.0. IACR Cryptology ePrint Archive,
2011:526, 2011.
[22] Eric Y. Chen, Yutong Pei, Shuo Chen, Yuan Tian, Robert Kotcher, and
Patrick Tague. Oauth demystified for mobile application developers.
In Gail-Joon Ahn, Moti Yung, and Ninghui Li, editors, Proceedings of
the 2014 ACM SIGSAC Conference on Computer and Communications
Security, Scottsdale, AZ, USA, November 3-7, 2014, pages 892–903.
ACM, 2014.
[23] Philippe De Ryck, Lieven Desmet, Wouter Joosen, and Frank Piessens.
Automatic and precise client-side protection against CSRF attacks. In
Vijay Atluri and Claudia Dı́az, editors, Computer Security - ESORICS
2011 - 16th European Symposium on Research in Computer Security,
Leuven, Belgium, September 12-14, 2011. Proceedings, volume 6879 of
Lecture Notes in Computer Science, pages 100–116. Springer, 2011.
[24] David L Dill. The murphi verification system. In Rajeev Alur and
Thomas A. Henzinger, editors, Computer Aided Verification, 8th In-
ternational Conference, CAV ’96, New Brunswick, NJ, USA, July 31 -
August 3, 1996, Proceedings, volume 1102 of Lecture Notes in Computer
Science, pages 390–393. Springer, 1996.
24
[25] Dick Hardt. The OAuth 2.0 authorization framework. October 2012.
http://tools.ietf.org/html/rfc6749.
[26] Daniel Jackson. Alloy 4.1, 2010. http://alloy.mit.edu/community/.
[27] M Jones and Dick Hardt, editors. The OAuth 2.0
Authorization Framework: Bearer Token Usage, 2012.
https://tools.ietf.org/html/rfc6750.
[28] Michael Jones, Nat Sakimura, and John
Bradley. JSON Web Token (JWT), 2014.
http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-21.
[29] Nenad Jovanovic, Engin Kirda, and Christopher Kruegel. Preventing
cross site request forgery attacks. In Second International Conference
on Security and Privacy in Communication Networks and the Work-
shops, SecureComm 2006, Baltimore, MD, Aug. 28 2006 - September
1, 2006, pages 1–10. IEEE, 2006.
[30] Engin Kirda, Christopher Krügel, Giovanni Vigna, and Nenad Jo-
vanovic. Noxes: a client-side solution for mitigating cross-site script-
ing attacks. In Hisham Haddad, editor, Proceedings of the 2006 ACM
Symposium on Applied Computing (SAC), Dijon, France, April 23-27,
2006, pages 330–337. ACM, 2006.
[31] Wanpeng Li and Chris J. Mitchell. Security issues in OAuth 2.0 SSO
implementations. In Sherman S. M. Chow, Jan Camenisch, Lucas
Chi Kwong Hui, and Siu-Ming Yiu, editors, Information Security -
17th International Conference, ISC 2014, Hong Kong, China, October
12-14, 2014. Proceedings, volume 8783 of Lecture Notes in Computer
Science, pages 529–541. Springer, 2014.
[32] Torsten Lodderstedt, Mark McGloin, and Phil Hunt.
OAuth 2.0 Threat Model and Security Considerations, 2013.
http://tools.ietf.org/html/rfc6749.
[33] Ziqing Mao, Ninghui Li, and Ian Molloy. Defeating cross-site request
forgery attacks with browser-enforced authenticity protection. In Roger
Dingledine and Philippe Golle, editors, Financial Cryptography and
Data Security, 13th International Conference, FC 2009, Accra Beach,
Barbados, February 23-26, 2009. Revised Selected Papers, volume 5628
of Lecture Notes in Computer Science, pages 238–255. Springer, 2009.
[34] Yacin Nadji, Prateek Saxena, and Dawn Song. Document structure in-
tegrity: A robust basis for cross-site scripting defense. In Proceedings of
the Network and Distributed System Security Symposium, NDSS 2009,
San Diego, California, USA, 8th February - 11th February 2009. The
Internet Society, 2009.
25
[35] Suhas Pai, Yash Sharma, Sunil Kumar, Radhika M Pai, and Sanjay
Singh. Formal verification of OAuth 2.0 using Alloy framework. In
Proceedings of the International Conference on Communication Sys-
tems and Network Technologies (CSNT), 2011, pages 655–659. IEEE,
2011.
[39] Quinn Slack and Roy Frostig. Murphi Analysis of OAuth 2.0 Implicit
Grant Flow, 2011. http://www.stanford.edu/class/cs259/WWW11/.
[40] Sooel Son and Vitaly Shmatikov. The postman always rings twice:
Attacking and defending postmessage in HTML5 websites. In 20th
Annual Network and Distributed System Security Symposium, NDSS
2013, San Diego, California, USA, February 24-27, 2013. The Internet
Society, 2013.
[41] San-Tsai Sun and Konstantin Beznosov. The devil is in the (imple-
mentation) details: An empirical analysis of OAuth SSO systems. In
Ting Yu, George Danezis, and Virgil D. Gligor, editors, the ACM Con-
ference on Computer and Communications Security, CCS ’12, Raleigh,
NC, USA, October 16-18, 2012, pages 378–390. ACM, 2012.
[42] Bart van Delft and Martijn Oostdijk. A security analysis of OpenID.
In Elisabeth de Leeuw, Simone Fischer-Hübner, and Lothar Fritsch,
editors, Policies and Research in Identity Management - Second IFIP
WG 11.6 Working Conference, IDMAN 2010, Oslo, Norway, November
18-19, 2010. Proceedings, volume 343 of IFIP Advances in Information
and Communication Technology, pages 73–84. Springer, 2010.
26
San Diego, California, USA, 28th February - 2nd March 2007. The
Internet Society, 2007.
[44] Rui Wang, Shuo Chen, and XiaoFeng Wang. Signing me onto your ac-
counts through facebook and google: A traffic-guided security study of
commercially deployed single-sign-on web services. In IEEE Symposium
on Security and Privacy, SP 2012, 21-23 May 2012, San Francisco,
California, USA, pages 365–379. IEEE Computer Society, 2012.
[46] William Zeller and Edward W Felten. Cross-site request forgeries: Ex-
ploitation and prevention. Bericht, Princeton University, 2008.
[47] Yuchen Zhou and David Evans. SSOScan: Automated testing of web
applications for Single Sign-On vulnerabilities. In Kevin Fu and Jaeyeon
Jung, editors, Proceedings of the 23rd USENIX Security Symposium,
San Diego, CA, USA, August 20-22, 2014., pages 495–510. USENIX
Association, 2014.
27