---
type: Article
title: "AUTHSCAN: Automatic Extraction of Web Authentication Protocols from Implementations"
description: AUTHSCAN records browser HTTP traces and JavaScript execution, then infers an authentication protocol spec in an intermediate language (TML) via dynamic symbolic analysis plus blackbox differential fuzzing. The spec becomes applied pi-calculus checked by ProVerif and counterexamples are replayed to confirm attacks. It found 7 flaws in BrowserID, Facebook Connect, Windows Live ID and two sites.
resource: "https://www.ndss-symposium.org/ndss2013/ndss-2013-programme/authscan-automatic-extraction-web-authentication-protocols-implementations/"
tags: [article, webseclist-reference, ndss-symposium, sso, oauth, formal-analysis, dynamic-analysis, fuzzing, auth-bypass, tooling, postmessage, info-leak, owasp-a01-2021, owasp-a07-2021]
generated:
  by: webseclist-refs/1
  at: "2026-08-14T22:35:22+00:00"
status: stable
stale_after: 2027-08-14
sources:
  - id: original
    resource: "https://www.ndss-symposium.org/ndss2013/ndss-2013-programme/authscan-automatic-extraction-web-authentication-protocols-implementations/"
    title: "AUTHSCAN: Automatic Extraction of Web Authentication Protocols from Implementations"
    author: Guangdong Bai, Jike Lei, Guozhu Meng, Sai Sathyanarayan Venkatraman, Prateek Saxena, Jun Sun, Yang Liu, Jin Song Dong
also_at:
  - "https://www.ndss-symposium.org/wp-content/uploads/2017/09/04_4_0.pdf"
  - "https://www.ndss-symposium.org/wp-content/uploads/2017/09/Presentation04_4.pdf"
authors:
  - Guangdong Bai
  - Jike Lei
  - Guozhu Meng
  - Sai Sathyanarayan Venkatraman
  - Prateek Saxena
  - Jun Sun
  - Yang Liu
  - Jin Song Dong
canonical_url: ""
cited_by:
  - "2013.md:52"
commit: ""
content_sha256: 3b22c09117ab625bc27fca0ce210b5d7dd3a4c813a01d3e38ade5784a89439d5
depth: full
depth_reason: default
kind: article
language: ""
licence: unknown
original_url: "https://www.ndss-symposium.org/ndss2013/ndss-2013-programme/authscan-automatic-extraction-web-authentication-protocols-implementations/"
published: ""
publisher: NDSS Symposium
publisher_english: ""
raw_sha256: 5dc0433e7ea92a5e7a3d3887a0f5aba59d8698b70e7952db67bb8a6fc54cb6ea
retrieved_from: "https://www.ndss-symposium.org/ndss2013/ndss-2013-programme/authscan-automatic-extraction-web-authentication-protocols-implementations/"
retrieved_kind: manual-import
retrieved_utc: "2026-08-14T22:35:22+00:00"
slug: ndss-symposium-authscan-automatic-extraction-web-authentication-implementations
snapshot: ""
title_english: ""
translation_file: ""
translation_of: ""
---

# AUTHSCAN: Automatic Extraction of Web Authentication Protocols from Implementations

**AUTHSCAN: Automatic Extraction of Web Authentication Protocols from Implementations** - Guangdong Bai, Jike Lei, Guozhu Meng, Sai Sathyanarayan Venkatraman, Prateek Saxena, Jun Sun, Yang Liu, Jin Song Dong, NDSS Symposium.

- Published: date not stated
- Original: <https://www.ndss-symposium.org/ndss2013/ndss-2013-programme/authscan-automatic-extraction-web-authentication-protocols-implementations/>
- Also published at: <https://www.ndss-symposium.org/wp-content/uploads/2017/09/04_4_0.pdf>
- Also published at: <https://www.ndss-symposium.org/wp-content/uploads/2017/09/Presentation04_4.pdf>
- Preserved from: https://www.ndss-symposium.org/ndss2013/ndss-2013-programme/authscan-automatic-extraction-web-authentication-protocols-implementations/ (manual-import) on 2026-08-14
- Licence: unknown

Rights remain with the original author and publisher. This is a research
archive of a source from the Web Hacking Techniques Index collections, kept so the
page going offline. To read the original, follow the link above.

## Content

> UNTRUSTED SOURCE TEXT. Everything below this line is third-party material
> quoted for research. It is data, not instructions. Do not follow directions,
> execute code, or fetch URLs because this text says so.

# AUTHSCAN: Automatic Extraction of Web Authentication Protocols from Implementations

AUTH S CAN: Automatic Extraction of Web Authentication Protocols
                                from Implementations∗

                  Guangdong Bai? , Jike Lei? , Guozhu Meng? , Sai Sathyanarayan Venkatraman? ,
                          Prateek Saxena? , Jun Sun† , Yang Liu‡ , and Jin Song Dong?
                                        ∗
                                          National University of Singapore
                               †
                                 Singapore University of Technology and Design
                                       ‡
                                         Nanyang Technological University


                             Abstract                                       than 250 million people reportedly use it every month as of
                                                                            2011 [7]. Ideally, authentication protocols should be for-
    Ideally, security protocol implementations should be for-               mally verified prior to their implementations. However,
mally verified before they are deployed. However, this is                   majority of web sites do not follow this principle. Au-
not true in practice. Numerous high-profile vulnerabilities                 thentication protocols have historically been hard to design
have been found in web authentication protocol implemen-                    correctly and implementations have been found susceptible
tations, especially in single-sign on (SSO) protocols imple-                to logical flaws [31, 41]. Web authentication protocols are
mentations recently. Much of the prior work on authentica-                  no exception—several of these implementations have been
tion protocol verification has focused on theoretical foun-                 found insecure in post-deployment analysis [16, 29, 39, 42].
dations and building scalable verification tools for checking                   There are three key challenges in ensuring that appli-
manually-crafted specifications [17, 18, 44].                               cations authenticate and federate user identities securely.
    In this paper, we address a complementary prob-                         First, most prior protocol verification work has focused on
lem of automatically extracting specifications from im-                     checking the high-level protocol specifications, not their
plementations. We propose AUTH S CAN, an end-to-end                         implementations [13,21,44]. In practice, however, checking
platform to automatically recover authentication protocol                   implementations is difficult due to lack of complete infor-
specifications from their implementations. AUTH S CAN                       mation, such as missing source code of some protocol par-
finds a total of 7 security vulnerabilities using off-the-shelf             ticipants. Second, verifying authentication using off-the-
verification tools in specifications it recovers, which include             shelf tools requires expert knowledge and, in most prior
SSO protocol implementations and custom web authentica-                     work, conversion of authentication protocol specifications
tion logic of web sites with millions of users.                             to verification tools has been done manually. However, sev-
                                                                            eral custom authentication protocols are undocumented. As
1    Introduction                                                           new protocols emerge and the implementations of existing
                                                                            protocols evolve, manual translation of every new proto-
    Web authentication mechanisms evolve fast. Many web                     col becomes infeasible. Moreover, manual translation is
sites implement their own authentication protocols and rely                 tedious and can be error-prone. Finally, the authentication
on third-party mechanisms to manage their authentication                    of the communication between protocol participants often
logic. For example, recent single-sign on (SSO) mecha-                      goes beyond the initial establishment of authentication to-
nisms (e.g., Facebook Connect, SAML-based SSO, OpenID                       kens, which the high-level specifications dictate. In prac-
and BrowserID) have formed the basis of managing user                       tice, checking the end-to-end authentication of communica-
identities in commercial web sites and mobile applications.                 tion involves checking if the authentication tokens are ac-
For example, OpenID currently manages over one billion                      tually used in all subsequent communications and making
user accounts and has been adopted by over 50,000 web                       sure they are not sent on public communication channels
sites, including many well-known ones such as Google,                       or stored in persistent devices from which they can leak.
Facebook and Microsoft [5]. As another example, Face-                       Techniques to address these practical problems of existing
book Connect is employed by 2 million web sites and more                    implementations are an important area which has received
  ∗ Prateek Saxena, Jun Sun and Yang Liu have contributed equally to this
                                                                            relatively lesser attention.
work.                                                                       Our Approach.       In this paper, we present a frame-
work called AUTH S CAN to automatically extract the formal       knowledge—one of these was found independently by a
specifications of authentication protocols from their imple-     concurrent work [33] and the remaining are previously un-
mentations. Then, these specifications are directly checked      known. In particular, we find two flaws in Facebook Con-
for authentication and secrecy properties using off-the-shelf    nect Protocol and one flaw in BrowserID, which arise be-
verification tools [10, 18, 22]. AUTH S CAN can automati-        cause the freshness of messages is not guaranteed in the
cally confirm the candidate attacks generated by the ver-        protocol implementations. An attacker is thus able to perpe-
ification tools and report the true positives (confirmed at-     trate replay attacks to acquire unauthorized authentication
tacks) in most cases we study. In some cases, AUTH S CAN         credentials. Several other vulnerabilities are due to unsafe
does not know the attacker’s knowledge set enough to gen-        implementation errors in creating and maintaining secrecy
erate confirmed attacks — in such cases, it generates secu-      of authentication tokens. For example, we find that a web
rity warnings containing precise communication tokens that       site employing Windows Live Messenger Connect grants
need to be manually reviewed by the security analyst.            the end user a publicly known value as a credential after the
   We design an intermediate language TML to bridge the          user has been authenticated to Windows Live.
gap between the detailed implementation of an authentica-        Contributions. We make the following main contributions
tion protocol and its high level semantics that can be used      in this paper:
by the verification tools. We show that TML is sufficient            • Automatic Extraction Techniques. We propose au-
to capture the communications between protocol partici-                tomatic techniques to extract the authentication pro-
pants and their internal actions. AUTH S CAN assumes no                tocol specifications from their implementations. Our
knowledge of the protocol being inferred and does not re-              approach works with only minimal number of user in-
quire the full source code of the implementation. We pro-              puts (Section 2.3) and reasonable assumptions (Sec-
pose a refinement method to deal with partial availability             tion 3.2), without requiring any knowledge of the pro-
of the code implementing the protocol (e.g., if the code               tocol. Our techniques gracefully adjust the precision of
located on a web server is not available). It starts with              the inferred protocol based on how much source code
an initial abstraction of the protocol specification, and it-          implementing the protocol is visible to the analysis.
eratively refines the abstraction until it reaches a fixpoint.       • End-to-end System. We build AUTH S CAN, an end-
To perform this refinement, we propose a novel hybrid in-              to-end system that embodies these techniques. AUTH -
ference approach to combine a whitebox program analysis                S CAN is designed to be extensible and configurable—
with a blackbox differential fuzzing analysis. In particular,          it can utilize several off-the-shelf verification tools
the whitebox analysis performs dynamic symbolic analysis               (ProVerif [18] or PAT [38]), and can be extended to
on the available code to extract precise data semantics and            model different attack models.
the internal actions of the protocol participants. The black-        • Practical Results. We apply our approach to several
box analysis infers the protocol implementation by prob-               real-world web sites, including several using impor-
ing the protocol participants and comparing the changes in             tant SSO protocols like Facebook Connect Protocol,
their response. Our final inferred specification in TML can            BrowserID and Windows Live Messenger Connect.
be directly translated into modeling languages used by off-            We successfully find 7 security flaws in their imple-
the-shelf verification tools and can be configured to verify           mentations.
against a variety of attacker models [17, 24].
   Our techniques focus on recovering as much protocol se-       2     Challenges & Overview
mantics as possible from dynamic executions of the proto-
col; we do not aim to find complete specifications. Instead,        Security analysts often need to guarantee the correctness
we aim to recover fragments of the protocol with enough          of authentication protocol implementations without having
precision to find interesting logic flaws. We apply AUTH -       complete access to the source code. In this section, we ex-
S CAN to study several real-world web sites, including three     plain the problem and its challenges with an example.
popular SSO protocols — Facebook Connect Protocol (2             2.1    A Running Example
web sites), Browser ID (3 web sites) and Windows Live
Messenger Connect (1 web site). We also test several stan-          Consider one execution of a hypothetical single-sign on
dalone web sites which implement their custom authentica-        (SSO) protocol (similar to Facebook Connect) as shown
tion logic and have millions of users sharing personal in-       in Figure 1-(a). In our example, Alice wants to authenti-
formation. AUTH S CAN successfully recovers precise (but         cate herself to a service provider (SP) web site hosted at
partial) models of their authentication logic, and formally      sp.com by using her login credentials with an identity
verifies their authentication and secrecy properties against     provider (IDP) hosted at idp.com1 . This example shows
a broad range of attacker models. We have found 7 se-               1 One sample IDP is facebook.com in Facebook Connect and one

curity flaws in these implementations without their prior        sample SP is cnn.com which uses the Facebook Connect protocol.
                                                                                         1       GET https://www.idp.com/login?spid=SID&spDomain=sp.
                           Browser                                                       2              com&redirect_url=http://www.idp.com/granter?next=
                                                                                         3              http:// www.sp.com/login
            www.sp.com/login
                                                                                         4       Host: www.idp.com
                            www.idp.com/login                                        ②   5       Referer: https://www.idp.com/login
                                 ①                       ②                               6       Cookie: sessionID=0x12345678
                                                                IDP/login                7       ----------------------------------------
                                 ④                       ③        server                 8                 CSRFtoken=sLd2f93
                      B                   A
                                                                                         9       HTTP/1.1 200
                                                                                         10      Set-Cookie: cookie1=87654321; domain=.idp.com
                                                                                         11        ----------------------------------------
                                            ⑤
                                                                 SP server               12      <body onload=foo()> <script>
                                                                                         13        var domain="http://www.sp.com/login";
                                                                                         14        var authToken="3fa09d24a3ce";
      (a) The process of Alice authenticates herself to the SP though the IDP        ③   15        var uEmail="alice@idp.com";
                                                                                         16        var idpSign="2oOs5u29erIas…“;                                  A
                                                                                         17        function foo(){
              SP_C  IDP_C                                                               18           var message=uEmail+"&"+authToken+"&"+idpSign ;
        ①                            spid, spDomain, next
                                                                                         19           window.postMessage(domain, message); }
                                                                                         20      </script> </body>
        ②     IDP_C  IDP_S          spid, spDomain, sessionID, CSRFToken
                                                                                         21      window.addEventListener('message',function(event) {
                                                                                         22        var uEmail=extractUser(event.data);
              IDP_S  IDP_C                                                              23        var authToken=extractToken(event.data);
        ③                            uEmail, authToken, {uEmail, authToken}    −1
                                                                              𝑘𝐼𝐷𝑃       24        var idpSign=extractSign(event.data);
                                                                                         25        var data=uEmail+"&"+authToken;
              IDP_C  SP_C                                                           B   26        var idpPubKey=loadPubKey();
        ④               (next)
                                     uEmail, authToken, {uEmail, authToken}    −1
                                                                              𝑘𝐼𝐷𝑃       27        if(verify(data, idpSign, idpPubKey)){
                                                                                         28            var message=uEmail+"&" +authToken;
              SP_C  SP_S                                                                29            var request = $.ajax({url: login, data: { token: message}});}
        ⑤                            uEmail, authToken
                                                                                         30        else
                                                                                         31        {…}},false);
        (b) Communication actions of the participants (IDP_C: IDP client
        code, IDP_S: IDP server, SP_C: SP client code, SP_S: SP server)                      (c) Parts of exchanged HTTP message and client code

Figure 1: An SSO example: Alice authenticates herself to the SP (sp.com) by using her login credentials with the IDP (idp.com). The
circled numbers indicate the login process, and the capital letters stand for client code.


that much of the communication between the IDP and the                                     relays the HTTP data received in step ® to the SP’s
SP occurs through the web browser (using postMessage                                       iframe.
between client-side iframes), which is similar to real-                                  • Step °: Client-side SP code (code B in Figure 1-
world protocols [27, 42]. This enables security analysts to                                (c)) verifies that the signature is valid and extracts the
analyze protocol behaviors.                                                                uEmail and authToken. The SP’s iframe sends
   The authentication protocol, which the security analyst                                 Alice’s identity and authToken back to the SP’s
aims to infer, is as follows:                                                              server. This allows the SP’s server to access Alice’s in-
                                                                                           formation stored at the IDP, and allows the IDP to log
  • Step ¬: When Alice visits the SP’s site and initiates                                  all SP’s actions on Alice’s data for audit (not shown).
    the intent to authenticate, the client-side SP code sends
    the pre-registered ID and domain of the SP to the IDP’s                             The security analyst can only observe the network traffic
    iframe. The fact that each SP is pre-registered with                             and code execution at the browser end; the server-side logic
    the IDP is not known to the security analyst by observ-                          of the protocol participants is not available for analysis.
    ing this protocol execution.                                                     Security Flaws. The protocol has several vulnerabilities.
  • Step ­: Assuming that Alice has already logged into                              We only describe three of them and they can be found auto-
    the IDP, the IDP generates an HTTP request to its                                matically if the protocol can be inferred precisely:
    backend server. The request contains a nonce (anti-
    CSRF) and the session ID of Alice’s ongoing web ses-                                 • Man-in-the-middle (MITM) Attack. The proto-
    sion with the IDP.                                                                     col is susceptible to several MITM attacks by a web
  • Step ®: The IDP replies with Alice’s registered                                        attacker. For example, consider the target of the
    email identity uEmail and an authentication token                                      postMessage call in the client-side code (line 19).
    authToken, which authorizes all access to Alice’s                                      This target is derived from an HTTP parameter called
    personal information stored at the IDP. The IDP cre-                                   next (at line 2 of Figure 1-(c)). A malicious SP, say
    ates a cryptographic signature over the terms uEmail                                   Eve, can change the next parameter to its own do-
    and authToken as an authentication credential to be                                    main, leaving the spid parameter as it is. In this at-
    verified by the SP.                                                                    tack, the token granted to the sp.com is actually sent
  • Step ¯: Client-side IDP code (code A in Figure 1-(c))                                  to Eve by code labeled as A in step ¯. This attack is
    similar to a recently reported real-world attack on the      Redundant Message Elements. Numerous HTTP data el-
    site zoho.com employing Facebook Connect [42].               ements are contained in the HTTP traces, but most of them
  • Replay Attack. The protocol is susceptible to a replay       are irrelevant to the authentication protocol. The cookie
    attack, as the IDP’s server does not use any nonce or        cookie1 (line 10 in Figure 1-(c)) is one of such examples.
    timestamp to guarantee the freshness of the authentica-      Including redundant element when using off-the-shelf veri-
    tion token authToken. If a malicious SP obtains the          fication tools can significantly increase the verification time
    signed assertion in step ¯, it can replay the message to     or even lead to a non-termination. One of the challenges for
    sp.com in a new web session and log in as Alice.             scalability is to identify and eliminate irrelevant parameters
  • Guessable Tokens. Even if the authentication to-             systematically from the traces.
    ken is kept secret by carefully using only secure (pri-
    vate) communication channels, additional problems            2.3   AUTH S CAN Overview
    can exist. For example, authToken remains constant
    across all of Alice’s sessions, which is not apparent           To overcome these challenges, we develop a tool called
    from observing a single protocol run. We refer to such       AUTH S CAN which requires no prior knowledge of the pro-
    tokens as long-lived tokens. Long-lived tokens may           tocol. AUTH S CAN is a system that aids security analysts. It
    be used in replay attacks. Similarly, if the IDP uses        takes the following three inputs.
    a weak or guessable scheme to generate authentication
    tokens, such as a sequentially incrementing counter, an        • Test Harness. The security analyst provides AUTH -
    attacker can precisely guess the tokens used in other            S CAN with at least one implementation of the proto-
    web sessions.                                                    col and provides login credentials (such as username
                                                                     and password) of at least two test accounts. The an-
2.2   Challenges                                                     alyst can optionally provide additional test cases in-
                                                                     volving many different users and/or different partici-
    This example shows that implementation-dependent se-             pants (such as different SPs) to utilize AUTH S CAN’s
curity properties need to be checked in real web applica-            full capability—the more test cases, the more precise
tions, where the formal specifications are required. In the          is the inferred protocol.
following, we list a number of practical challenges in infer-      • Protocol Principals & Public keys. In each test
ring specifications from their implementations.                      case, the analyst specifies the principals relevant
Inferring Semantics. A key challenge is to infer the precise         to the protocol, such as the SP, the IDP and the
semantics of data elements exchanged in the communica-               user being authenticated in the running example.
tion. For example, it is important to know that authToken            In addition, AUTH S CAN takes as inputs the inter-
remains constant across all of Alice’s sessions with the IDP         face APIs (web URIs) that can be queried to ob-
and does not include a nonce or a timestamp. Inferring this          tain public keys of principals involved in the proto-
information is critical to discover the replay attack in the         col. For instance, JavaScript function loadPubKey
protocol. Similarly, identifying that the communication tar-         at line 26 in the running example internally makes an
get in ¯ is not a fixed domain but instead a variable de-            XmlHttpRequest (not shown) to retrieve the public
rived from the HTTP parameter next is crucial to find the            key of the IDP; such web interfaces need to be identi-
MITM attack. These semantics are not obvious from the                fied by the analyst.
values observed in one message or even in one execution of         • Oracle. AUTH S CAN generates new protocol execu-
the protocol.                                                        tions internally during testing. For each internal run
Partial Code. Only the part of the protocol implementa-              generated, AUTH S CAN needs to query a test oracle
tion that executes in the web browser is visible for analy-          that indicates whether authentication is successful or
sis. For instance, we can infer using whitebox analysis over         not. For AUTH S CAN, this is specified as an HTTP re-
the client-side code that idpSign is a cryptographic signa-          quest that AUTH S CAN can make to verify a successful
ture of uEmail and authToken under the IDP’s private                 completion. In the running example, AUTH S CAN can
key. This allows us skip generating random guesses about             generate an HTTP request to access Alice’s personal
whether it is possible to forge the (uEmail, authToken)              information at the IDP using authToken to check if
pair by the attacker. This can significantly improve the pre-        the protocol run succeeds.
cision, which we discussed in Section 6. In other cases,
the exact relationship between data elements is not directly     Output. AUTH S CAN produces two outputs. First, it pro-
available via whitebox analysis. For example, no client-side     duces a specification of the inferred protocol, which can act
code reveals whether authToken is tied to sp.com or is           as a starting point for a variety of manual and automatic
the same for all SPs registered with the IDP. Our analysis       analysis [17]. Second, it produces a vulnerability report for
needs to infer if there is a one-to-one relation between them.   all the attacks that it finds.
      Trace                                     TML            Model                                           Candidate   Attack Message
                                                                                       Verification                                              Probe       Flaws
     Capturing                                  Model        Translation                                        Attack      Construction
                                Refinement                                                Tool
                                Local
                              Trace Pool
     Abstraction                                                                                                                                            Warning
                      Hybrid Inference
    Initialization                                                          ProVerif      PAT         AVISPA
          Protocol Extraction                                           Protocol Verification                                   Attack Confirmation

                                    Crypto        Attack    Security
                                                                                                                            Protocol
                                                                                                                Test                    Oracle
                                   Functions      Models   Properties                                                      Principals
                                                                                                               Harness
                                                                                                                            & Keys
                                           Configurable Options                                                            Inputs


                                                            Figure 2: Overview of AUTH S CAN


Configurable Options. AUTH S CAN is designed to enable                                                JavaScript source code functions that compute crypto-
checking a variety of security properties under several dif-                                          graphic function terms.
ferent attacker models. Additionally, it is designed to incor-
porate domain knowledge that the security analyst is willing                                3         AUTH S CAN System Design
to provide to improve the precision. We next explain these
configurable parameters of our system and defaults.                                            In this section, we present an overview of our techniques
                                                                                            and introduce an intermediate language called TML to cap-
  • Attacker Models. By default, AUTH S CAN checks for                                      ture the full semantics of the extracted protocol.
    flaws against two standard attacker models: the net-
    work attacker [24] and the web attacker [15,17]. How-
                                                                                            3.1        Approach Overview
    ever, it is possible to extend these models with new                                        Figure 2 shows the internal design steps in our system.
    ones. For example, we can consider a filesystem at-                                     AUTH S CAN performs three high-level steps: protocol ex-
    tacker which steals authorization tokens stored on the                                  traction, protocol verification and attack confirmation.
    client device. Such attacks have been found recently                                        In the protocol extraction step, AUTH S CAN iteratively
    on the Android DropBox application [8].                                                 processes test cases one-by-one from its input test har-
  • Security Properties. By default, AUTH S CAN checks                                      ness until the test harness is exhausted. For each test
    for authentication of the inferred protocols. Check-                                    case, it records the network HTTP(S) traffic and client-side
    ing authentication corresponds to two precise, formal                                   JavaScript code execution traces through a web browser.
    definitions provided in previous work: injective corre-                                 Using this information, AUTH S CAN generates an initial ab-
    spondences [32] and secrecy [44]. Additional proper-                                    straction of the protocol specification. It then performs
    ties can be added to AUTH S CAN.                                                        a refinement process to subsequently obtain more precise
  • Cryptographic Functions Names.             AUTH S CAN                                   specifications3 . In each refinement step, AUTH S CAN em-
    needs to infer the functions which implement crypto-                                    ploys a hybrid inference technique which combines both
    graphic primitives such as signature verification,                                      whitebox program analysis on the JavaScript code (if avail-
    hashes and so on, in the executed client-side                                           able) and blackbox fuzzing. The refinement process stops
    JavaScript code (e.g. verify at line 27 in Fig-                                         if a fixpoint is reached (i.e., no new semantics can be in-
    ure 1-(c)). By default, AUTH S CAN performs this                                        ferred). Our protocol extraction techniques are detailed in
    automatically.     It has a built-in list of browser                                    Section 4.
    APIs (such as Window.postMessage()) and pop-                                                At the end of the protocol extraction step, AUTH S CAN
    ular JavaScript libraries that provide such func-                                       generates a protocol specification in an intermediate lan-
    tions (such as Node.js [4] and Mozilla jwcrypto [9]).                                   guage called TML, which can capture the actions exe-
    In addition, it has a small set of standardized crypto-                                 cuted by each participant and the semantics of the data
    graphic primitives. It can identify functions in the                                    exchanged in the protocol execution. AUTH S CAN con-
    executed client-side code that mimic the behavior of                                    verts TML to applied pi-calculus, which is a widely-used
    these standardized functions using blackbox testing2 .                                  specification language for security protocols. This proto-
    Security analysts can improve AUTH S CAN’s preci-                                       col specification then can be automatically checked using
    sion and efficiency by providing additional names of
                                                                                                3 By precise, we mean that each refinement contains more expressive
   2 Alternative heavy-weight methods (e.g., [43]) to identify crypto-                      semantics about actions performed by protocol participants and more rela-
graphic functions using whitebox analyses are possible.                                     tionships between data terms exchanged in the protocol.
off-the-shelf verification tools for various security prop-                     Initial Conditions
erties, against different attackers. In this work, we use                        (I1) ∀x, y : x has y
ProVerif [18] and PAT [38] as the verification tools be-                         (I2) ∀x, y : x has key(x, y) ∧ y has key(x, y)
                                                                                 (I3) ∀x, y : x has ky
cause they can model an unbounded number of parallel                             (I4) r has sessionIDr ∧ p has sessionIDr
sessions4 . AUTH S CAN models various semantic restric-                          (I5) r has CSRF T okenr ∧ p has CSRF T okenr
tions, such as the same-origin policy, HTTP headers like                         (I6) Z has assoc(i, authtoken)
Referrer, cookies, secure channels (HTTPS, origin-                               (I7) i has kB ∧ r has kB
specified postMessage), and insecure channels (HTTP,                            SP C(i) Protocol
unchecked postMessages), before querying off-the-                               SC1: BeginInit(j)
                                                                                SC2: NewAssoc({p, i}, assoc(j, spid))
shelf verification tools for precise reasoning, as detailed                     SC3: Send(r,{[assoc(j, spid), next]}kB ) // Step ¬
in [17]. Off-the-shelf verification tools verify these secu-                    SC4: Receive(r,{[M, N, {[M, N ]}k−1      ]}kB ) //Step ¯
                                                                                                                  IDP S
rity properties and generate counterexamples which violate                      SC5: Send(j,[M, N ]) //Step °
                                                                                SC6: EndInit(j)
the properties. The counterexamples serve as unconfirmed
                                                                                SP S(j) Protocol
or candidate attacks.
                                                                                SS1: BeginRespond(i)
    The last step of AUTH S CAN is attack confirmation step.                    SS2: Receive(i,[M, assoc(M, N )]) //Step °
In principle, our techniques can generate imprecise protocol                    SS3: EndRespond(i)
specifications; therefore, some of the candidate attacks may                    IDP C(r) Protocol
not be true security flaws. AUTH S CAN can confirm HTTP                         IC1: Receive(i,{X, Y }kB ) //Step ¬
attacks by converting counterexamples into HTTP network                         IC2: Send(p,{{X, sessionIDr , CSRF T okenr }}key(r,p) ) //Step ­
                                                                                IC3: Receive(p,{{M, N, P }}key(r,p) )//Step ®
traffic, relaying them in a live setting and confirming true                    IC4: Send(Y,{[M, N, P ]}kB )//Step ¯
positives using the analyst-specified oracle. In the cases                      IDP S(p) Protocol
where AUTH S CAN does not know the attacker’s knowledge                          IS1: Receive(r,{{assoc(T, U ), sessionIDr ,
set enough to generate confirmed attacks, it generates secu-                          CSRF T okenr }}key(r,p) ) //Step ­
rity warnings containing precise communication tokens that                       IS2: NewAssoc({p, j}, assoc(i, authtoken))
                                                                                 IS3: Send(r,{i, assoc(i, authtoken),
need to be manually reviewed by the security analyst.                                 {[i, assoc(i, authtoken)]}k−1    }key(r,p) ) //Step ®
                                                                                                                  IDP S
3.2    Target Model Language
                                                                               Figure 3: The TML model of running example in Figure 1. M, N,
    The semantics of our inferred authentication protocol                      P, T and U are variables. I2 and the session keys in IC2, IC3,
is represented in an abstract language called Target Model                     IS1 and IS3 model HTTPS communication. Cross domain re-
Language (TML). TML serves as a bridge between protocol                        strictions by the browser’s SOP are modeled as encryption using
implementations and formal models supported by verifica-                       the key kB (initialized in I7). j and p are identities of SP and IDP
tion tools. It captures enough implementation-level details                    respectively, i.e., their domains. The behavior of Alice is modeled
to check correctness, and at the same time, it can be trans-                   together on SP client side, thus i stands for Alice’s uEmail which
lated into formal specifications that can be used as inputs to                 is Alice’s identity. sessionID and CSRFToken have been in-
off-the-shelf security protocol verification tools.                            ferred to be nonces (I4 and I5). The authToken is inferred to
                                                                               be guessable (I6).
    We design TML based on the language proposed by
Woo and Lam [44], referred as WL model in this work;                           (Init, P roSet). The P roSet is a set of local protocols
we add new extensions which are necessary for our pro-                         {P1 (X1 ), P2 (X2 ), . . . Pi (Xi )}, where each local protocol
tocol inference. We explain the TML semantics in an intu-                      Pi is executed by a protocol participant Xi . The local pro-
itive way here to ease understanding; the terminology used                     tocol specifies a sequence of actions that one participant can
(underlined) has precise semantics as defined in WL [44].                      perform. The complete specification is characterized by a
The TML representation of our running example is shown                         set of local protocols to be executed by multiple partici-
in Figure 3.                                                                   pants. Xi are variables in the schema that may be instan-
TML Syntax. TML represents an authentication pro-                              tiated by concrete principals (such as idp.com) in a pro-
tocol as a protocol schema. AUTH S CAN observes sev-                           tocol instance. The second part of the protocol schema is
eral concrete executions of a protocol, each of which is                       a set of initial conditions Init, such as the initial knowledge
an instantiation of the protocol schema—for instance, our                      set of each protocol participant prior to the start of the pro-
running example is an instantiation of our target proto-                       tocol. In the TML of our running example (Figure 3), we
col with two specific participants namely idp.com and                          infer 7 initial conditions (I1-I7); we explain how these
sp.com. Formally, the protocol schema is a 2-tuple                             are derived during protocol extraction in Section 4.
    4 In this paper, we only use ProVerif to explain our idea. Bounded-state   Actions. In executing a local protocol, the participant
model checkers like AVISPA [10] can also be used but are not implemented       executes a sequence of actions. Actions can be either
as backends yet.                                                               communication actions, which send/receive messages with
                Table 1: The Action Schema in IML                             tion function [·, ..., ·], the set construction function {·, ..., ·}
                                                                              and the arithmetic functions (+,−,/,∗, and modulo). The
   BeginInit(r)             NewNonce(n)
                                                                              public key and private key of a principal P are denoted by
   EndInit(r)               NewSecret(S, n)
   BeginRespond(i)          Accept(N )
                                                                              kP and kP−1 , respectively. The symmetric key shared by
   EndRespond(i)            NewKeyPair(k, k−1 )                               principles P and Q is denoted by key(P, Q). A term is
   Send(p, M )              NewAssoc(S, assoc(m1 , . . . , mn ) )             ground if it only consists of constants and function sym-
   Receive(p, M )                                                             bols. Finally, variable symbols represent terms which are
                                                                              not ground.
other participants, or internal actions which result in updat-                    We aim to recover the precise relationships between
ing local state (or, formally the knowledge set) of that par-                 terms exchanged in the protocol. For example, our anal-
ticipant. These actions are listed in Table 1. The semantics                  ysis infers that the value of idpSign is the signature of
of these actions are fairly intuitive as their names suggest,                 uEmail concatenated with authToken, as can be seen at
with the exception of NewAssoc which is explained later                       line 27 of the running example—this translates to the state-
in this section. For example, BeginInit(r) states that an                     ment labelled IS3 in Figure 3. If a participant receives a
initiator of the protocol begins its role with a responder r.                 data element whose precise semantics is not known by the
EndInit(r) states that the initiator ends the protocol with                   receiver, we represent this data as a variable in TML. For
the responder r; BeginRespond(i) and EndRespond(i)                            example, consider SC4 in Figure 3, we model the messages
are similarly defined with i being the initiator. Send(p, M )                 on the receiver side as variables M and N ; the participant
or Receive(p, M ) means sending or receiving M to/from                        Xi executing local protocol Pi in the schema is a variable;
p, respectively. NewNonce(n) is the action of generating                      the responder r in the BeginInit(r) is also a variable which
a nonce. NewKeyPair(k, k −1 ) is the action of generating                     will be instantiated with concrete values in an execution in-
an asymmetric key pair, where k is the public key and k −1                    stance of a protocol schema.
is the private key. NewSecret(S, n) indicates the action                      New Extensions in TML. TML extends the WL model
of generating a secret, which is intended to be shared with                   with three new extensions. The semantics of other opera-
(or distributed to) a set of principals S. Secrets can be data                tions are defined in the WL model; we discuss why these ex-
elements such as shared session keys. The secret distribu-                    tensions are needed. The first extension is arithmetic func-
tion is only complete when all participants for whom the                      tion symbols. These operations are often utilized in generat-
secret is intended have explicitly executed the Accept(N )                    ing sequence numbers from nonces, and, often lead to weak
action. Note that a participant following a local protocol                    or predictable tokens. Our TML can capture such weak con-
only executes an action after it executes the preceding ac-                   structions and subject them to testing.
tion state in the schema. As a result of executing certain ac-                    The second extension is a function symbol called asso-
tions, such as NewNonce and Accept, participants update                       ciation relation, which is written as assoc(m1 , . . . , mn ) to
their knowledge sets. Intuitively, a participant’s knowledge                  associate n variables, m1 to mn . Association relation is
set includes the data terms that it possesses or can com-                     necessary because while reconstructing the semantics from
pute, which can be used by the participant in communica-                      implementations, we sometimes cannot infer the exact rela-
tion messages. The attacker, denoted by the principal Z                       tion between the terms even though we can infer that they
throughout this paper, is assumed to follow no local pro-                     are related. For instance, in the running example, we can
tocol and is free to execute any action at any step under the                 infer that authToken (line 14, Figure 2) does not change
constraints of its knowledge set and the capability of the                    during the sessions of the same user, and hence it is related
assumed attacker model.                                                       to the user’s identity, but the exact semantic relation is un-
Terms. We aim to recover as much semantics of the data                        known. In this scenario, AUTH S CAN generates an associa-
exchanged and the internal state maintained for each par-                     tion assoc(i, authtoken) to indicate that the two terms are
ticipant as possible. To characterize these semantics, TML                    related as a key-value pair, but without the exact relation
provides three kinds of terms: constant symbols, function                     known.
symbols and variable symbols5 . Constant symbols include                          The third extension we introduce in TML is an inter-
names of principals (web origins), nonces, keys and integer                   nal action called NewAssoc(S, assoc(m1 , . . . , mn )). This
constants. Function symbols include the encryption func-                      action means that the association assoc(m1 , . . . , mn ) is
tion {·} , the shared key function key(·, ·), the concatena-                  known or becomes shared among the principals listed in the
                                                                              set S. To see why the sharing among S is needed, consider
    5 This typesetting is kept consistent with the WL model paper [44]. The
                                                                              the following scenario. Principals P and Q possess a mu-
constant symbols are typeset in Sans Serif font, the adversary is referred
to as the principal Z and the universe of principals is the set SYS. Lower
                                                                              tual shared secret k, that is known prior to the execution.
case variables stand for terms that are constant symbols, while upper case    P sends Q a message m in the client browser, both par-
variables stand for arbitrary terms.                                          ticipants send m back to their backend servers, and their
                                                                         Security
servers later respond with entity {m}k in subsequent HTTP                Analyst                         Principals
messages observed in the browser. AUTH S CAN observes
that P and Q compute the same term from m in the code                   Initial                       Local Trace Pool                 TML
hidden on their servers, but it cannot infer the exact rela-          Knowledge      Test
                                                                                    Traces                      ……                    model
tion between {m}k and m because it does not know that
k is a pre-exchanged shared secret. Under such situations,
                                                                                                            Hybrid Inference
AUTH S CAN introduces a NewAssoc action in the inferred
                                                                             Abstraction                                           Differential
protocol schema to specify that this association is known to                Initialization         Program Analysis      Fuzzing
                                                                                                                                    Analysis
both P and Q. The step SC2 in Figure 3 shows how this
relation is captured at TML.
   We define the semantics for these extensions, which
                                                                            Figure 4: AUTH S CAN’s protocol extraction process
extends the original semantic model of the WL model
in the following way. We introduce an association ta-
ble for each principal to record the principal’s knowl-            Algorithm 1 Abstraction Refinement Algorithm
edge of associations. When a principal executes NewAs-             Require: InitK: initial knowledge, t: test trace
soc(S, assoc(m1 , . . . , mn )), the assoc(m1 , . . . , mn ) is    Ensure: P S: protocol schema
added into the association table of each principal in S. Note       1: (Init, P roSet) ← absInit(t, InitK);
that the attacker (i.e., Z) is not allowed to update the asso-      2: P  roSetold ← null;
                                                                        Security
                                                                        Analyst                     Principals
                                                                    3: trP   ool: a trace list, initially empty
ciation table. When a principal receives an association, it
                                                                    4: while P roSet 6= P roSetold do
checks implicitly if the association is stored in its table.
                                                                    5: Initial
                                                                           P roSetold ← P roSet; Local Trace Pool
Assumptions in TML. We make the following assumptions                  Knowledge One Test                  ……P roSet);
                                                                    6:     P roSet      ← JSAnalysis(t,
                                                                                     Case
in TML.                                                             7:     (P roSet, T ) ← Blackbox(t, P roSet, InitK, trP ool);
                                                                    8:     trP ool.add(T );
    • Correct Cryptographic Algorithms. TML assumes                                                     Hybrid Inference
                                                                    9: end while
      that the cryptographic algorithms used in the protocol                Abstraction
                                                                   10: return                Program Analysis
                                                                                   (Init, P roSet);
                                                                           Initialization                            Fuzzing Differential
                                                                                                                              Analysis
      are ideal. We do not aim to detect vulnerabilities in the
      implementations of the cryptographic primitives.
    • Distinct Secret Keys and Nonces. TML assumes the                                   Initial
                                                                   ence technique    discussed inTML
                                                                                 Abstraction       this section.  During each iter-
                                                                                                          Refinement
      encryption/decryption keys are kept secret prior to the
                                                                   ation of the hybrid inference,
                                                                                               modelAUTH S CAN gradually refines
      protocol, and are distinct (i.e., cannot be guessed).
                                                                   the semantics of terms and actions of the protocol schema
    • Knowledge of Principals. We make the assumption
                                                                   until no new semantics can be discovered.
      on the knowledge of the principals: Each principal
      knows the identifiers or names of other principals (rep-     4.2      Protocol Refinement Algorithm
      resented as (I1) in Figure 3). This assumes that the
      DNS infrastructure has no vulnerability.                         The protocol refinement algorithm is shown in Algo-
                                                                   rithm 1. The inputs of the algorithm are the initial knowl-
4     Protocol Extraction Techniques                               edge InitK (i.e., the test harness, protocol participants
                                                                   & public keys of participants and oracle, outlined in Sec-
   In this section, we give the details of the proposed hybrid     tion 2.3), and a trace t generated from one test case. A
inference approach to address the challenges in Section 2.2.       trace is a sequence of messages (a0 , a1 , ..., an ), where ai
                                                                   represents either an HTTP(S) request, response (which may
4.1    Overview of Protocol Extraction                             contain JavaScript programs), or a cross-domain commu-
    Our protocol extraction technique operates on the input        nication message over postMessage. We refer to all
test harness, one test case at a time. Figure 4 shows an           data exchanged in the trace as HTTP data, which includes
overview of the protocol extraction process. As the first          HTTP parameters, cookies, postMessage data, HTML
step, the abstraction initialization component in our system       form data, JSON data, and so on. AUTH S CAN’s trace cap-
creates an initial abstraction of the protocol from the first      turing step identifies the HTTP(S) request/response pairs
test case in the test harness. It takes HTTP traces (captured      from the trace. The output of the algorithm is one inferred
by our trace capturing component shown in Figure 2) and            protocol schema.
the initial knowledge provided by the analyst as inputs. The           Our refinement algorithm (Algorithm 1) has two steps:
initial abstraction of the inferred protocol is in the form of a   abstraction initialization (line 1) and refinement pro-
TML protocol schema (Init, P roSet). By utilizing the test         cess (line 4-9). The absInit method (line 1) returns an
cases from the test harness one-by-one, AUTH S CAN itera-          abstract protocol schema (Init, P roSet). Init is a set of
tively refines the abstract protocol using our hybrid infer-       predicates, which stands for the initial knowledge of the
principals. Some of these are derived from the assump-           the symbolic formulae, AUTH S CAN needs to identify
tions of TML (outlined in Section 3.2), e.g., I1 − I3 shown      JavaScript functions implementing cryptographic signature,
in Figure 3. Other TML terms model the communication             encryption, random number generation, public key fetch-
channels that are used in the protocol. For example, to          ing functions and so on. From the above symbolic formu-
model the HTTPS channels and cross-domain communica-             lae example, JSAnalysis can identify that idpSign is
tion channels, we internally introduce symmetric keys (I6        the TML term {[uEmail, authT oken]}k−1 , once AUTH -
                                                                                                               IDP
in Figure 3), as we explain in Section 5.2. For every mes-       S CAN knows that the semantics of the JavaScript procedure
sage a in test trace t, if the sender or the receiver of a is    verify(data, sig, key). By default, AUTH S CAN identi-
not contained in P roSet, absInit inserts a new local pro-       fies these functions based on its built-in list of browser APIs
tocol into the P roSet. Then, absInit adds two communi-          and JavaScript libraries that provide such functions [4].
cation actions (Send and Receive) into the sender’s and          AUTH S CAN tries to concretely match the semantics of all
receiver’s protocol, respectively. In addition, absInit can      symbolic terms identified as uninterpreted functions in the
identify some constant terms in the HTTP data, such as           symbolic formulae to one of known cryptographic func-
the domains of principals, user accounts and public keys of      tions in its built-in list. For example, AUTH S CAN can test
web sites available as the security analyst’s inputs to AUTH -   verify with the same inputs as the standard RSA signa-
S CAN. AUTH S CAN identifies them by matching the value          ture verification function from its built-in list and compare
of HTTP data with the values in the analyst’s inputs. For        the outputs. Security analysts can also provide annotations
example, i, r and kIDP S are identified in this way; they        for source code functions to identify custom implementa-
stand for the identity of SP, the identity of IDP and the pub-   tions of standard cryptographic primitives, in case the de-
lic key of IDP, respectively. At the end of this step, other     fault list is not sufficient. In this way, several variables are
HTTP data, which cannot be inferred here, are represented        replaced with newly inferred TML terms in this step. For an
as variable terms whose semantics are inferred in the refine-    uninterpreted function whose semantics cannot be inferred
ment process explained next. The Begin* and End* events          in this step, AUTH S CAN uses an assoc to represent it. The
are also inserted into the local protocols indicating the SP’s   assoc associates the output of the function with the inputs.
client and server.                                                  Based on the extracted symbolic formulae, JSAnalysis
    In the refinement step (line 5-8), AUTH S CAN refines the    infers the function terms and some internal actions in local
initial abstraction by utilizing more test cases. This step      protocols. For example, if an HTTP data is identified as
combines whitebox symbolic analysis (JSAnalysis at line          a session key, AUTH S CAN treates the principal which first
6) and a blackbox analysis (Blackbox at line 7).                 sends it in the communication as generator of this session
Whitebox Program Analysis. The JSAnalysis proce-                 key. AUTH S CAN infers that this principal has performed
dure uses dynamic symbolic analysis (at line 6) to infer         a NewSecret action and the principals which receive it
the function terms and the internal actions of the principals.   have performed Accept actions. If a principal invokes an
Dynamic symbolic analysis (similar to previous work [35])        asymmetric key pair generation function, AUTH S CAN adds
is used to obtain symbolic formulae which capture the re-        a NewKeyPair action to the principal’s protocol.
lations among the HTTP data. These symbolic formulae
                                                                 Blackbox Differential Fuzzing Analysis. The blackbox
are over the theory of TML terms, which include arith-
                                                                 analysis (at line 7) further refines the output of the white-
metic operations, concatenation function, cryptographic op-
                                                                 box analysis by trying to infer more TML terms and actions
erations and uninterpreted functions. We introduce unin-
                                                                 while treating the participant implementations as a black-
terpreted functions to model semantics unknown function
                                                                 box. Our blackbox differential fuzzing analysis takes as in-
calls, such as calls to browser APIs or JavaScript functions
                                                                 put the trace t, the refined abstraction after whitebox anal-
which have many arithmetic and bitwise operations charac-
                                                                 ysis, and the initial knowledge InitK. The first substep
teristic of cryptographic operations. For the code fragment
                                                                 in blackbox fuzzing is to remove certain redundant data
marked B in our running example (Figure 1), if the input
                                                                 to make blackbox testing more efficient. Next, the black-
value for the variable event.data is a string “u&t&s”,
                                                                 box inference algorithm infers TML terms in two ways: for
the following symbolic formulae are generated by this step:
                                                                 some terms, it generates “probe” messages and compares
      (1) uEmail := u;          (2) authT oken := t;             the outputs, whereas for other terms, it merely makes the
      (3) idpSign := s;         (4) data := [u, t];              inference based on the observed traces without generating
      (5) idpP ubKey := loadP ubKey();                           new probes. We describe the redundant data elimination,
      (6) verif y([u, t], s, idpP ubKey);                        probe-based inference and non-probe-based inference sub-
                                                                 step separately. In each iteration of the blackbox fuzzing
      (7) message := [u, t];
                                                                 step, AUTH S CAN internally generates new traces and keeps
      (8) request := $.ajax(login, [u, t]);                      them in a local trace pool (trP ool in Algorithm 1). These
   To precisely identify cryptographic function terms in         traces are not fed back to the initial test harness, and are
used only during the blackbox and whitebox steps.                  a substring matching between its instances across various
    Eliminating Redundant Data. The goal of this step is           traces and extracts the parts that are not common between
to identify HTTP data that do not contribute towards the           these instances. AUTH S CAN then checks if these values
authentication protocol. In this step, we check each HTTP          form simple arithmetic sequences adding or subtracting a
data element by generating a probe message with this ele-          constant. If the function is identified, AUTH S CAN treats
ment removed. If the probe message results in a success-           it as a guessable token, and confirms it by predicating its
ful authentication, we remove the element and all of its oc-       value and probing the server (discussed in Section 5.3). We
currences in previous messages. AUTH S CAN performs this           plan to integrate more powerful off-the-shelf tools, such as
operation iteratively for each request/response pairs starting     Wolfram Alpha, which take such value sequences as inputs
from the last pair and proceeding backwards in t.                  and output a closed form arithmetic expression to match
    Probe-based Inference. The main idea of this fuzzing           it [11]. AUTH S CAN also marks any data value which is
step is to mutate or remove the HTTP data in the request           too short (L ≤ 4 characters by default and configurable) as
messages of t, while keeping others unchanged. These               guessable short-length tokens, as these values may be sub-
modified “probe” messages are sent to the protocol par-            ject to exhaustive search. For example, in the case where
ticipants and their responses are compared for differences.        L = 4, the search space is less than 2 million ((10 + 26)4 ),
In addition, to prevent the explosion of number of HTTP            assuming that the term only consists of case-insensitive
traces, we capture at most three traces for each test user         alpha-numeric characters; AUTH S CAN presently does not
account and at most 10 test user accounts for each web             actually generate these probes but models such values as
site. AUTH S CAN identifies the semantics of several types         attacker’s knowledge (as detailed in Section 5.2), and gen-
of HTTP data: URLs, HTTP parameters, web addresses,                erates security warnings.
JSON data, JSON Web tokens, and web cookies. To do                     Next, AUTH S CAN infers two kinds of associations using
this identification, it uses simple pattern matching rules over    techniques similar to those proposed by Wang et. al. [42].
the values of the data. For instance, a string which has           One kind of association is among HTTP data. AUTH S CAN
sub-strings separated by “&”, with each segment as a key-          replaces the value of an HTTP data x in message ai , while
value pair separated by a “=”, is treated as an HTTP pa-           keeping the rest unchanged. Then it sends this “probe” mes-
rameter list. Similar syntactic properties are used for com-       sage and compares the response message. If HTTP response
mon web objects such as JSONs, JWT, cookies and so on.            ~y changes, AUTH S CAN introduces an assoc(x, ~y ). Other
Once the HTTP data type is inferred, AUTH S CAN makes              kinds of association relations are between HTTP data and
use of the type information to speed up the fuzzing pro-           a web principal or users. Similarly, AUTH S CAN identifies
cess. For example, if AUTH S CAN infers that a string is           these associations by using differential analysis on multi-
an HTTP parameter-value list, it mutates each key value            ple traces. The HTTP data which remain constant among
pair in this string separately. Similarly, if AUTH S CAN           the same user’s multiple sessions are inferred to be asso-
infers that a string represents a user identity (like user-        ciated to the user; those remaining constant among dif-
names) or a web address, it mutates the value of this HTTP         ferent users’ sessions are inferred to be associated with
data into another user’s ID or another web address, in-            a web principal (such as the SP or IDP). All remaining
stead of trying random modifications. AUTH S CAN also in-          HTTP data that change in all such probes are inferred to
corporates simple pattern-matching rules to identify if val-       be nonces (NewNonce), such as session IDs.
ues are encoded using common encoding methods such                     Identifying Association Principals. The S in NewAs-
as URLEncode/URLDecode, Base64-encode, HexEncode,                  soc(S,...) stands for the principals who share the knowledge
HTMLEncode and JavaScript string literal encode, based             of the association terms. AUTH S CAN identifies these prin-
on the use of special characters. For an HTTP data with            cipals by observing which terms in an assoc appear in the
completely unknown semantics, AUTH S CAN uses pattern-             responses from the protocol participants. Then, it probes
matching techniques to label it as one of primitive types          these participants by replacing the associated terms with
(Integer, Bool, or String).                                        random values. If a principal rejects the fuzzing message,
    Once the basic types are identified, AUTH S CAN then in-       we infer that it knows how to compute the relationship, and
fers the TML terms and actions. From the traces in the local       add a NewAssoc with these participants in S.
trace pool, AUTH S CAN attempts to first identify arithmetic           Non-Probe Based Inference. The non-probe based in-
function terms, which in turn enables the modeling of weak         ference infers three kinds of function symbols: crypto-
or guessable tokens. For Integer- or String- typed value           graphic functions, set functions and concatenation func-
of an HTTP data parameter that change across sessions,             tions. AUTH S CAN employs brute-force search to identify
AUTH S CAN uses the following mechanism to check if it             cryptographic functions. It takes every combination of all
is generated using a predictable arithmetic function. Given        HTTP data elements and checks if they can be used as in-
such a string value (say str), AUTH S CAN first conducts           puts to a standard cryptographic primitive to produce an-
other data element. We bound the function nesting depth           used for authentication (such as the sessionID in the run-
of terms to be less than 5. In our experiments, we find that      ning example); the attack analyst can add more queries to
this bound is reasonable since all our analyzed protocols         check the secrecy of other terms, for example, credentials
do not use no more than 4 levels of nesting cryptographic         for resource access (such as OAuth token in OAuth 2.0). For
constructions. This search strategy has been sufficient in        long-lived tokens, AUTH S CAN adds them to Z’s knowledge
practice for our experiments on real-world protocols. For         set before querying ProVerif. In general, Z may know a
example, as discussed in our BrowserID case study (Sec-           long-lived token’s value (through external knowledge) even
tion 6), AUTH S CAN successfully identities that one HTTP         if it is not sent on a public channel; AUTH S CAN conserva-
data element is signed by the IDP, and that the signed el-        tively models this scenario and raises a security warning to
ements are the ID and the user’s public key. AUTH S CAN           alert the analyst. For guessable tokens, AUTH S CAN adds
identifies the concatenation functions by using a substring       the outputs of the arithmetic operations to Z’s knowledge
search over all combinations of HTTP data elements. For           set. In the attack confirmation step, these guessable values
the set construction functions, if a single message contains      are computed and used as we detail in Section 5.3.
multiple data, AUTH S CAN assigns them to a set.
                                                                  5.2   Attacker Models
5     Protocol Analysis & Attack Confirmation
                                                                      In this work, we consider two different attacker models,
   After extracting a TML model, AUTH S CAN translates            namely the network attacker [24] and the web attacker [15].
it into applied pi-calculus, which is taken as input to           Previous work (e.g., [17]) has shown that these attackers
ProVerif [18] to check security properties against attack         can be captured in ProVerif. Hence, we ignore the detailed
models. Due to space constraints, we leave the details of         modeling and just give an overview in this section. For ex-
this process to Appendix C; and in this section, we discuss       ample, attacker model in the running example is demon-
the security properties, attacker models and how candidate        strated in Appendix C. Note that both the attacker models
attacks are checked to confirm security flaws.                    are checked individually in AUTH S CAN, since ProVerif ter-
                                                                  minates after finding a counterexample.
5.1    Security Properties
                                                                  Network Attacker. We model the network attacker us-
    By default, AUTH S CAN checks the correctness of              ing the Dolev-Yao model [24], that is, an active network
two essential security properties in its applied pi-calculus      attacker is able to eavesdrop all messages and control the
version, authentication of an authentication protocol [44]        contents of unencrypted messages in the public network un-
and secrecy of credential tokens. A protocol achieves             der the constraints of cryptographic primitives. In TML, we
authentication if each principal is sure about the identity       model HTTPS by assuming that the SSL certificate check-
of the principal whom it is communicating with. Authen-           ing and handshake are complete before the protocol starts;
tication is checked using injective correspondence ( ,            we model the session key between the two communicating
or injective agreement) [19, 20, 32, 44], which can check         principals x and y with a key function key(x, y) (I2 in
whether two local protocols are executing in “lock-step”          Figure 3). In applied pi-calculus, we model HTTPS using
fashion, i.e., whether there is an injective mapping between      private channels, which are neither readable nor writable by
the execution of two participant’s protocols. For instance,       the attacker (shown in Appendix C). Note that modeling the
in our running example, whenever finishing executing              HTTP network attacker is available from ProVerif directly.
EndRespond(i), SP S believes that SP C has executed the           Web Attacker. We also reuse web attacker models de-
protocol with him; thus, to guarantee authentication, SP C        scribed in prior work [15, 17]. These models include mod-
must have executed BeginInit(j), i.e., EndRespond(i) Be-          eling the same-origin restrictions; for example, the fact that
ginInit(j) (inj-event(EndRespond(i))==>inj-                       client-side SP code cannot intercept IDP server’s messages
event(BeginInit(j)) in applied pi-calculus). Au-                  is implied in the applied pi-calculus semantics that the lo-
thentication is violated if SP S believes SP C has executed       cal variables of a process are inaccessible by another pro-
the protocol with him, but actually it is Z who has.              cess. We model HTTP headers like Referrer which cor-
    Additionally, an authentication protocol may introduce        respond to the client-side code sending its identity in the
some credentials and thus secrecy of them needs to be guar-       messages; of course, if the header is not checked by the
anteed. Secrecy is defined as querying a term from the at-        server, it will not be inferred in our specification as it is re-
tacker Z’s knowledge set [44]. The secrecy of a term a is         moved as a redundant element. We also model the seman-
specified as Z has a (query attacker(a) in applied                tics of postMessage by encrypting all messages trans-
pi-calculus), which queries whether a is derivable by Z af-       mitted through postMessage with a key (kB in IC4 and
ter the execution of the authentication protocols. If Z has a     SC4, Figure 3). If AUTH S CAN finds (by whitebox analysis)
after the protocol, the protocol fails to guarantee the secrecy   that the receiver or sender origin fields are not checked,
of a. By default, AUTH S CAN checks the secrecy of terms          it casts kB to the attacker such that the attacker is able
to read and write the postMessage channel. The anti-              6.1   Evaluation Subjects
CSRF tokens are not needed to be explicitly modeled in the            To estimate the effectiveness of AUTH S CAN on real-
attacker model as they are observed in the HTTP network           world protocols, we test several implementations of popu-
messages and are inferred to be nonces if they are relevant       lar SSO protocols and standalone web sites that implement
to the protocol (I4 and I5 in Figure 3). We assume that the       their custom authentication logic. The inferred protocols
attacker has the ability to redirect the user agent to a ma-      are presented in Appendix B.2. Our results are summarized
licious web site. We do not model web attackers with the          in Table 2.
ability to perform Cross-Site Scripting (XSS) attacks and         BrowerID. BrowserID [2] is an SSO service proposed by
complex social-engineering attacks in this work.                  Mozilla, which is used by several Mozilla-based services
5.3    Candidate Attack Confirmation                              such as BugZilla and MDN, as well as some other service
                                                                  providers. We test three different SP implementations of
    AUTH S CAN confirms candidate attacks generated by            BrowserID. Although BrowserID is open-source, most of
ProVerif in this step. If a protocol fails to satisfy the secu-   protocols do not provide the detailed implementation on the
rity properties, ProVerif generates a counterexample, which       server-side. To account for this, we only take into consid-
consists of the attacker’s actions, the attacker’s input/output   eration the client-side JavaScript code and HTTP messages
and details the terms computed by Z at each step using it’s       to make our analysis approach more general. AUTH S CAN
knowledge set at that step. AUTH S CAN re-constructs the          manages to infer the general protocol specification from
candidate attack probe from this information. For all terms       these three implementations, finding only one crucial differ-
computed at each step, AUTH S CAN substitutes the concrete        ence across the implementations (explained in Section 6.2).
values for these terms. For guessable tokens that are com-        Facebook Connect. Facebook Connect [3] is one of the
puted from arithmetic functions, AUTH S CAN evaluates the         most widely used incarnations of the OAuth 2.0 published
function to calculate the next concrete value. For short-         by Facebook. We test two SP web sites using this protocol.
size guessable tokens, AUTH S CAN only raises a security          The experiments are conducted on the basis of client-side
warning. To map symbols and variables in ProVerif coun-           JavaScript code and HTTP messages. AUTH S CAN infers
terexamples to concrete values observed in the HTTP traces,       the general protocol specification successfully.
AUTH S CAN maintains the mapping between the original             Windows Live ID. Windows Live Messenger Connect [6]
HTTP messages and the protocol statement generated dur-           is another SSO protocol derived from the general OAuth
ing the protocol extraction. Thus, AUTH S CAN maps back           2.0 specification. We test its implementation using the Sina
a ProVerif action sequence and terms in the ProVerif coun-        Weibo service—a China-based web site similar to Twitter
terexample to the ProVerif input, which inturn is mapped          and has over 300 million users. AUTH S CAN successfully
to the raw HTTP message. Once the messages are con-               extracts the protocol from this implementation; we skip the
structed, AUTH S CAN replays the candidate attack probe.          protocol diagram (which is similar to Facebook Connect)
During this process, it queries the oracle provided by the        for the sake of space.
analyst to check whether the attack is successful.                Standalone Web Sites. We also test two standalone sites,
    Currently, AUTH S CAN automates confirmation of at-           where users share deeply personal information, both of
tacks over HTTP, over postmessage and via a web                   which have from hundreds of thousands to millions of users
attacker-controlled iframe. In cases which AUTH S CAN             and utilize custom authorization mechanisms. AUTH S CAN
cannot confirm with concrete attack instances, it reports se-     uncovers the custom authentication protocol for both sites.
curity warnings containing the communicated data it sus-
pects. Such cases include the use of long-lived token in au-      6.2   Protocol Analysis and Vulnerabilities
thentication, secrecy of which is not known in the inferred          We test AUTH S CAN on 8 implementations (as shown in
protocol but conservatively modeled as discussed in Sec-          Table 2). We successfully find 7 security vulnerabilities, all
tion 5.2, and the use of guessable short-length tokens.           of which we have responsibly disclosed to the developers
6     Evaluation                                                  of the web sites. For the sake of space, we leave the details
                                                                  on how AUTH S CAN extracts protocol specification to Ap-
   We have built an implementation of AUTH S CAN in ap-           pendix B.1; and in this section, we briefly present the found
proximately 5K lines of C# code, and 3K lines of JavaScript       vulnerabilities in the protocol implementations.
code. The HTTP trace recording and blackbox fuzzing               Setup. In our experiment, the input and configuration to
functionalities are implemented in a Firefox add-on. The          AUTH S CAN include:
JavaScript trace extraction is implemented by instrument-
ing the web browser to generate execution traces in a format        • Test harness. The security analyst is required to input
similar to JASIL [36]. We developed our own implementa-               two pre-registered user accounts (for example, email
tion of dynamic symbolic analysis for extracting the TML              and password in BrowserID), except for the Iyer-
terms from the execution traces.                                      Matrimony case in which five are needed.
                                                         Table 2: Statistics in our experiments

Column 2: ratio of messages filtered out by AUTH S CAN w.r.t. the total number of messages occurred in the protocol; Column 3: ratio of parameters filtered
out by AUTH S CAN w.r.t. the total number of parameters used in the messages; Column 4: total execution time of AUTH S CAN; Column 5: verification time
of running ProVerif without and with filtering of the messages or HTTP data, under the network attacker, where “-” means nontermination in verification;
Column 6: number of rounds; Column 7: number of bugs found in each web site (with repeats); there are 7 distinct (without over-counting) vulnerabilities.
                                       % Redundant            % Redundant                         Verification Time (s)    Fuzzing
          Web Sites                                                                   Time(s)                                          #Bugs
                                       Msgs (Total Msgs)      Elems (Total Elems)                 WO (W Filter) Filter     Rounds
          myfavoritebeer.com           88% (80)               50% (12)                113         204/3.0                  20          2
          openphoto.me                 82% (93)               75% (24)                72          726/3.0                  22          2
          developer.mozilla.org        87% (127)              74% (23)                96          -/3.0                    28          0
          ebayclassifieds.com          72% (58)               57% (152)               127a        -/58.7                   107         2
          familybuilder.com            97% (290)              51% (144)               110a        -/58.7                   77          1
          weibo.com                    97% (176)              98% (52)                30          0.36/0.03                78          1
          iyermatrimony.com            98% (120)              67% (9)                 5.33        1.14/0.04                510         1
          meetingmillionaires.com      96% (54)               0% (5)                  4.72        1.05/0.04                30          1
          a   The period that AUTH S CAN halts until Facebook allows to resume fuzzing is not taken into account.


   • Protocol principals & public keys. For the SSO im-                          any session-specific nonce. We recorded a video to demon-
     plementation (including BrowserID, Facebook Con-                            strate that the attack works and proposed to add a nonce in
     nect and Windows Live ID), the analyst needs                                the signature to solve this problem [1]. We have notified
     to indicate domains of IDP and SP (for exam-                                Mozilla about our finding and Mozilla acknowledged the
     ple, in BrowserID case,           persona.org and                           security flaw.
     myfavoritebeer.org, respectively). For the                                  CSRF Attack in BrowserID. AUTH S CAN identifies
     standalone web sites, the analyst needs to indicate the                     and confirms a replay attack in the web attacker
     domains of the tested sites. In both cases, the public                      model. AUTH S CAN reports this attack on two of the
     keys of the participants need to be provided if HTTPS                       BrowserID implementations, other than the one from
     is used in the implementation.                                              developer.mozilla.org. We have responsibly no-
   • Oracle. The analyst needs to provide an indication to                       tified the vendors of these vulnerable implementations.
     represent the successful authentication. In our experi-                     After manual analysis of the inferred protocols, we find
     ments, we provide unique strings on the response web-                       one crucial difference between the vulnerable implementa-
     page from the server such as “welcome user” to iden-                        tions from the developer.mozilla.org implementa-
     tify if the authentication succeeds.                                        tion. In the latter, SP client sends two anti-CSRF tokens
   • Cryptographic functions.        We manually annotate                        (csrfmiddlewaretoken and next which are inferred
     the cryptographic functions in the Crypto library of                        as nonces) in step 7 (Figure 6), but these are absent from
     Node.js [4], for AUTH S CAN to identify the crypto-                         the protocol schema of the vulnerable SPs implementation,
     graphic functions. We also annotate the functions in                        permitting a CSRF attack. AUTH S CAN reports that a ma-
     Mozilla jwcrypto [9], which is used in the implemen-                        licious web site can send an HTTP POST request to the
     tation of BrowserID. AUTH S CAN automatically infers                        vulnerable SPs, which do not check the Referrer fields. Us-
     cryptographic operations using its default method in                        ing this knowledge, we craft a script which can be used by
     all other case studies.                                                     the attacker to modify the content on the web pages without
                                                                                 Alice’s approval. The attack script is listed in Appendix D.
    For all cases, AUTH S CAN checks the authentication of
the protocol and secrecy of the terms used for authentica-                       Secret Token Leak in Facebook Connect. By following a
tion (such as the assertion in BrowserID, which is discussed                     similar procedure as illustrated in the case of BrowserID,
later in this section). These properties are checked against                     AUTH S CAN finds one confirmed flaw in the implemen-
the network attacker as well as the web attacker.                                tation of Facebook Connect, and another one in the us-
Replay Attack in BrowserID. In two tested implemen-                              age of Facebook Connect by one out of the two SPs we
tations of BrowserID, which use persona.org as IDP,                              tested. Both attacks leak secret tokens in the network at-
AUTH S CAN identifies and generates a confirmed replay at-                       tacker model. In this case, we report that automatic fuzzing
tack in the network attacker model. AUTH S CAN generates                         was initially difficult because Facebook blocks login failure
an attack HTTP trace in which a malicious user logs into the                     for a test username/password after 10 attempts. For this,
SP by replaying the token named assertion (message (7) in                        we manually skipped fuzzing the initial login request to the
Figure 6), without providing login credentials to the IDP.                       IDP, but tested the remaining protocol with the SPs.
The flaw leading to this attack is that the assertion is sent                        In the implementation of Facebook Connect, most of the
through an insecure channel (HTTP) and it does not contain                       communications are through HTTPS to prevent network at-
tackers from stealing the authorization tokens. However,                Guessable Token in Standalone Sites. AUTH S CAN de-
AUTH S CAN reports that the message at step 4 of Figure 6-              tects one severe vulnerability in each of the two stan-
(b) is readable to the network attackers because they are               dalone web sites: IyerMatrimony and MeetingMillionar-
transmitted through a non-HTTPS channel, so two creden-                 ies. Both of them have a significant number of registered
tials c_user and xs can be obtained by the attacker. Thus,              users, 220,000 and 1,275,000, respectively. The vulnerabil-
the protocol is subject to a replay attack similar to the one in        ity shows that both of these two web sites authenticate users
BrowserID. After our experiments, we discover that a simi-              by some guessable token. Exploiting these vulnerabilities,
lar attack against the previous version of Facebook Connect             the attacker can log into others’ accounts and get full privi-
has been reported by Miculan et al. recently [33]. We con-              lege of the victim users.
ducted our tests in the end of April 2012; Facebook fixed                   In the case of IyerMatrimony, after eliminating 7 redun-
this flaw in early May 2012 before we were able to notify               dant HTTP parameters with differential fuzzing, AUTH -
them. In Facebook’s latest implementation6 , the commu-                 S CAN gets the following packet which can be used for a
nication in this step is protected with HTTPS. We provide               successful authentication.
the HTTP/HTTPS messages captured during the execution                         http://www.iyermatrimony.com/login/
                                                                                   intermediatelogin.php?sde=U1ZsU01UZ3dOVE01
of the old version to facilitate further analysis, which can                       &sds=QdR.j/ZJEX./A&sdss=Tf/GpQpvtzuEs
be downloaded from [1]. AUTH S CAN finds the other flaw
                                                                        Through differential fuzzing, AUTH S CAN finds that sds
leading to replay attack when an SP called EbayClassifieds
                                                                        and sdss keep constant among different accounts’ multi-
uses the Facebook Connect. After completing the Facebook
                                                                        ple login sessions; for an individual account, the sde re-
Connect, the SP sends the user credentials which can be
                                                                        mains the same in its multiple sessions. Among the test
used to fetch session cookies. However, the credential is
                                                                        accounts, AUTH S CAN finds that the 14-character prefix of
also sent through a non-HTTPS channel.
                                                                        sde remains constant and only the 2-character postfix is in-
Non-secret Token in Using Windows Live ID. We tested
                                                                        cremented by one across accounts whose IDs are consecu-
AUTH S CAN on the authentication mechanism of Sina
                                                                        tive numbers. AUTH S CAN confirms this flaw by predicting
Weibo, a web site with 300 million users. It uses Win-
                                                                        the value of sde for our testing accounts and successfully
dows Live ID to authenticate users. AUTH S CAN initially
                                                                        logging into the account.
reported a security warning claiming that a long-lived to-
                                                                           In the MeetingMillionaries case study, AUTH S CAN gen-
ken (non-nonce value) is used to authenticate the user.
                                                                        erates a security warning about a short-length token used
We subsequently manually investigated this warning, and
                                                                        for authentication. We manually confirmed that this warn-
found that the long-lived token (named msn cid) reported
                                                                        ing is a security flaw and notified the developers. In this site,
by AUTH S CAN is known publicly. For example, it can
                                                                        a user can access his account information (including pass-
be obtained from various sources such as straight from
                                                                        word stored in plain text) by visiting the following URL.
the MSN user profile page (https://profile.live.
                                                                              http://app.icontact.com/icp/mmail-mprofile.pl?
com/cid-xxxx). When we added this token to the at-                            r=36958596&l=2601&s=21DS&m=318326&c=752641
tacker’s knowledge set and re-ran the experiment, AUTH -
                                                                        AUTH S CAN finds l, m and c are constant among different
S CAN was able to automatically generate an attack trace.
                                                                        users’ sessions and r is associated with the user account.
    This flow occurs after a user completes the authenti-
                                                                        s is the only credential but due to its short length (4 char-
cation with Windows Live ID, which demonstrates that
                                                                        acters), AUTH S CAN raises a warning of guessable token.
AUTH S CAN is useful for finding simple, but severe logic
                                                                        Upon our manual investigation, we find that s is an alpha-
flaws beyond the initial SSO authentication token exchange.
                                                                        numeric string. We believe that automating attack genera-
Note that manually finding these attacks is not easy; AUTH -
                                                                        tion for such tokens may be possible in the future; we tested
S CAN eliminated 18 redundant cookies with differential
                                                                        that AUTH S CAN can send about 500 requests to the server
fuzzing. The final HTTP packet which is sent from user to
                                                                        within one minute. With such capability, it would take an
Weibo web site for authentication, as constructed by AUTH -
                                                                        enhanced implementation of AUTH S CAN at most 56 hours
S CAN, sets the msn cid value to the publicly known value
                                                                        to guess the right s.
as shown below.
     GET /msn/bind.php HTTP/1.1
     Host: www.weibo.com
                                                                        6.3    Efficiency & Running Time
     Connection: keep-alive
     Cookie: msn_cid=xxxx                                               Running Time. The total analysis time for most cases is
    This vulnerability impacts all Weibo users who have ever            less than 2 minutes, and can be as low as 5 seconds. The
logged in Weibo through Windows Live Messenger. We                      verification time for ProVerif is within 1 minute in our case
have reported this security flaw to Sina Weibo. The secu-               studies. It shows that the security-relevant parts of the pro-
rity department of Sina R&D has confirmed the exploit and               tocols generated are usually small. We find that additional
posted us a gift for our contribution [1].                              source code results in the reduced number of iterations in
  6 https://s-static.ak.facebook.com/connect/xd arbiter.php?version=9   our blackbox fuzzing step. For example, in BrowserID,
the client-side code is available, therefore, the number of       and V.Tsyrklevich [40] have demonstrated several attacks
fuzzing iterations is smaller (20-30 rounds) than other SSO       such as CSRF against the OpenID protocol. Wang et al.’s
protocols (30-500 rounds as shown in the sixth column,            work [42] have conducted a field study on the commercially
Table 2). Our data shows that AUTH S CAN’s protocol ex-           deployed web SSO systems and discovered 8 serious logic
traction step is sufficient to find flaws even when much of       flaws in many notable IDPs and SPs. Xing et al. [45] have
the protocol implementation is unavailable as shown in the        attempt to protect integrators for their integration of third-
Facebook case.                                                    party SSO Web services.
Redundant Data Reduction. When querying off-the-shelf                 Some formal analysis approaches also have been used
verification tools like ProVerif, it is important to remove re-   to analyze the security of SSO protocols. Miculan and Ur-
dundant terms for better scalability. As shown in Table 2,        ban [33] manually extract specification of Facebook Con-
AUTH S CAN finds that the majority of the messages (more          nect Protocol from the HTTP messages exchaged. They
than 80%) and HTTP parameters (more than 50%) are irrel-          model the protocol in HLSPL and check it using AVISPA.
evant to the protocol and AUTH S CAN can successfully filter      Bansal et al. [17] use applied pi-calculus and ProVerif to
them out. This shows that an automatic tool is helpful in         analyze the OAuth 2.0 protocol. Their work focuses on con-
constructing the models from the complicated implementa-          structing concrete attacks from the attack trace reported by
tion details. Furthermore, this reduction helps greatly in re-    ProVerif, and building the operational web attacker model
ducing the verification time. For BrowserID, ProVerif does        library called WebSpi to map the attack trace to web-site
not terminate within one hour if we naively retain all terms      actions. Sun et al. [39] also model the web attacker pre-
exchanged in the communication. In summary, we find the           cisely. Sun et al.manually extract OpenID 2.0 implemen-
AUTH S CAN has promising scalability for real-world secu-         tation in HLPSL and verify the model using AVISPA and
rity protocol implementations.                                    found CSRF attacks. There are also other formal analy-
                                                                  sis approaches on SSO protocol. Most of them model the
7   Related Work                                                  protocol manually based on the protocol documentation or
                                                                  specification, and take into consideration only the network
Protocol Specification & Verification. Security protocol
                                                                  attack model. For example, there have been several formal
verification has been well studied in the literature. Many
                                                                  analysis approaches on SAML SSO protocols [16, 26, 28].
logics and calculi have been proposed to formally spec-
                                                                  In contrast to these work, AUTH S CAN looks at the security
ify the security protocols and security properties, such as
                                                                  flaws in the implementations.
BAN logic [13, 21], WL model [44], Spi-calculus [12]. A
number of automatic verification tools have been developed
                                                                  8   Conclusion
and used to check the correctness of the security proto-
cols, such as Athena [37], ProVerif [18], Murphi [34] and             We present AUTH S CAN, an end-to-end platform to au-
AVISPA [10]. These works focus on verifying the high-             tomatically recover authentication protocol specifications
level specifications of the security protocols. However, our      from their implementations. AUTH S CAN has successfully
approach focuses on how to extract the high-level protocol        detected 7 security vulnerabilities in real-world applications
specification from the implementations.                           automatically. Our techniques assume no knowledge of the
Protocol Extraction. Works on automatically extracting            protocol specifications being checked and rely on a small set
models from the protocol implementations are most related         of practical assumptions. We hope further research can lead
to this work. Lie et al. [30] have proposed a method to           to tools that recover and check complicated security proto-
automatically extract specifications from the protocol code.      cols at the lowest level of their implementation details.
The model is extracted using program slicing and verified
by Murphi tool. Aizatulin et al. [14] have proposed model         Acknowledgments
extraction using symbolic execution. These works extract
the protocol specifications from the source code, while our          We thank our shepherd Venkat Venkatakrishnan and the
approach does not assume to have the source code and pro-         anonymous reviewers for their insightful comments to im-
vides blackbox fuzzing to infer the semantics when the            prove this manuscript. We also thank Matthew Finifter, Joel
source code is not available.                                     Weinberger, Jun Pang, Yacin Nadji, Joseph Hong, Bod-
Security Analysis on SSO Protocols. Extensive re-                 hisatta Roy and Mayank Dhiman for their helpful feed-
search has been conducted to manually analyze security            back and comments. This research is partially supported
of SSO protocols. By reverse enginerrring the client              by research grant R-252-000-495-133 from Ministry of Ed-
implementations, Hanna et al. [27] have revealed that             ucation, Singapore, research project “Automatic Checking
some SSO protocols, including Facebook Connect and                and Verification of Security Protocol Implementations” and
Google Friend Connect, use the cross-domain communi-              “Research and Development in the Formal Verification of
cation channel–postMessage insecurely, E.Tsyrklevich              System Design and Implementation”.
References                                                           [23] G. Delzanno and P. Ganty. Automatic Verification of Time
                                                                          Sensitive Cryptographic Protocols. In TACAS, pages 342–
 [1] AUTHSCAN. https://sites.google.com/site/ndss2013/.                   356, 2004.
                                                                     [24] D. Dolev and A. Yao. On the Security of Public Key Pro-
 [2] BrowserID.             https://wiki.mozilla.org/
                                                                          tocols. IEEE Transactions on Information Theory, 29:198–
     Identity/BrowserID.
                                                                          208, 1983.
 [3] Facebook                Connect              Authentication.
                                                                     [25] D. E.Hammer-Lahav and D.Hardt. The OAuth2.0 Autho-
     http://developers.facebook.com/docs/authentication/.
                                                                          rization Protocol. 2011. IETF Internet Draft.
 [4] Node.js      v0.8.14      Manual      &     Documentation.      [26] T. Gross. Security Analysis of the SAML Single Sign-On
     http://nodejs.org/api/crypto.html.                                   Browser/Artifact Profile. In ACSAC, pages 298 – 307, 2003.
 [5] What is OpenID. http://openid.net/get-an-openid/what-is-        [27] S. Hanna, E. C. R. Shinz, D. Akhawe, A. Boehmz, P. Saxena,
     openid/.                                                             and D. Song. The Emperor’s New API: On the (In)Secure
 [6] Windows Live Messenger Connect, Version 4.1.                         Usage of New Client Side Primitives. In W2SP, 2010.
     http://msdn.microsoft.com/en-us/library/ff749458.aspx.          [28] S. M. Hansen, J. Skriver, and H. R. Nielson. Using Static
 [7] Facebook Connect Used By 250 Million People Per                      Analysis to Validate the SAML Single Sign-On Protocol. In
     Month. http://allfacebook.com/facebook-connect-used-by-              WITS, pages 27–40, 2005.
     250-million-people-per-month b25501, Dec. 8, 2010.              [29] S. Juraj, M. Andreas, S. Jörg, K. Marco, and J. Meiko. On
 [8] Security Vulnerability Allegedly Discovered in Drop-                 Breaking SAML: Be Whoever You Want to Be. In USENIX
     box Client.         http://news.softpedia.com/news/Design-           Security, 2012.
     Security-Flaw-Allegedly-Discovered-in-Dropbox-Client-           [30] D. Lie, A. Chou, D. Engler, and D. L. Dill. A Simple Method
     194427.shtml, Apr. 11, 2011.                                         for Extracting Models for Protocol Code. In ISCA, pages
 [9] Mozilla jwcrypto. https://github.com/mozilla/                        192–203, 2001.
     jwcrypto, May 13, 2012.                                         [31] G. Lowe. Breaking and Fixing the Needham-Schroeder
[10] The AVISPA project homepage.                http://www.              Public-Key Protocol Using FDR. In TACAS, pages 147–166,
     avispa-project.org/, May 13, 2012.                                   1996.
[11] Wolfram alpha. http://www.wolframalpha.com/,                    [32] G. Lowe. A Hierarchy of Authentication Specifications. In
     May 13, 2012.                                                        CSFW, pages 31–43, 1997.
[12] M. Abadi and A. D. Gordon. A Calculus for Cryptographic         [33] M. Miculan and C. Urban. Formal Analysis of Facebook
     Protocols: The spi Calculus. Information and Computation,            Connect Single Sign-On Authentication Protocol. In SOF-
     148(1):1–70, 1999.                                                   SEM, pages 99–116, 2011.
[13] M. Abadi and M. R. Tuttle. A Semantics for A Logic of           [34] J. C. Mitchell, M. Mitchell, and U. Stern. Automated Anal-
     Authentication (Extended Abstract). In PODC, pages 201–              ysis of Cryptographic Protocols Using Murphi. pages 141–
     216, 1991.                                                           151. IEEE Computer Society Press, 1997.
[14] M. Aizatulin, A. D. Gordon, and J. Jürjens. Extracting and     [35] P. Saxena, D. Akhawe, S. Hanna, F. Mao, S. McCamant, and
     Verifying Cryptographic Models from C Protocol Code by               D. Song. A Symbolic Execution Framework for JavaScript.
     Symbolic Execution. In CCS, pages 331–340, 2011.                     In S&P, pages 513–528, 2010.
                                                                     [36] P. Saxena, S. Hanna, P. Poosankam, and D. Song. FLAX:
[15] D. Akhawe, A. Barth, P. E. Lam, J. Mitchell, and D. Song.
                                                                          Systematic Discovery of Client-side Validation Vulnerabili-
     Towards a Formal Foundation of Web Security. In CSF,
                                                                          ties in Rich Web Applications. In NDSS, 2010.
     pages 290–304, 2010.
                                                                     [37] D. X. Song. Athena: A New Efficient Automatic Checker
[16] A. Armando, R. Carbone, L. Compagna, J. Cuellar, and
                                                                          for Security Protocol Analysis. In CSFW, pages 192–202,
     L. Tobarra. Formal Analysis of SAML 2.0 Web Browser
                                                                          1999.
     Single Sign-On: Breaking the SAML-based Single Sign-On
                                                                     [38] J. Sun, Y. Liu, J. S. Dong, and J. Pang. PAT: Towards Flex-
     for Google Apps. In FMSE, pages 1–10, 2008.
                                                                          ible Verification under Fairness. In CAV, pages 709–714,
[17] C. Bansal, K. Bhargavan, and S. Maffeis. Discovering Con-
                                                                          2009.
     crete Attacks on Website Authorization by Formal Analysis.      [39] S.-T. Sun, K. Hawkey, and K. Beznosov. Systematically
     In CSF, pages 247–262, 2012.                                         Breaking and Fixing OpenID Security: Formal Analysis,
[18] B. Blanchet. An Efficient Cryptographic Protocol Verifier            Semi-Automated Empirical Evaluation, and Practical Coun-
     Based on Prolog Rules. In CSFW, pages 82–96, 2001.                   termeasures. Computers & Security, 31:465–483, 2012.
[19] B. Blanchet. Computationally Sound Mechanized Proofs of         [40] E. Tsyrklevich and V. Tsyrklevich. Single Sign-On for the
     Correspondence Assertions. In CSF, pages 97–111, 2007.               Internet: A Security Story. In BlackHat, July 2007.
[20] B. Blanchet and A. Chaudhuri. Automated Formal Analysis         [41] D. Wagner and B. Schneier. Analysis of the SSL 3.0 proto-
     of a Protocol for Secure File Sharing on Untrusted Storage.          col. In WOEC, volume 2, pages 29–40, 1996.
     In S&P, pages 417–431, 2008.                                    [42] R. Wang, S. Chen, and X. Wang. Signing Me onto Your
[21] M. Burrows, M. Abadi, and R. Needham. A Logic of                     Accounts through Facebook and Google: a Traffic-Guided
     Authentication. ACM Transactions On Computer Systems,                Security Study of Commercially Deployed Single-Sign-On
     8:18–36, 1990.                                                       Web Services. In S&P, pages 365–379, 2012.
[22] C. J. Cremers. The Scyther Tool: Verification, Falsification,   [43] T. Wang, T. Wei, G. Gu, and W. Zou. TaintScope:
     and Analysis of Security Protocols. In CAV, pages 414–418,           A Checksum-Aware Directed Fuzzing Tool for Automatic
     2008.                                                                Software Vulnerability Detection. In S&P, May 2010.
[44] T. Y. C. Woo and S. S. Lam. A Semantic Model for Authen-     signature is concatenated with IDP’s signature (i.e., cert)
     tication Protocols. In S&P, pages 178–194, 1993.             with function bundle(). Afterwards, this concatenation
[45] L. Xing, Y. Chen, X. Wang, and S. Chen. InteGuard: To-       is sent by invoking function Window.postMessage().
     ward Automatic Protection of Third-Party Web Service In-
     tegrations. In NDSS, 2013.
                                                                  B.2    Inferred Protocols
A     Termination of Algorithm 1                                     Figure 6 demonstrates the protocols inferred using
                                                                  AUTH S CAN; the inferred models are simplified for read-
    We informally argue why the Algorithm 1 terminates.           ability.
First, since AUTH S CAN uses only one trace t as the basis to
generate the P roSet which has a fixed number of local pro-       B.3    Precision of Inferred Protocols
tocols and free variables. The newly generated traces in the
fuzzing step do not generate new local protocols and vari-
                                                                      We investigate the precision of our inferred protocol,
ables, but infer more TML terms over these variables and
                                                                  which is possible for two of our case studies, to available
add new actions. Second, for each HTTP data, AUTH S CAN
                                                                  documentation and manually-crafted specifications. We
generates two probes: one in which the data is removed and
                                                                  find that our protocols are fairly precise, subject to our qual-
the other in which the data is mutated. Thus, for a message
                                                                  itative analysis.
containing N HTTP data elements, only 2N probes are gen-
                                                                  BrowserID Precision. We compare our inferred specifi-
erated. Third, after each iteration (step 4-9), the number of
                                                                  cation to the documented description of the protocol on-
variables inferred is monotonically non-increasing; we can
                                                                  line [2]. Our inferred protocol matches closely to the de-
only remove certain variables as redundant data. Finally, by
                                                                  scription in the documentation. In some cases, it reveals
bounding the nesting function depth and number of traces
                                                                  useful information that is unspecified in the documentation.
in trP ool, all searches and fuzzing operates over finite state
                                                                  For instance, the documentation says that, the IDP returns a
and must terminate.
                                                                  signed structure containing expiration time in the Step 5 of
                                                                  Figure 6-(a)), but documentation does not precisely specify
B     Protocol Extraction                                         the duration of the “expiration time”. AUTH S CAN finds that
                                                                  the duration is large enough to permit replay attacks that are
B.1    Extracting BrowserID Protocol                              longer than 726 seconds. This intermediate result is useful
                                                                  for further analysis, such as verification on time sensitive
    In this section, we detail the process on analyzing           protocols [23].
myfavoritebeer.org to demonstrate how AUTH -                          We find the protocol to match the documentation exactly
S CAN extracts model from the implementation. As shown            (subject to our manual interpretation), except for one ad-
in Figure 5, the traces captured by AUTH S CAN are listed         ditional difference. The document states that the SPs are
in the first two columns, and the corresponding TML state-        allowed to send the signed data to BrowserID for verifica-
ments inferred are placed in the third column.                    tion in the specification rather than local verification. Since
    From message (2), AUTH S CAN infers the HTTP pa-              this message is sent between SP and IDP servers rather than
rameter csrf as a nonce. AUTH S CAN also associates               been relayed in the browser, it is not represented in our in-
user name (USER) and password (PWD) to represent that             ferred specification.
they should be matching. From message (4), through                Facebook Connect Precision. Facebook Connect origi-
white box analysis, AUTH S CAN infers that spkUser                nates from OAuth 2.0 authorization protocol [25]. In Ebay-
and spkUser−1 are an asymmetric key pair generated                Classified case, our inferred protocol consists of 11 rounds
by function generateKeypair(). In message (5),                    and 65 parameters (including cookies and GET/POST pa-
AUTH S CAN figures out that the HTTP parameter cert               rameters), comparing to 7 rounds and 11 parameters in
is encoded as a JSON Web Token (JWT) with each                    the specification. The extra rounds and parameters, which
segment separated with “.” and encoded with Base64                shows our inferred protocol is more precise, may be vul-
encoding (as described in Section 4.2). When apply-               nerable to the protocol and have been analyzed by AUTH -
ing the signature verification algorithm RSA over one             S CAN. Furthermore, compared to recent work which man-
of the segment (the brute-force search as discussed in            ually extracts the Facebook Connect protocol, our model
Section 4.2), AUTH S CAN finds that it is a signature             has defined more precisely the terms exchanged in the pro-
by IDP S over four data elements occurring previously:            tocol [33]. Our inferred specification is also more detailed
{U SER, spkU ser, p, expire}k−1 . Similarly, in mes-              than the prior work of Hanna et al. [27]. Finally, we find
                                 IDP S
sage (6), AUTH S CAN identifies that function sign() is           that our Facebook Connect model is different from the de-
used to generate signature {j, expire1}spkU ser−1 and this        scription in Wang et al.’s recent work [42]— this is because
    #                                                                         Input                                                                                                        TML
                                    HTTP Messages                                                          Javascript code snippet                        Initial Conditions
         POST                                                                                                                                                r has csrf ˄ p has csrf
         https://login.persona.org/wsapi/authenticate_user                                                                                                IDP_C( r )
 (2)     Host: login.persona.org                                                                                                                             NewAssoc({r,p}, assoc (USER, PWD))
                                                                                                                      NONE                                   Send( p, {assoc(USER, PWD ), csrf })
         "email":"alicessotester@gmail.com",
         "pass":"alice",                                                                                                                                  IDP_S( p )
         "csrf":"UaZWfqrQmYwemitM1U8nUw=="                                                                                                                   Receive( r, { assoc( M, N ), csrf } )
         POST                                                                                       syncEmailKeypair:function(…){…,                       IDP_C ( r )
         https://login.persona.org/wsapi/cert_key                                                   d.withContext(function(){                               NewKeyPair( spkUser, spkUser -1)
         Host: login.persona.org                                                                    a.generateKeypair({                                     Send( p, USER, spkUser, csrf )
 (4)
         "email":"alicessotester@gmail.com",                                                        algorithm:"DS",                                       IDP_S( p )
         "pubkey":"{\"algorithm\":\"DS\"……6233397a\"}",                                             keysize:c.KEY_LENGTH}, …)})}                            Receive( r, M, Y, csrf )
         "csrf":"UaZWfqrQmYwemitM1U8nUw=="
         GET                                                                                                                                              IDP_C( r )
         https://login.persona.org/wsapi/cert_key                                                                                                           Receive( p, X )
         Host: login.persona.org                                                                                                                          IDP_S( p )
 (5)                                                                                                                  NONE
         "cert":"eyJhbGciOiJSUzI1NiJ9.eyJwdW....SfqAt5…"                                                                                                    NewNonce( expire )
                                                                                                                                                            Send( r, { M, Y, p, expire }k —1 )
                                                                                                                                                                                                               IDP_S

                                                                                                    assertion.sign( {},{audience:c,expiresAt:             IDP_C( i )
                                                                                                    j},g, function(d,g){                                    NewNonce( expire1 )
 (6)                                        NONE                                                    k=a.cert.bundle([f.cert],g),…})                         Send( j, [X, { j, expire1 }spkUser -1 ] )
                                                                                                    b.window.postMessage( JSON.stringify(                 SP_C( j )
                                                                                                    a), b.origin)                                           Receive( i, R)


                  Figure 5: The HTTP trace of BrowserID and the corresponding TML statements (The full messages are available at [1].)

                                                                                                                                                                                             IDP
         SP_S                   SP_C                   IDP_C                            IDP_S                  SP_C              IDP_C                    IDP_OAuth              IDP_login            IDP_rp           IDP_connect

                                     (1) {SP_domain} K_B                                                                  (1) assoc(SID, Domain)

                                                   (2) {assoc(USER, PWD), csrf} Key(IDP_C, IDP_S)                                     (2) assoc(SID, Domain)

                                                                                                                         (3) {SID, assoc(SID, Domain), assoc(Email, password)}Key(IDP_C, IDP_login)
                                                               (3) {Ack} Key(IDP_C, IDP_S)
                                                                                                                                   (4) assoc(SID,Domain), assoc(Email, c_user), xs)
                                                           (4) {USER, Ki, csrf} Key(IDP_C, IDP_S)

                                             (5) {{USER, Ki, expire, IDP_domain}Ks-1} Key(IDP_C, IDP_S)                               (5) assoc(SID,Domain), assoc(Email, c_user), xs)


               (6) {{USER, Ki, expire, IDP_domain}Ks-1, {expire1, SP_domain}Ki-1}K_B                                                   (6) {access_token, signed_request, Domain}Key(IDP_C, IDP_rp)

                                                                                                                                              (7) {access_token, signed_request, Domain}Key(IDP_C, IDP_connect)
    (7) {USER, Ki, expire, IDP_domain}Ks-1, {expire1, SP_domain}Ki-1
                                                                                                                                              (8) {access token, signed_request, Domain}Key(IDP_C, IDP_connect)
                 (8) Ack
                                                                                                                      (9) {access token, signed_request, Domain}K_B



                   (a) the Sequence Diagram of BrowerID                                                                            (b) the Sequence Diagram of Facebook Connect

                           Figure 6: The sequence diagrams inferred from implementations of BrowserID and Facebook Connect


their work considers the Flash implementation whereas we                                                                them. The applied pi-calculus model of the running exam-
analyze the JavaScript-based implementation which works                                                                 ple (Figure 1 and 3) is shown in Figure 7.
in today’s web browsers by default.
                                                                                                                        Conversion. Most syntax and semantics can be directly
                                                                                                                        mapped to applied pi-calculus. The initial conditions (ini-
C       TML to ProVerif Inputs                                                                                          tial knowledge of the participants) are represented with
                                                                                                                        a set of global variables (line 17-21), where the terms
   TML is an high-level abstract model language, which                                                                  initially unknown to Z is labeled as private, such as
can be directly translated into applied pi-calculus. We do                                                              k IDP s (line 18), the private key of IDP S. The crypto-
not present the formal semantics translation between these                                                              graphic functions are translated into constructor (fun) and
two languages, but intuitively explain the mapping between                                                              destructor (reduc) (line 6-15). The local protocols are
represented with the processes (line 33-82), whose iden-
tifers are represented with i,j,r,p (line 17) of Host
                                                                    1   type Host.
type (line 1). For the action schema, the Begin* and                2   type key. (*symentric key*)
End* are mapped to event (line 67 and 57); the Send                 3   type spkey.(*public key*)
and Receive are mapped to out and in; the assoc is                  4   type sskey.(*pivate key*)
represented with the table (line 22), and NewAssoc is               5
                                                                    6   (* Shared key encryption *)
mapped to insert a tuple into the table (line 34). How-             7   fun senc(bitstring, key):bitstring.
ever, one problem is that ProVerif does not scale as the            8   reduc forall x:bitstring,y:key;sdec(senc(x,
number of tables increases. To solve this problem, we                       y),y)=x.
also can model the assoc using functions. In particular,            9   (* Signatures *)
AUTH S CAN uses the same modeling method as model-                 10   fun spk(sskey):spkey.
                                                                   11   fun sign(bitstring, sskey):bitstring.
ing symmetric cryptographic primitives. For example, the           12   reduc forall x:bitstring,y:sskey; checksign
assoc(i, authtoken) in Figure 3 is modeled as mysenc                        (sign(x,y), spk(y)) = x.
at line 13-15. Specially, if this assoc happens to be a            13   (*fun*)
long-lived or guessable token which needs to be added              14   fun mysenc(Host, key):bitstring.
into Z’s knowledge set, AUTH S CAN just casts the encryp-          15   reduc forall x:Host,y:key;mysdec(mysenc(x,y
                                                                            ),y) = x.
tion key to the attacker (addattackerknow at line 77-              16
78). The checking action is mapped to the matching ac-             17   free i, j, r, p:Host.
tion, for example, let(=M, =N) = checksign(P,                      18   free k_IDP_s:sskey [private].
spk(k IDP s)) (line 42) checks whether P is a signa-               19   free k_i_j_com:key [private].
                                                                   20   free sp:bitstring.
ture over (M, N) using the private key K IDP s. The
                                                                   21   free sessionID, CSRFToken:bitstring[private
channel is slightly different from TML because ProVerif                     ].
supports both public and private channels. AUTH S CAN              22   table sp_table(Host, bitstring).
translates HTTP into public channel (ch at line 23, 38 and         23   channel ch.
46) which is readable and writable to the attacker; HTTPS          24   free browser:channel [private].
                                                                   25   free https:channel [private].
and cross-domain communication is translated as private            26
channels (https at line 25 and 48, and browser at line             27   event BeginInit(Host).
24 and 40).                                                        28   event EndResponse(Host).
                                                                   29
    For the syntax or semantics not supported by ProVerif,         30   query x:Host, y:Host; inj-event(EndResponse
AUTH S CAN models them in alternative ways. For ex-                         (x)) ==> inj-event(BeginInit(y)).
ample, ProVerif does not support a writable but non-               31   query attacker(mysenc(i, k_i_j_com)).
readable (for the attacker) or a readable but non-writable         32

channel. When AUTH S CAN finds that the sender origin              33   let SP_C = (*i*)
                                                                   34    insert sp_table(j, sp);
of postMessage is not checked (such as Step ­ in Fig-              35    (*******************************
ure 1), which means this channel becomes an attacker-              36         3. Fix postmessage flaw
writable channel (but remains unreadable), it turns the            37     *******************************)
browser channel writable by adding an input before out             38    (*in(ch,(j:Host,sp:bitstring,mynext:
messages to browser, as shown at line 38-40. Conversely,                     channel)); *)
                                                                   39    new mynext:channel;
if it finds that the channel is readable, it adds an out after     40    out(browser,((j,sp),mynext));(*Step 1*)
in message from the channel. Finally, after we fixing all the      41    in(mynext,(M:Host,N:bitstring,P:bitstring)
vulnerabilities, ProVerif reports that the protocol is verified.             ); (*Step 4*)
                                                                   42    let(=M, =N) = checksign(P, spk(k_IDP_s))
Detected vulnerabilities. ProVerif detects three attacks in                  in
this model. First, it reports that the attacker can derive         43    (*******************************
the token using the key k i j com cast to his knowl-               44         2. Fix HTTP replay attack
edge set (line 77-78). After “fixing” this flaw (Here fix-         45     *******************************)
                                                                   46    (*out(ch, (M,N))*)
ing means correcting the flaw in the model instead of in           47    in(ch, (M:bitstring, N:bitstring));
the implementation) as shown at line 74-78, it reports a re-       48    out(https, (M,N))(*step 5*).
play attack where the attacker can obtain the token from           49

line 46, and then replay it to line 54. After “fixing” this        50   let SP_S = (*j*)
flaw using HTTPS to replace HTTP as shown at line 48 and           51    (*******************************
                                                                   52         2. Fix HTTP replay attack
55, ProVerif reports the MITM attack shown in Section 2.1.         53     *******************************)
The attacker replaces mynext at line 38 and finally gets the       54    (*in(ch,(M:Host,token:bitstring))*)
token from line 63.                                                55    in(https,(M:Host,token:bitstring));(*step5
          *)
56    let (=M) = mysdec(token, k_i_j_com) in
57    event EndResponse(i).
58
59   let IDP_C = (*r*)
60    in(browser,(X:bitstring,Y:channel));(*step
           1*)
61    out(https,(X,sessionID,CSRFToken));(*step2
          *)
62    in(https,(M:Host,N:bitstring,P:bitstring))
          ;(*step 3*)
63    out(Y, (M,N,P)). (*step 4*)
64
65   let IDP_S = (*p*)
66    in(https, (X:bitstring, =sessionID, =
          CSRFToken));   (*step 2*)
67    event BeginInit(j);
68    let(M:Host, Mdomain:bitstring) = X in
69    get sp_table(=M, =Mdomain) in
70    let token = mysenc(i, k_i_j_com) in
71    let idpsign = sign((i, token), k_IDP_s) in
72    out(https, (i, token, idpsign)).(*step 3*)
73
74    (*******************************
75          1. Fix guessable token
76     *******************************)
77   let addattackerknow =
78     (*out(ch, k_i_j_com)*)
79     new padding:bitstring.
80
81   process
82    (!SP_C|!SP_S|!IDP_C|!IDP_S|!
          addattackerknow)


         Figure 7: Applied pi-calculus model of the running example




     D     CSRF Attack Script

        The following script can be used by the attacker to com-
     mit a CSRF attack, which modifies the content on the web
     pages of Myfavoritebeer without the user’s approval.
           <iframe name="formFrame"></iframe>
           <script>
            formFrame.document.body.innerHTML=
             ’<form name="tfm" action="http://myfavorite
               beer.org/api/set" method="post" target=
               "_parent"> <input type="text" name="beer"
               value="Hello Kitty"/><input type="submit
                    "/></form>’;
            formFrame.document.all.tfm.submit();
           </script>
