- Home
- RFC 10027
RFC 10027: BCP 247: Best Current Practice for Security of Cross-Device Flows
- P. Kasselman,
- D. Fett,
- F. Skokan
Abstract
This document describes threats against cross-device flows along with practical mitigations, protocol selection guidance, and a summary of formal analysis results identified as relevant to the security of cross-device flows. It serves as a security guide to system designers, architects, product managers, security specialists, fraud analysts, and engineers implementing cross-device flows.¶
Status of This Memo
This memo documents an Internet Best Current Practice.¶
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on BCPs is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://
1. Introduction
Protocol flows that span multiple end-user devices are in widespread use today. These flows are often referred to as cross-device flows. A common example is a user that uses their mobile phone to scan a QR code from their smart TV, giving an app on the TV access to their video streaming service. Besides QR codes, other mechanisms are often used, such as PIN codes that the user has to enter on one of the devices or push notifications to a mobile app that the user has to approve.¶
In all cases, it is up to the user to decide whether or not to grant authorization. However, the QR code or PIN is transferred via an unauthenticated channel, leaving it up to the user to decide in which context an authorization is requested. This may be exploited by attackers to gain unauthorized access to a user's resources.¶
To accommodate the various nuances of cross-device flows, this document distinguishes between use cases where the cross-device flow is used to authorize access to a resource (cross-device authorization flows) and use cases where the cross-device flow is used to transfer an existing session (cross-device session transfer flows).¶
1.2. Cross-Device Session Transfer
Session transfer flows enable a user to transfer access to a service or network from a device on which the user is already authenticated to a second device such as a mobile phone. In these flows, the user is authenticated and then authorizes the session transfer on one device, referred to as the Authorization Device (e.g., a personal computer, web portal, or application), and transfers the session to the device where they will continue to consume the session, referred to as the Consumption Device (e.g., a mobile phone or portable device).¶
The session may be transferred by showing the user a session transfer code on the Authorization Device, which is then entered on the Consumption Device. This flow may be streamlined by rendering the session transfer code as a QR code on the Authorization Device and scanning it with the Consumption Device.¶
The session transfer preserves state information, including authentication state, at the second device to avoid additional configuration and optimize the user experience. These flows are often used to add new devices to a network, onboard customers to a mobile application, or provision new credentials (e.g., as described in [OpenID.SIOPv2]).¶
In these cross-device session transfer flows, the channel between the Authorization Device and the Consumption Device is unauthenticated
Cross-Device Session Phishing (CDSP) attacks exploit the unauthenticated channel between the Authorization Device and Consumption Device by using social engineering techniques to convince the user to send the session transfer code to the attacker. These attacks borrow techniques from conventional phishing attacks, but instead of collecting passwords, attackers collect session transfer codes and other artifacts that allow them to set up a session and then use it to access a user's data.¶
1.3. Defending Against Cross-Device Attacks
This document provides guidance to implementers (e.g., system designers, architects, product managers, security specialists, fraud analysts, and engineers) of cross-device flows to defend against CDCP and CDSP attacks. This guidance includes:¶
-
Practical mitigations for susceptible protocols (Section 6.1).¶
-
Protocol selection guidance to avoid using susceptible protocols (Section 6.2).¶
-
Results from formal analysis of susceptible protocols (Section 6.3).¶
1.4. Conventions and Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This specification uses the terms "access token", "refresh token", "authorization server", "resource server", "authorization request", and "client" defined in "The OAuth 2.0 Authorization Framework" [RFC6749].¶
This document uses the terms "social engineering" and "phishing" as described in the NIST Computer Security Resource Center Glossary [NISTGlossary].¶
2. Best Practices
This section describes the set of security mechanisms and measures to secure cross-device protocols against CDCP and CDSP attacks that the OAuth Working Group considers best practices at the time of writing this specification.¶
-
Implementers MUST perform a risk assessment before implementing cross-device flows, weighing the risks from CDCP and CDSP attacks against benefits for users.¶
-
Implementers SHOULD avoid cross-device flows if risks cannot be sufficiently mitigated.¶
-
Implementers SHOULD follow the guidance provided in Section 6.2 for protocol selection.¶
-
Implementers MUST select appropriate mitigations from Section 6.1 to address risks identified in the risk assessment.¶
-
Implementers SHOULD include proximity as one of the selected mitigations as defined in Section 6.1.1, if possible.¶
These best practices apply to the device authorization grant [RFC8628] as well as other cross-device protocols such as CIBA [CIBA], Self-Issued OpenID Provider v2 [OpenID.SIOPv2], OpenID for Verifiable Presentations [OpenID.VP], the Pre-Authorized Code Flow in [OpenID.VCI], and other cross-device protocols that rely on the user to authenticate the channel between devices.¶
Section 3 provides details about susceptible protocols, and Section 4 provides attack descriptions. Section 5 provides an overview of existing protocols and standards. Section 6.1 provides details about the security mechanisms and mitigations, Section 6.2 provides protocol selection guidance, and Section 6.3 provides details from formal analysis of protocols that apply to cross-device flows.¶
3. Cross-Device Flow Patterns
Cross-device flows enable a user to initiate an interaction on one device (e.g., a smart TV) and complete or continue it on a second device (e.g., a mobile phone). This specification addresses two distinct cross-device use cases:¶
-
Cross-Device Authorization: In the cross-device authorization use case, the second device is used to authenticate the user or grant authorization before passing control back to the first device as described in Section 3.1.¶
-
Cross-Device Session Transfer: In the cross-device session transfer use case, the user is already authenticated on the first device before the session is transferred to the second device without requiring the user to re-authenticate as described in Section 3.2.¶
These flows typically involve using a mobile phone to scan a QR code or enter a user code displayed on the first device (e.g., a smart TV, kiosk, personal computer, or other electronic device).¶
3.1. Cross-Device Authorization
In a cross-device authorization flow, a user attempts to access a service on one device, referred to as the Consumption Device (e.g., a smart TV), and then uses a second device, referred to as the Authorization Device (e.g., a smartphone), to authorize access to a resource (e.g., access to a streaming service) on the Consumption Device.¶
Cross-device authorization flows have several benefits, including:¶
-
Authorization on devices with limited input capabilities: End users can authorize devices with limited input capabilities to access content (e.g., smart TVs, digital whiteboards, printers, or similarly constrained devices).¶
-
Secure authentication on shared or public devices: End users can perform authentication and authorization using a personally trusted device, without risk of disclosing their credentials to a public or shared device.¶
-
Ubiquitous multi-factor authentication: Enables a user to use multi-factor authentication, independent of the device on which the service is being accessed (e.g., a kiosk, smart TV, or shared personal computer).¶
-
Convenience of a single, portable, credential store: Users can keep all their credentials in a mobile wallet or mobile phone that they already carry with them.¶
There are three cross-device flow patterns for transferring the authorization request between the Consumption Device and the Authorization Device.¶
-
User-Transferred Session Data Pattern: In this pattern, the user initiates the authorization process with the Authorization Server by copying information from the Consumption Device to the Authorization Device, before authorizing an action. By transferring the data from the Consumption Device to the Authorization Device, the user transfers the authorization session. For example, the user may read a code displayed on the Consumption Device and enter it on the Authorization Device, or they may scan a QR code displayed on the Consumption Device with the Authorization Device. The device authorization grant [RFC8628] is an example of a cross-device flow that follows this pattern.¶
-
Backchannel
-Transferred Session Pattern: In this pattern, the OAuth client on the Consumption Device is responsible for transferring the session and initiating authorization on the Authorization Device via a backchannel with the Authorization Server. For example, the user may attempt an online purchase on a Consumption Device (e.g., a personal computer) and receive an authorization request on their Authorization Device (e.g., a mobile phone). CIBA [CIBA] is an example of a cross-device flow that follows this pattern.¶ -
User-Transferred Authorization Data Pattern: In this pattern, the OAuth client on the Consumption Device triggers the authorization request via a backchannel with the Authorization Server. Authorization data (e.g., a 6-digit authorization code) is displayed on the Authorization Device, which the user transfers to the Consumption Device (e.g., by manually entering it). For example, the user may attempt to access data in an enterprise application and receive a 6-digit authorization code on their Authorization Device (e.g., a mobile phone) that they enter on the Consumption Device. Note that the use of a 6-digit code is illustrative and reflects common practice at the time of writing. Code length may vary based on usability and risk considerations, and specifying the appropriate length is out of scope for this document.¶
3.1.1. User-Transferred Session Data Pattern
The device authorization grant [RFC8628] is an example of a cross-device flow that relies on the user copying information from the Consumption Device to the Authorization Device by either entering data manually or scanning a QR code. Figure 1 shows a typical example of this flow.¶
+--------------+ +---------------+
| Consumption |--(B) Request -------->| |
| Device | QR/User Code | |
| | | |
| |<-(C) Return ----------| |
+------->| | QR/User Code | |
| | | | |
| | |--(D) Poll for ------->| |
(A) User | | Authorization | |
| Starts| | | |
| Flow | |<-(J) Grant -----------| Authorization |
| | | Authorization | Server |
| +--------------+ | |
| | |
+------+ | |
| User | | |
+------+ | |
| | | |
| (E) Scan QR Code or Enter User Code | |
| | | |
| | +--------------+ | |
| +------>| Authorization| | |
| | Device |--(F) Send QR Code --->| |
| | | or User Code | |
| | | | |
| | |<-(G) Request User ----| |
| | | Authentication and| |
| | | Authorization | |
+-(H) User->| | | |
Authenticates| | | |
and Grants | | | |
Authorization| | | |
| |--(I) Authentication ->| |
| | and Authorization| |
| | Completes | |
+--------------+ +---------------+- (A)
- The user takes an action on the Consumption Device by starting a purchase, adding a device to a network, or connecting a service to the Consumption Device.¶
- (B)
- The Consumption Device requests a QR code or user code from an Authorization Server.¶
- (C)
- The Authorization Server returns a QR code or user code to the Consumption Device, which displays it to the user with instructions to scan the QR code or enter the user code using the Authorization Device.¶
- (D)
- The Consumption Device starts polling the Authorization Server to find out if the user granted authorization.¶
- (E)
- The user scans the QR code or enters the user code on the Authorization Device.¶
- (F)
- The QR code or user code is sent to the Authorization Server.¶
- (G)
- The Authorization Server validates the QR code or user code and prompts the user to authenticate and either accept or decline the authorization request.¶
- (H)
- The user authenticates and grants authorization using the Authorization Device.¶
- (I)
- The user is authenticated, and authorization is granted to access the user's resources (there may be several additional messages, depending on the authentication protocol, user interface, and other implementation details).¶
- (J)
- The Authorization Server grants authorization (e.g., by issuing tokens) to the Consumption Device to access the user's resources.¶
3.1.2. Backchannel-Transferred Session Pattern
CIBA [CIBA] transfers the session on the backchannel with the Authorization Server to request authorization on the Authorization Device. Figure 2 shows an example of this flow.¶
+--------------+ +---------------+
+------->| Consumption |--(B) Backchannel ---->| |
| | Device | Authorization | |
| | | Request | |
| | | | Authorization |
| | |<-(F) Grant------------| Server |
| +--------------+ Authorization | |
(A) User | |
| Starts | |
| Flow | |
| | |
+------+ | |
| User | | |
+------+ | |
| | |
(D) User Authenticates | |
| and Authorizes Action | |
| | |
| +--------------+ | |
| | Authorization| | |
| | Device |<-(C) Request User ----| |
+------->| | Authentication | |
| | and Authorization| |
| | | |
| |--(E) Authentication ->| |
| | and Authorization| |
| | Completes | |
+--------------+ +---------------+- (A)
- The user takes an action on the Consumption Device by starting a purchase, adding a device to a network, or connecting a service to the Consumption Device.¶
- (B)
- The client on the Consumption Device requests user authorization on the backchannel from the Authorization Server, instructs the user to authorize the request on the Authorization Device, and waits for a response from the Authorization Server.¶
- (C)
- The Authorization Server requests user authentication and authorization on the user's Authorization Device.¶
- (D)
- If the user is unauthenticated
, they use their Authorization Device to authenticate and grant authorization to the Authorization Server.¶ - (E)
- The user is authenticated, and authorization is granted to access the user's resources (there may be several additional messages, depending on the authentication protocol, user interface, and other implementation details).¶
- (F)
- The Authorization Server grants authorization (e.g., by issuing tokens) to the Consumption Device to access the user's resources.¶
The Authorization Server may use a variety of mechanisms to request user authorization, including a push notification to a dedicated app on a mobile phone or sending a text message with a link to an endpoint where the user can authenticate and authorize an action.¶
3.1.3. User-Transferred Authorization Data Pattern
Examples of the User
+--------------+ +---------------+
+------->| Consumption |--(B) Backchannel ---->| |
| | Device | Authorization | |
| | | Request | |
| | | | |
| | |--(F) Send------------>| |
| | | Authorization | |
| | | Data | |
| | | | Authorization |
| | |<-(G) Grant------------| Server |
| +--------------+ Authorization | |
(A) User ^ | |
| Starts | | |
| Flow (E) User Enters | |
| | Authorization | |
+------+ | Data | |
| User |----------+ | |
+------+ | |
^ | |
(D) User Copies | |
| Authorization Data | |
| | |
| +--------------+ | |
| | Authorization| | |
| | Device |<-(C) Send ------------| |
+--------| | Authorization | |
| | Data | |
+--------------+ +---------------+- (A)
- The user takes an action on the Consumption Device by starting a purchase, adding a device to a network, or connecting a service to the Consumption Device.¶
- (B)
- The client on the Consumption Device requests user authorization on the backchannel from the Authorization Server.¶
- (C)
- The Authorization Server sends authorization data (e.g., a 6-digit authorization code) to the Authorization Device. Examples of mechanisms that may be used to distribute the authorization data include text messages, email, or a mobile application.¶
- (D)
- The user reads and copies the authorization data (e.g., the 6-digit authorization code) received on the Authorization Device.¶
- (E)
- The user enters the authorization data on the Consumption Device.¶
- (F)
- The Consumption Device sends the authorization data to the Authorization Server.¶
- (G)
- The Authorization Server issues tokens or grants authorization to the Consumption Device to access the user's resources if the authorization data is the same as that sent in step (C).¶
The Authorization Server may choose to authenticate the user before sending the authorization data.¶
3.2. Cross-Device Session Transfer
Session transfer flows enable a user to transfer access to a service or network from a device on which the user is already authenticated to a second device such as a mobile phone. In these flows, the user is authenticated and then authorizes the session transfer on one device, referred to as the Authorization Device (e.g., a personal computer, web portal or application), and transfers the session to the device where they will continue to consume the session, referred to as the Consumption Device (e.g., a mobile phone or portable device).¶
The session transfer preserves state information, including authentication state, at the second device to avoid additional configuration and optimize the user experience. These flows are often used to add new devices to a network, onboard customers to a mobile application, or provision new credentials (e.g., [OpenID.SIOPv2]).¶
3.2.1. Cross-Device Session Transfer Pattern
In this flow, the user is authenticated and starts the flow by authorizing the transfer of the session on the Authorization Device. The Authorization Device requests a session transfer code, which may be rendered as a QR code on the Authorization Device. When the user scans the QR code or enters it on the Consumption Device where they would like the session to continue, the Consumption Device presents it to the Authorization Server. The Authorization Server then transfers the session to the Consumption Device. This may include transferring authentication and authorization state to optimize the user experience. This type of flow is used, for example, for adding new devices to networks, bootstrapping new applications, or provisioning new credentials. The Pre-Authorized Code Flow in [OpenID.VCI] is an instance of using this pattern to provision a new credential. Figure 4 shows a typical flow.¶
+---------------+ +---------------+
+-------->| Authorization | | Authorization |
| | Device |--(B) Session -------->| Server |
| | | Transfer Request | |
| | | | |
| | |<-(C) Session ---------| |
| | | Transfer Code | |
| | | | |
| +---------------+ | |
(A) User | | |
| Starts (D) User Views | |
| Flow | Session Transfer Code | |
| v or QR Code | |
+---------------------------+ | |
| User | | |
+---------------------------+ | |
| | |
(E) Enter Session Transfer Code | |
| or Scan QR Code | |
| | |
v | |
+---------------+ | |
| Consumption | | |
| Device |--(F) Present -------->| |
| | Session Transfer | |
| | Code | |
| | | |
| |<-(G) Return Session --| |
| | Context | |
+---------------+ +---------------+- (A)
- The user is authenticated on the Authorization Device and authorizes the transfer of the session to the Consumption Device.¶
- (B)
- The user starts the flow and is authenticated on their Authorization Device before they authorize the transfer of the session to the Consumption Device.¶
- (C)
- The Authorization Server responds with a session transfer code, which may be rendered as a QR code on the Authorization Device.¶
- (D)
- The user views the session transfer code, which may be rendered as a QR code.¶
- (E)
- The user enters the session transfer code on the Consumption Device (e.g., their mobile phone). If the session transfer code is rendered as a QR code, the user scans the QR code with the target Consumption Device.¶
- (F)
- The client on the Consumption Device presents the session transfer code to the Authorization Server.¶
- (G)
- The Authorization Server verifies the session transfer code and returns the session context information needed to resume the session on the Consumption Device. The user resumes the session they initiated and authorized on the Authorization Device and proceeds to access the information on the Consumption Device.¶
3.3. Examples of Cross-Device Flows
The following examples illustrate the above flows in a diverse range of practical settings. Corresponding examples of how these flows may be exploited by attackers are documented in Section 4.3.¶
3.3.1. Example A1: Authorize Access to a Video Streaming Service (User-Transferred Session Data Pattern)
An end user sets up a new smart TV and wants to connect it to their favorite streaming service. The streaming service displays a QR code on the TV that the user scans with their mobile phone. The user is redirected to the streaming service provider's web page and asked to enter their credentials to authorize the smart TV to access the streaming service. The user enters their credentials and grants authorization, after which the streaming service is available on the smart TV. Section 4.3.1 illustrates an exploit that applies to this scenario.¶
3.3.2. Example A2: Authorize Access to Productivity Services (User-Transferred Session Data Pattern)
An employee wants to access their files on an interactive whiteboard in a conference room. The interactive whiteboard displays a URL and a code. The user enters the URL on their personal computer and is prompted for the code. Once they enter the code, the user is asked to authenticate and authorize the interactive whiteboard to access their files. The user enters their credentials and authorizes the transaction, and the interactive whiteboard retrieves their files and allows the user to interact with the content. Section 4.3.2 describes an exploit relevant to this example.¶
3.3.3. Example A3: Authorize Use of a Bike Sharing Scheme (User-Transferred Session Data Pattern)
An end user wants to rent a bicycle from a bike sharing scheme. The bicycles are locked in bicycle racks on sidewalks throughout a city. To unlock and use a bicycle, the user scans a QR code on the bicycle using their mobile phone. Scanning the QR code redirects the user to the bicycle sharing scheme's authorization page where the user authenticates and authorizes payment for renting the bicycle. Once authorized, the bicycle sharing service unlocks the bicycle, allowing the user to use it to cycle around the city. Section 4.3.3 outlines an exploit relevant to this situation.¶
3.3.4. Example A4: Authorize a Financial Transaction (Backchannel-Transferred Session Pattern)
An end user makes an online purchase. Before completing the purchase, they get a notification on their mobile phone, asking them to authorize the transaction. The user opens their app and authenticates to the service before authorizing the transaction. Section 4.3.4 describes two exploits relevant to this example.¶
3.3.5. Example A5: Add a Device to a Network (Cross-Device Session Transfer Pattern)
An employee is issued a personal computer that is already joined to a network. The employee wants to add their mobile phone to the network to allow it to access corporate data and services (e.g., files and email). The employee is logged in on the personal computer where they initiate the process of adding their mobile phone to the network. The personal computer displays a QR code that authorizes the user to join their mobile phone to the network. The employee scans the QR code with their mobile phone, and the mobile phone is joined to the network. The employee can start accessing corporate data and services on their mobile device. Section 4.3.5 gives an example of how this flow may be exploited.¶
3.3.6. Example A6: Remote Onboarding (User-Transferred Session Data Pattern)
A new employee is directed to an onboarding portal to provide additional information to confirm their identity on their first day with their new employer. Before activating the employee's account, the onboarding portal requests that the employee present a government issued ID, proof of a background check, and proof of their qualifications. The onboarding portal displays a QR code, which the user scans with their mobile phone. Scanning the QR code invokes the employee's digital wallet on their mobile phone, and the employee is asked to present digital versions of an identity document (e.g., a driving license), proof of a background check by an identity verifier, and proof of their qualifications. The employee authorizes the release of the credentials, and after completing the onboarding process, their account is activated. Section 4.3.6 provides an example of an exploit for this use case.¶
3.3.7. Example A7: Application Bootstrap (Cross-Device Session Transfer Pattern)
An employee is signed in to an application on their personal computer and wants to bootstrap the mobile application on their mobile phone. The employee initiates the cross-device flow and is shown a QR code in their application. The employee launches the mobile application on their phone and scans the QR code, which results in the user being signed in to the application on the mobile phone. Section 4.3.7 describes an exploit that applies to this scenario.¶
3.3.8. Example A8: Access a Productivity Application (User-Transferred
Authorization Data Pattern)
A user is accessing a Computer-Aided Design (CAD) application. When accessing the application, authorization data in the form of a 6-digit authorization code is sent to the user's mobile phone. The user views the 6-digit authorization code on their phone and enters it in the CAD application, after which the CAD application displays the user's most recent designs. Section 4.3.8 outlines an attack relevant to this scenario.¶
3.3.9. Example A9: Administer a System (Backchannel-Transferred Session Pattern)
A network administrator wants to access an administration portal used to configure network assets and deploy new applications. When attempting to access the service, the network administrator receives a notification in an app on their mobile device, requesting them to confirm access to the portal. The network administrator approves the request on their mobile phone and is granted access to the portal. Section 4.3.9 describes how an attacker might exploit this flow.¶
4. Cross-Device Flow Exploits
Attackers exploit the absence of an authenticated channel between the two devices used in a cross-device flow by using social engineering techniques typically used in phishing attacks.¶
In cross-device authorization flows, the attacker uses these social engineering techniques by changing the context in which the authorization request is presented to convince the user to grant authorization when they shouldn't. These attacks are also known as CDCP attacks.¶
In cross-device session transfer flows, the attacker uses these social engineering techniques to convince the user to initiate a session transfer and send them a session transfer code. Once the attacker is in possession of this session transfer code, they present it to the Authorization Server to transfer the session and access the user's resources. These attacks are referred to as CDSP attacks.¶
4.2. Cross-Device Session Transfer Exploits
Attackers exploit cross-device session transfer flows by using social engineering techniques typically used in phishing attacks to convince the user to authorize the transfer of a session and then send the session transfer code or QR code to the attacker. The absence of an authenticated channel between these two devices enables the attacker to use the session transfer code on their own device to obtain access to the session and access the user's data. These attacks are referred to as CDSP attacks.¶
+---------------+ +---------------+
+------>| Authorization | | Authorization |
| | Device |--(C) Session -------->| Server |
| | | Transfer Request | |
| | | | |
| | |<-(D) Session ---------| |
| | | Transfer Code | |
| | | | |
| +---------------+ | |
(B) User | | |
| Starts (E) User Views | |
| Flow | Session Transfer Code | |
| v or QR Code | |
+--------------------------------+ | |
| User | | |
+--------------------------------+ | |
^ | | |
| | | |
(A) Attacker (F) User Sends Session | |
| Sends | Transfer or QR Code | |
| Social | to Attacker | |
| Engineering | | |
| Message v | |
+-------------------------------+ | |
| Attacker | | |
+-------------------------------+ | |
| | |
(G) Attacker Enters | |
| Session Transfer Code | |
| or Scans QR Code | |
v | |
+---------------+ | |
| Consumption | | |
| Device |--(H) Present -------->| |
| | Session Transfer | |
| | Code | |
| | | |
| |<-(I) Return Session --| |
| | Context | |
+---------------+ +---------------+- (A)
- The attacker sends a social engineering message that convinces the user that they should authorize a session transfer including instructions on what to do with the QR code or session transfer code once they obtained it.¶
- (B)
- The user starts the flow and is authenticated on their Authorization Device before they authorize the transfer of the session to the Consumption Device.¶
- (C)
- The client on the Authorization Device requests a session transfer code from the Authorization Server.¶
- (D)
- The Authorization Server responds with a session transfer code, which may be rendered as a QR code on the Authorization Device.¶
- (E)
- The user views the session transfer code, which may be rendered as a QR code.¶
- (F)
- The user sends the QR code or session transfer code to the attacker, following the instructions they received in step (A).¶
- (G)
- Once the attacker receives the QR code, they scan it or enter it on their own Consumption Device.¶
- (H)
- The client on the Consumption Device presents the session transfer code to the Authorization Server.¶
- (I)
- The Authorization Server verifies the session transfer code and returns the session context information needed to resume the session on the Consumption Device. The attacker resumes the session on their own Consumption Device and is able to access the information that the user authorized on their Authorization Device in step (B).¶
4.3. Examples of Cross-Device Flow Exploits
The following examples illustrate these attacks in practical settings applied to the use cases described in Section 3.3. These examples show how the unauthenticated channel is exploited by attackers who can copy the QR codes and user codes, change the context in which they are presented using social engineering techniques, and mislead end users to grant consent to avail of services, access data, and make payments.¶
4.3.1. Example B1: Illicit Access to a Video Streaming Service (User-Transferred Session Data Pattern)
This exploit applies to the use case described in Section 3.3.1.¶
An attacker obtains a smart TV and attempts to access an online streaming service. The smart TV obtains a QR code from the streaming service Authorization Server and displays it on screen. The attacker copies the QR code and embeds it in an email that is sent to a large number of recipients. The email contains a message stating that the streaming service wants to thank them for their loyal support and by scanning the QR code, they will be able to add a bonus device to their account for no charge. One of the recipients opens the email and scans the QR code to claim the loyalty reward. The user performs multi-factor authentication, and when asked if they want a new device to be added to their account, they authorize the action. The attacker's device is now authorized to access the content and obtains an access and refresh token. The access token allows the attacker to access content, and the refresh token allows the attacker to obtain fresh tokens whenever the access token expires.¶
The attacker scales up the attack by emulating a new smart TV, obtaining multiple QR codes and widening the audience it sends the QR code to. Whenever a recipient scans the QR code and authorizes the addition of a new device, the attacker obtains an access and refresh token, which they sell for a profit.¶
4.3.2. Example B2: Illicit Access to Productivity Services (User-Transferred Session Data Pattern)
This exploit applies to the use case described in Section 3.3.2.¶
An attacker emulates an enterprise application (e.g., an interactive whiteboard) and initiates a cross-device flow by requesting a user code and URL from the Authorization Server. The attacker obtains a list of potential victims and sends an email informing users that their files will be deleted within 24 hours if they don't follow the link, enter the user code, and authenticate. The email reminds them that this is the third time that they have been notified and their last opportunity to prevent deletion of their work files. One or more employees respond by following the URL, entering the code, and performing multi-factor authentication. Throughout the authentication experience, the user is interacting with a trusted user experience, reinforcing the legitimacy of the request. Once these employees authorize access, the attacker obtains access and refresh tokens from the Authorization Server and uses them to access the users' files, perform lateral attacks to obtain access to other information, and continuously refresh the session by requesting new access tokens. These tokens may be exfiltrated and sold to third parties.¶
4.3.3. Example B3: Illicit Access to Physical Assets (User-Transferred Session Data Pattern)
This exploit applies to the use case described in Section 3.3.3.¶
An attacker copies a QR code from a bicycle locked in a bicycle rack in a city, prints it on a label, and places the label on a bicycle at the other end of the bicycle rack. A customer approaches the bicycle that contains the replicated QR code, scans the code, and authenticates before authorizing payment for renting the bicycle. The bicycle rack unlocks the bicycle containing the original QR code, and the attacker removes the bicycle before cycling down the street, while the customer is left frustrated that the bicycle they were trying to use is not being unlocked [NYC.Bike]. The customer proceeds to unlock another bicycle and lodges a complaint with the bicycle rental company.¶
4.3.4. Example B4: Illicit Transaction Authorization (Backchannel-Transferred Session Pattern)
These exploits apply to the use case described in Section 3.3.4.¶
4.3.4.1. Example B4.1: Bulk Authorization Request (Backchannel-Transferred Session Pattern)
An attacker obtains a list of user identifiers for a financial institution and triggers a transaction request for each of the users on the list. The financial institution's Authorization Server sends push notifications to each of the users, requesting authorization of a transaction. The vast majority of users ignore the request to authorize the transaction, but a small percentage grants authorization by approving the transaction.¶
4.3.4.2. Example B4.2: Fake Help Desk (Backchannel-Transferred Session Pattern)
An attacker obtains the contact information for a user and contacts them, pretending to be a representative of the user's financial institution. The attacker informs the user that there were a number of fraudulent transactions against their account and asks them to review these transactions by approving or rejecting them. The attacker then triggers a sequence of transactions. The user receives an authorization request for each transaction and declines them as they do not recognize them. The attacker then informs the user that they need to close the user's account and transfer all the funds to a new account to prevent further fraudulent transactions. The user receives another authorization request that they approve, or provides additional authorization information to the attacker, which enables the attacker to complete their attack and defraud the user.¶
4.3.5. Example B5: Illicit Network Join (Cross-Device Session Transfer Pattern)
This exploit applies to the use case described in Section 3.3.5.¶
An attacker creates a message to all employees of a company, claiming to be from a trusted technology provider investigating a suspected security breach. They ask employees to send them the QR code typically used to join a new device to the network, along with detailed steps on how to obtain the QR code. The employee, eager to assist, initiates the process to add a new mobile device to the network. They authenticate to the network and obtain a QR code. They send the QR code to the attacker. The attacker scans the QR code and adds their own device to the network. They use this device access as an entry point and perform lateral moves to obtain additional privileges and access to restricted resources.¶
4.3.6. Example B6: Illicit Onboarding (User-Transferred Session Data Pattern)
This exploit applies to the use case described in Section 3.3.6.¶
An attacker initiates an employee onboarding flow and obtains a QR code from the onboarding portal to invoke a digital wallet and present a verifiable credential attesting to a new employee's identity. The attacker obtains a list of potential new employees and sends an email informing them that it is time to present proof of their background check or government
4.3.7. Example B7: Illicit Application Bootstrap (Cross-Device Session Transfer Pattern)
This exploit applies to the use case described in Section 3.3.7.¶
An attacker creates a message to all employees of a company, claiming to be from the company's IT service provider. They claim that they are trying to resolve an application performance issue and ask employees to send them the QR code typically used to transfer a session. The employee, eager to assist, initiates the process to transfer a session. They authenticate, obtain a QR code, and then send the QR code to the attacker. The attacker scans the QR code with their mobile phone and accesses the user's data and resources.¶
4.3.8. Example B8: Account Takeover (User-Transferred Authorization Data Pattern)
This exploit applies to the use case described in Section 3.3.8.¶
An attacker obtains a user's credentials for a Computer-Aided Design (CAD) application but cannot complete the authorization without the 6-digit authorization code sent to the user's mobile phone. The attacker triggers the authorization request, causing the Authorization Server to send a 6-digit authorization code to the user's mobile phone. The attacker then contacts the user, claiming to be from the CAD application's support desk and investigating a problem with the user's account, and asks the user to read back the code they have just received. Because the attacker has established the context for the code, the user provides it. The attacker enters the code in the CAD application and obtains access to the user's designs.¶
4.3.9. Example B9: Illicit Access to Administration Capabilities Through Consent Request Overload (Backchannel-Transferred Session Pattern)
This exploit applies to the use case described in Section 3.3.9.¶
An attacker attempts to access an administration portal repeatedly, generating a stream of authorization requests to the network administrator. The attempts are timed to occur while the administrator is asleep. The administrator is woken by the incoming requests on their phone, and in an attempt to stop the notifications, they accidentally approve access, and the attacker gains access to the portal.¶
4.3.10. Out of Scope
In all of the attack scenarios listed above, a user is misled or exploited. For other attacks, where the user is willingly colluding with the attacker, the threat model, security implications, and potential mitigations are very different. For example, a cooperating user can bypass software mitigations on their device, share access to hardware tokens with the attacker, and install additional devices to forward radio signals to circumvent proximity checks.¶
This document only considers scenarios where a user does not collude with an attacker.¶
5. Cross-Device Protocols and Standards
Cross-device flows that are subject to the attacks described earlier typically share the following characteristics
-
The attacker can initiate the flow and manipulate the context of an authorization request. For example, the attacker can obtain a QR code or user code, or the attacker can request an authentication
/authorization decision from the user.¶ -
The interaction between the Consumption Device and Authorization Device is unauthenticated
. That is, it is left to the user to decide if the QR code, user code, or authentication request is being presented in a legitimate context.¶
Protocols that have been standardized (or are in the process of being standardized) that share these characteristics include:¶
-
IETF OAuth 2.0 device authorization grant [RFC8628]: A standard to enable authorization on devices with constrained input capabilities (e.g., smart TVs, printers, and kiosks). In this protocol, the user code or QR code is displayed on the Consumption Device and entered on a second device (e.g., a mobile phone).¶
-
OpenID Foundation CIBA [CIBA]: A standard developed in the OpenID Foundation that allows a device or service (e.g., a personal computer, smart TV, or kiosk) to request the OpenID Provider to initiate an authentication flow if it knows a valid identifier for the user. The user completes the authentication flow using a second device (e.g., a mobile phone). In this flow, the user does not scan a QR code or obtain a user code from the Consumption Device but is instead contacted by the OpenID Provider to complete the authentication using a push notification, email, text message, or any other suitable mechanism.¶
-
OpenID for Verifiable Credential Protocol Suite (Issuance, Presentation): The OpenID for Verifiable Credentials enables cross-device scenarios by allowing users to scan QR codes to retrieve credentials (Issuance; see [OpenID.VCI]) or present credentials (Presentation; see [OpenID.VP]). The QR code is presented on a device that initiates the flow.¶
-
Self-Issued OpenID Provider v2 (SIOPv2): A standard that allows end users to present self-attested or third-party attested attributes when used with OpenID for Verifiable Credential protocols. The user scans a QR code presented by the relying party to initiate the flow.¶
Cross-device protocols SHOULD NOT be used for same-device scenarios. If the Consumption Device and Authorization Device are the same device, protocols like OpenID Connect Core [OpenID.Core] and OAuth 2.0 authorization code grant as defined in [RFC6749] are more appropriate. If a protocol supports both same-device and cross-device modes (e.g., [OpenID.SIOPv2] and [OpenID.VP]), the cross-device mode SHOULD NOT be used for same-device scenarios. An Authorization Server MAY choose to block cross-device protocols used in same-device scenarios if it detects that the same device is used. Implementers should take into account that in environments that use Network Address Translation (NAT), multiple devices may appear to originate from the same network address, increasing the risk of incorrectly inferring that a cross-device flow is occurring on a single device.¶
The W3C Digital Credentials API [W3C.DCAPI] is a standard that defines a browser API for requesting and presenting verifiable credentials. The API is designed to be used in both same-device and cross-device scenarios. In cross-device scenarios, the API can be used to secure flows against the attacks presented in this document by ensuring proximity between the Consumption Device and Authorization Device (e.g., by leveraging Bluetooth Low Energy (BLE)). In same-device scenarios, the API can be used without proximity checks.¶
An Authorization Server MAY use device fingerprinting, network address, or other techniques to detect if a cross-device protocol is being used on the same device. If an implementer decides to use a cross-device protocol or a protocol with a cross-device mode in a same-device scenario, the mitigations recommended in this document SHOULD be implemented to reduce the risks that the unauthenticated channel is exploited.¶
6. Mitigating Against Cross-Device Flow Attacks
The unauthenticated channel between the Consumption Device and the Authorization Device allows attackers to change the context in which the authorization request is presented to the user. This shifts responsibility of authenticating the channel between the two devices to the end user. End users have "expertise elsewhere", are typically not security experts, and don't understand the protocols and systems they interact with. As a result, end users are poorly equipped to authenticate the channel between the two devices. Mitigations should focus on:¶
-
Minimizing reliance on the user to make decisions to authenticate the channel.¶
-
Providing better information with which to make decisions to authenticate the channel.¶
-
Recovering from incorrect channel authentication decisions by users.¶
To achieve the above outcomes, mitigating against CDCP attacks requires a three-pronged approach:¶
-
Reduce the risks of deployed protocols with practical mitigations.¶
-
Adopt or develop protocols that are less susceptible to these attacks where possible.¶
-
Provide analytical tools to assess vulnerabilities and effectiveness of mitigations.¶
6.1. Practical Mitigations
A number of protocols that enable cross-device flows that are susceptible to CDCP attacks are already deployed. The security profile of these protocols can be improved through practical mitigations that provide defense in depth that either:¶
-
Prevents the attack from being initiated.¶
-
Disrupts the attack once it is initiated.¶
-
Remediates or reduces the impact if the attack succeeds.¶
It is RECOMMENDED that one or more of the mitigations be applied when implementing a cross-device flow. Each mitigation, despite limitations in its effectiveness, provides an additional layer of security that may increase the difficulty of initiating an attack, disrupt attacks in progress, or reduce the impact of a successful attack.¶
6.1.1. Establish Proximity
The unauthenticated channel between the Consumption Device and Authorization Device allows attackers to obtain a QR code or user code in one location and display it in another location. Consequently, proximity
-
Physical connectivity: This is a good indicator of proximity but requires specific ports, cables, and hardware, and it may be challenging from a user experience perspective or may not be possible in certain settings (e.g., when USB ports are blocked or removed for security purposes). Physical connectivity may be better suited to dedicated hardware like FIDO devices that can be used with protocols that are resistant to the exploits described in this document. The use of physically connected devices may introduce additional security risks (e.g., data access or device compromise through malicious peripherals), the assessment and mitigation of which are beyond the scope of this document.¶
-
Wireless proximity: Near Field Communications (NFC), Bluetooth Low Energy (BLE), and Ultra Wideband (UWB) services can be used to prove proximity between the two devices. NFC technology is widely deployed in mobile phones as part of payment solutions, but NFC readers are less widely deployed. BLE presents another alternative for establishing proximity but may present user experience challenges when setting up. UWB standards such as IEEE 802.15.4 and the IEEE 802.15.4z-2020 Amendment 1 enable secure ranging between devices and allow devices to establish proximity relative to each other [IEEE-802.15.4]. FIDO and WebAuthn-based cross-device flows leverage wireless proximity using BLE and are the RECOMMENDED approach for performing secure cross-device flows (see Section 6.2.3). For the presentation of digital credentials, the W3C Digital Credentials API [W3C.DCAPI] can be used.¶
-
Shared network: Device proximity can be inferred by verifying that both devices are on the same network. This check may be performed by the Authorization Server by comparing the network addresses of the device where the code is displayed (Consumption Device) with that of the Authorization Device. Alternatively, the check can be performed on the device, provided that the network address is available. This could be achieved if the Authorization Server encodes the Consumption Device's network address in the QR code and uses a digital signature to prevent tampering with the code. This does require the wallet to be aware of the countermeasure and effectively enforce it. Note that it is common for a Consumption Device (e.g., a TV) to use a Wi-Fi connection while the Authorization Device (e.g., a phone) uses a mobile network. Though physically in proximity, they don't share a network, so other proximity checks are needed.¶
-
Geolocation: Proximity can be established by comparing geolocation information derived from Global Navigation Satellite System (GNSS) coordinates or geolocation lookup of IP addresses and comparing proximity. Geolocation based on GNSS may vary in accuracy depending on the user's location and, when mapped to national or regional boundaries, may show a Consumption and Authorization Device in different locations if those devices are close to a border. Since relative position is more important than absolute location, implementations should consider relative location to both devices rather than absolute location when determining proximity. Geolocation based on IP addresses may be inaccurate along regional or national borders due to overlapping coverage by different network providers from the respective regions. This may result in the Consumption Device being mapped to one region, while the Authorization Device may be on another network from another provider and mapped to another region. These inaccuracies may require restrictions to be at a more granular level (e.g., same city, country, region, or continent). Similar to the shared network checks, these checks may be performed by the Authorization Server or on the user's device, provided that the information encoded in a QR code is integrity protected using a digital signature.¶
Depending on the risk profile and the threat model in which a system is operating, it MAY be necessary to use more than one mechanism to establish proximity to raise the bar for any potential attackers. Proximity mechanisms that rely on establishing a user's location or identifying a user's device SHOULD be evaluated for their privacy implications within the context of a specific application or deployment.¶
Limitations: Proximity mechanisms make it harder to perform CDCP attacks. However, depending on how the proximity check is performed, an attacker may be able to circumvent the protection: The attacker can use a VPN to simulate a shared network or spoof a GNSS position. For example, the attacker can try to request the location of the end user's Authorization Device through browser APIs and then simulate the same location on their Consumption Device using standard debugging features available on many platforms. Relying on IP address mapping can degrade user experience when a VPN is used on the Consumption or Authorization Device. In such cases, the devices may appear to be in different locations, requiring additional user guidance or alternative mechanisms to establish proximity.¶
6.1.2. Short-Lived/Time-Bound QR or User Codes
The impact of an attack can be reduced by making QR or user codes short-lived. If an attacker obtains a short-lived code, the duration during which the unauthenticated channel can be exploited is reduced, potentially increasing the cost of a successful attack. This mitigation can be implemented on the Authorization Server without changes to other system components.¶
Limitations: There is a practical limit to how short a user code can be valid due to network latency and user experience limitations (time taken to enter a code, time to complete authentication, or time needed to re-enter codes or re-authenticate due to an error). More sophisticated CDCP attacks counter the effectiveness of short-lived codes by convincing a user to respond to a phishing email and only request the QR or user code once the user clicks on the link in the phishing email [SQPHISH].¶
6.1.3. One-Time or Limited-Use Codes
By enforcing one-time use or limited use of user or QR codes, the Authorization Server can limit the impact of attacks where the same user code or QR code is sent to multiple victims. One-time use may be achieved by including a nonce or date stamp in the user code or QR code, which is validated by the Authorization Server when the user scans the QR code against a list of previously issued codes. This mitigation can be implemented on the Authorization Server without changes to other system components.¶
Limitations: Enforcing one-time use may be difficult in large globally distributed systems with low latency requirements, in which case short-lived tokens may be more practical. One-time use codes may also have an impact on the user experience. For example, a user may enter a code, but their session may be interrupted before the access request is completed. If the code is a one-time use code, they would need to restart the session and obtain a new code since they won't be allowed to enter the same code a second time. To avoid this, implementers MAY allow the same code to be presented a few times.¶
6.1.4. Unique Codes
By issuing unique user or QR codes, an Authorization Server can detect if the same codes are being repeatedly submitted. This may be interpreted as anomalous behavior, and the Authorization Server MAY choose to decline issuing access and refresh tokens if it detects the same codes being presented repeatedly. This may be achieved by maintaining a deny list that contains QR codes or user codes that were previously used. The Authorization Server MAY use a sliding window equal to the lifetime of a token if short
Limitations: Maintaining a deny list of previously redeemed codes, even for a sliding window, may have an impact on the latency of globally distributed systems. One alternative is to segment user codes by geography or region and maintain local deny lists.¶
6.1.5. Content Filtering
Attackers exploit the unauthenticated channel by changing the context of the user code or QR code and then sending a message to a user (email, text messaging, instant messaging, or other communication mechanisms). By deploying content filtering (e.g., anti-spam filter), these messages can be blocked and prevented from reaching the end users. It may be possible to fine-tune content
Limitations: Some scenarios may require legitimate retransmission of user data, QR
codes, and authorization data (e.g., retries). To prevent the disruption of legitimate scenarios, content filters may use a threshold and allow a limited number of messages with the same QR or user codes to be transmitted before interrupting the delivery of those messages. Content filtering may also be fragmented across multiple communications systems and communication channels (email, text messaging, instant messaging, or other communication mechanisms), making it harder to detect or interrupt attacks that are executed over multiple channels, unless there is a high degree of integration between content
6.1.6. Detect and Remediate
The Authorization Server may be able to detect misuse of the codes due to repeated use as described in Section 6.1.4, as an input from a content
Limitations: Detection and remediation require that resource servers are integrated with security eventing systems or token introspection services. This may not always be practical for existing systems and may need to be targeted to the most critical resource services in an environment.¶
6.1.7. Trusted Devices
If an attacker is unable to initiate the protocol, they are unable to obtain a QR code or user code that can be leveraged for the attacks described in this document. By restricting the protocol to only be executed on devices trusted by the Authorization Server, it prevents attackers from using arbitrary devices or mimicking devices to initiate the protocol.¶
Authorization Servers MAY use different mechanisms to establish which devices they trust for cross-device flows. This includes limiting cross-device flows to specific device types such as interactive whiteboards or smart TVs, pre-registering devices with the Authorization Server, or only allowing cross-device flows on devices managed through device management systems. Device management systems may enforce policies that govern patching, version updates, on-device anti-malware deployment, revocation status, and device location amongst others. Trusted devices MAY have their identities rooted in hardware (e.g., a Trusted Platform Module (TPM) or equivalent technology).¶
By only allowing trusted devices to initiate cross-device flows, it requires the attacker to have access to such a device and maintain access in a way that does not result in the device's trust status from being revoked.¶
Mechanisms that identify a specific device SHOULD be evaluated for their privacy implications within the context of a specific application or deployment.¶
Limitations: An attacker may still be able to obtain access to a trusted device and use it to initiate authorization requests, making it necessary to apply additional controls and integrate with other threat detection and management systems that can detect suspicious behavior, such as repeated requests to initiate authorization or a high volume of service activation on the same device. An attacker may also spoof device identities or device types that are not cryptographical
6.1.8. Trusted Networks
An attacker can be prevented from initiating a cross-device flow protocol by only allowing the protocol to be initiated on a trusted network or within a security perimeter (e.g., a corporate network). A trusted network may be defined as a set of IP addresses, and joining the network is subject to security controls managed by the network operator, which may include only allowing trusted devices on the network, device management, user authentication, and physical access policies and systems. In some deployments, a trusted network may also be inferred using information supplied by a Subscriber Identity Module (SIM) or the network operator. By limiting protocol initiation to a specific network, the attacker needs to have access to a device on the network. This mitigation can be implemented on the Authorization Server without changes to other system components.¶
Limitations: Network-level controls may not always be feasible, especially when dealing with consumer scenarios where the network may not be under control of the service provider. Even if it is possible to deploy network-level controls, they SHOULD be used in conjunction with other controls outlined in this document to achieve defense in depth.¶
6.1.9. Limited Scopes
Authorization Servers MAY choose to limit the scopes they include in access tokens issued through cross-device flows where the unauthenticated channel between two devices is susceptible to being exploited. Including limited scopes lessens the impact in case of a successful attack. The decision about which scopes are included may be further refined based on whether the protocol is initiated on a trusted device or the user's location relative to the location of the Consumption Device. This mitigation can be implemented on the Authorization Server without changes to other system components.¶
Limitations: Limiting scopes reduces the impact of a compromise but does not avoid it. It SHOULD be used in conjunction with other mitigations described in this document.¶
6.1.10. Short-Lived Tokens
Another mitigation strategy includes limiting the life of the access and refresh tokens. The lifetime can be lengthened or shortened, depending on the user's location, the resources they are trying to access, or whether they are using a trusted device. Short-lived tokens do not prevent or disrupt the attack but serve as a remedial mechanism in case the attack succeeded. This mitigation can be implemented on the Authorization Server without changes to other system components.¶
Limitations: Short-lived tokens reduce the time window during which an attacker can benefit from a successful attack. This is most effective for access tokens. However, once an attacker obtains a refresh token, they can continue to request new access tokens as well as refresh tokens. Forcing the expiry of refresh tokens may cause the user to re-authorize an action more frequently, which results in a negative user experience.¶
6.1.11. Rate Limits
An attacker that engages in a scaled attack may need to request a large number of user codes (see the exploit described in Section 4.3.1) or initiate a large number of authorization requests (see the exploits described in Sections 4.3.4.1 and 4.3.9) in a short period of time. An Authorization Server MAY apply rate limits to minimize the number of requests it would accept from a client or send to a user in a limited time period.¶
Limitations: Rate limits are effective at slowing an attacker down and help to degrade scaled attacks, but they do not prevent more targeted attacks that are executed with lower volumes and velocity. Therefore, they should be used along with other techniques to provide defense in depth against cross-device attacks.¶
6.1.12. Sender-Constrained Tokens
Sender
Limitations: Sender
6.1.13. User Education
Research shows that user education is effective in reducing the risk of phishing attacks [Baki2023]. The service provider MAY educate users on the risks of CDCP, as part of broader anti-phishing education, such as guidance to avoid clicking on links in emails or other unsolicited messages, as described by NIST in [NISTPhishing]. In addition, the service provider MAY provide out-of-band reinforcement on the context and conditions under which an authorization grant may be requested. For example, if the service provider does not send emails containing QR codes that request users to grant authorization, this expectation may be reinforced through marketing communications and anti-fraud awareness campaigns. The service provider MAY also reinforce these user education messages through in-app experiences. In [PCRSM2023], it is proposed that users be advised to verify the trustworthiness of the source of a QR code, for example, by confirming that the connection is protected using TLS or that the URL belongs to the Authorization Server.¶
Limitations: Although user education helps to raise awareness and reduce the overall risk to users, it is insufficient on its own to mitigate CDCP attacks. In particular, carefully designed phishing attacks can be practically indistinguishab
6.1.14. User Experience
The user experience SHOULD preserve the context within which the protocols were initiated and communicate this clearly to the user when they are asked to authorize, authenticate, or present a credential. In preserving the context, it should be clear to the user who invoked the flow, why it was invoked, and what the consequence of completing the authorization, authentication, or credential presentation is. The user experience SHOULD reinforce the message that unless the user initiated the authorization request, or was expecting it, they should decline the request.¶
This information MAY be communicated graphically or in a simple message (e.g., "It looks like you are trying to access your files on a digital whiteboard in your city center office. Click here to grant access to your files. If you are not trying to access your files, you should decline this request and notify the security department").¶
The user interface SHOULD provide an obvious and unambiguous way for the user to decline or cancel a request. To avoid accidental authorization grants, the "decline" option SHOULD be the default option or given similar prominence in the user experience as the "grant" option.¶
If the user uses an application on a mobile device to scan a QR code, the application MAY display information advising the user under which conditions they should expect to be asked to scan a QR code and under which circumstances they should never scan a QR code (e.g., display a message that the QR code will only be displayed on kiosks within trusted locations or on trusted websites hosted on a specific domain, and never in email or other media and locations).¶
The user experience MAY include information to further educate the user on CDCP attacks and reinforce the conditions under which authorization grants may be requested.¶
Limitations: Improvements to user experience on their own are unlikely to be sufficient and SHOULD be used in conjunction with other controls described in this document.¶
6.1.15. Authenticate then Initiate
By requiring a user to authenticate on the Consumption Device with a phishing
Limitations: This mitigation is limited to Consumption Devices capable of supporting phishing
6.1.16. Request Initiation Verification
The user MAY be asked to confirm if they initiated an authentication or authorization request by sending a one-time password (OTP) or PIN to the user's Authorization Device and asking them to enter it on the Consumption Device to confirm the request. If the request was initiated without the user's consent, they would receive an OTP or PIN out of context, which may raise suspicion for the user. In addition, they would not have information on where to enter the OTP or PIN. The user experience on the Authorization Device MAY reinforce the risk of receiving an out-of-context OTP or PIN and provide information to the user on how to report an unauthorized authentication or authorization request.¶
Limitations: The additional verification step may reduce the overall usability of the system as it is one more thing users need to do right. Attackers may combine conventional phishing attacks and target users who respond to those messages with an interactive attack that sets the expectation with the user that they will have to provide the OTP or PIN, in addition to granting authorization for the request.¶
6.1.17. Request Binding with Out-of-Band Data
In the User
Limitations: A sophisticated attacker may include an additional step in their attack where they create a phishing attack that gathers the out-of-band data from the user before initiating the authorization request. The additional step could also have a negative impact on the usability level of the solution.¶
6.1.18. Practical Mitigation Summary
The practical mitigations described in this section can, within the limitations described, prevent or substantially increase the difficulty of initiating attacks, disrupt attacks once they start, or reduce the impact of or remediate an attack if it succeeds. When one or more of these mitigations are combined, the overall security profile of a cross-device flow improves significantly. The following table provides a summary of these mitigations:¶
| Mitigation | Prevent | Disrupt | Recover |
|---|---|---|---|
| Establish Proximity | X | X | |
| Short |
X | ||
| One-Time or Limited-Use Codes | X | ||
| Unique Codes | X | ||
| Content Filtering | X | ||
| Detect and Remediate | X | ||
| Trusted Devices | X | ||
| Trusted Networks | X | ||
| Limited Scopes | X | ||
| Short-Lived Tokens | X | ||
| Rate Limits | X | X | |
| Sender |
X | ||
| User Education | X | ||
| User Experience | X | ||
| Authenticate then Initiate | X | ||
| Request Initiation Verification | X | ||
| Request Binding with Out-of-Band Data | X |
6.2. Protocol Selection
Some cross-device protocols are more susceptible to the exploits described in this document than others. In this section, we will compare three different cross-device protocols in terms of their susceptibility to exploits focused on the unauthenticated channel, the prerequisites to implement and deploy them, along with guidance on when it is appropriate to use them.¶
6.2.2. OpenID Foundation Client-Initiated Backchannel Authentication (CIBA)
6.2.2.1. Description
CIBA [CIBA] is a standard developed in the OpenID Foundation that allows a device or service (e.g., a personal computer, smart TV, or kiosk) to request the OpenID Provider to initiate an authentication flow if it knows a valid identifier for the user. The user completes the authentication flow using a second device (e.g., a mobile phone). In this flow, the user does not scan a QR code or obtain a user code from the Consumption Device, but is instead contacted by the OpenID Provider to complete the authentication using a push notification, email, text message, or any other suitable mechanism.¶
6.2.2.2. Susceptibility
CIBA is less susceptible to unauthenticated channel attacks, but it is still vulnerable to attackers who know or can guess the user identifier and initiate an attack as described in Section 4.3.4.1.¶
6.2.2.3. Device Capabilities
There is no requirement on the Consumption Device to support specific hardware. The Authorization Device must be registered
6.2.2.4. Mitigations
In addition to the Security Considerations section in [CIBA], it is RECOMMENDED that one or more of the mitigations outlined in this document be considered, especially mitigations that can help establish proximity or prevent attackers from initiating authorization requests.¶
6.2.2.5. When to Use
Use CIBA instead of the device authorization grant if it is possible for the Consumption Device to obtain a user identifier on the Consumption Device (e.g., through an input or selection mechanism) and if the Authorization Server can trigger an authorization on the Authorization Device. Do not use for same-device scenarios (e.g., if the Consumption Device and Authorization Device are the same device).¶
6.2.3. FIDO2/WebAuthn
6.2.3.1. Description
FIDO2/WebAuthn is a stack of standards developed in the FIDO Alliance and W3C, respectively, which allow for origin-bound, phishing
When a user wants to authenticate using their mobile device (authenticator) for the first time, they need to link their authenticator to their main device. This is done using a scan of a QR code. When the authenticator scans the QR code, the device sends an encrypted BLE advertisement containing keying material and a tunnel ID. The main device (CTAP client) and authenticator both establish connections to the web service, and the normal CTAP protocol exchange occurs.¶
If the user chooses to keep their authenticator linked with the main device, the QR code link step is not necessary for subsequent use. The user will receive a push notification on the authenticator.¶
6.2.3.2. Susceptibility
The CDA flow proves proximity by leveraging BLE advertisements for service establishment, significantly reducing the susceptibility to any of the exploits described in examples B1-B6 in Section 4.3.¶
6.2.3.3. Device Capabilities
Both the Consumption Device and the authenticator require BLE support and access to the internet. The Consumption Device must support both the WebAuthn API [W3CWebAuthn] (or a platform
6.2.3.4. Mitigations
FIDO CDA establishes proximity through the use of BLE, reducing the need for additional mitigations. An implementer MAY still choose to implement additional mitigations as described in this document.¶
6.2.3.5. When to Use
FIDO2/WebAuthn SHOULD be used for cross-device authentication scenarios whenever the devices are capable of doing so and a suitable FIDO credential is not available on the Consumption Device. It MAY be used as an authentication method with the authorization code grant [RFC6749] and Proof Key for Code Exchange (PKCE) [RFC7636], to grant authorization to a Consumption Device (e.g., a smart TV or interactive whiteboard) using a device serving as the FIDO authenticator (e.g., a mobile phone) for authentication. This combination of FIDO2/WebAuthn and authorization code flow with PKCE enables cross-device authorization flows, without the risks posed by the device authorization grant [RFC8628].¶
6.2.4. Protocol Selection Summary
The FIDO CDA flow provides the best protection against attacks on the unauthenticated channel for cross-device flows. It can be combined with OAuth 2.0 and OpenID Connect protocols for standards-based authorization and authentication flows. If FIDO2/WebAuthn support is not available, CIBA provides an alternative, provided that there is a channel through which the Authorization Server can contact the end user. Examples of such a channel include device push notifications, email, or text messages that the user can access from their device. If CIBA is used, additional mitigations to enforce proximity and initiate transactions from trusted devices or trusted networks SHOULD be considered. The OAuth 2.0 device authorization grant provides the most flexibility and has the lowest requirements on devices used, but it is RECOMMENDED that it only be used when additional mitigations are deployed to prevent attacks that exploit the unauthenticated channel between devices.¶
6.3. Foundational Pillars
Experience with web authorization and authentication protocols such as OAuth and OpenID Connect has shown that securing these protocols can be hard. The major reason for this is that the landscape in which they are operating -- the web infrastructure with browsers, servers, and the underlying network -- is complex, diverse, and ever-evolving.¶
As is the case with other kinds of protocols, it can be easy to overlook vulnerabilities in this environment. One way to reduce the chances of hidden security problems is to use mathematical
There are two major strengths of formal analysis. First, finding new vulnerabilities does not require creativity (i.e., new classes of attacks can be uncovered even if no one thought of these attacks before). In a faithful model, vulnerabilities become clear during the proof process or even earlier. Second, formal analysis can exclude the existence of any attacks within the boundaries of the model (e.g., the protocol layers modeled, the level of detail and functionalities covered, the assumed attacker capabilities, and the formalized security goals).¶
As a downside, there is usually a gap between the model (which necessarily abstracts away from details) and implementations
There are various different approaches to formal security analysis, and each brings its own strengths and weaknesses. For example, models differ in the level of detail in which they can capture a protocol (granularity and expressiveness
The following works have been identified as relevant to the analysis of cross-device flows:¶
-
In "Formal analysis of self-issued OpenID providers" [Bauer2022], the protocol of [OpenID.SIOPv2] was analyzed using the Web Infrastructure Model (WIM). The WIM is specifically designed for the analysis of web authentication and authorization protocols. While it is a manual (pen-and-paper) model, it captures details of browsers and web interactions to a degree that is hard to match in automated models. In previous works, previously unknown flaws in OAuth, OpenID Connect, and OpenID FAPI were discovered using the WIM. In the analysis of a cross-device SIOPv2 flow in [Bauer2022], the request replay attack already described in Section 13.3 of [OpenID.SIOPv2] was confirmed in the model. A mitigation was implemented based on a so-called Cross-Device Stub, essentially a component that serves to link the two devices before the protocol flow starts. This can be seen as an implementation of a trusted device relationship as described in Section 6.1.7. The mitigation was shown to be effective in the model.¶
-
In "Security analysis of the Grant Negotiation and Authorization Protocol" [Helmschmidt2022], an analysis of a draft of the Grant Negotiation and Authorization Protocol (GNAP) [RFC9635] was performed using the Web Infrastructure Model (WIM). The same attack as in [Bauer2022] was found to apply to GNAP as well. In this case, a model of a "careful user" (see Section 6.1.13) was used to show that the attack can be prevented (at least in theory) by the user.¶
-
In "The Good, the Bad and the (Not So) Ugly of Out-of-Band Authentication with eID Cards and Push Notifications: Design, Formal and Risk Analysis" [MPRCS2020], Pernpruner et al. formally analyzed an authentication protocol relying on push notifications delivered to an out-of-band device to approve the authentication attempt on the primary device (the Backchannel
-Transferred Session Pattern in Section 3.1.2). The analysis was performed using the specification language ASLan++ and the model checker SATMC. According to the results of the analysis, they identified and defined the category of "implicit attacks", which manage to deceive users into approving a malicious authentication attempt through social engineering techniques, thus not compromising all the authentication factors involved; these attacks are aligned with the definition of CDCP attacks.¶ -
In "An Automated Multi-Layered Methodology to Assist the Secure and Risk-Aware Design of Multi-Factor Authentication Protocols" [PCRSM2023], Pernpruner et al. defined a multi-layered methodology to analyze multi-factor authentication protocols at different levels of granularity. They leveraged their methodology to formally analyze a protocol relying on a QR code that has to be scanned on a secondary device to approve the authentication attempt on the primary device (the User
-Transferred Session Data Pattern in Section 3.1.1). Given the results of the analysis, they proposed some practical mitigations to either prevent or reduce the risk of successful attacks, such as those described in Sections 6.1.13, 6.1.16, and 6.1.17.¶
8. IANA Considerations
This document has no IANA actions.¶
9. Conclusion
Cross-device flows enable authorization on devices with limited input capabilities, allow for secure authentication when using public or shared devices, provide a path toward multi-factor authentication, and provide the convenience of a single, portable credential store.¶
The popularity of cross-device flows attracted the attention of attackers that exploit the unauthenticated channel between the Consumption Device and Authorization Device using techniques commonly used in phishing attacks. These CDCP attacks allow attackers to obtain access and refresh tokens, rather than authentication credentials, resulting in access to resources even if the user used multi-factor authentication.¶
To address these attacks, we propose a three-pronged approach that includes deploying practical mitigations to safeguard protocols that are already deployed, providing guidance on when to use different protocols (including protocols that are not susceptible to these attacks), and introducing formal methods to evaluate the impact of mitigations and find additional issues.¶
10. References
10.1. Normative References
- [CAEP]
-
Tulshibagwale, A. and T. Cappalli, "OpenID Continuous Access Evaluation Profile 1.0", , <https://
openid >..net /specs /openid -caep -1_ 0 -final .html - [CIBA]
-
Rodriguez, G. F., Walter, F., Nennker, A., Tonge, D., and B. Campbell, "OpenID Connect Client
-Initiated Backchannel Authentication Flow - Core 1.0" , , <https://openid >..net /specs /openid -client -initiated -backchannel -authentication -core -1_ 0 .html - [FIDOCTAP22]
-
Bradley, J., Jones, M.B., Kumar, A., Lindemann, R., Verrept, S., and D. Waite, "Client to Authenticator Protocol (CTAP)", , <https://
fidoalliance >..org /specs /fido -v2 .2 -ps -20250714 /fido -client -to -authenticator -protocol -v2 .2 -ps -20250714 .html - [IEEE-802.15.4]
-
IEEE, "IEEE Standard for Low-Rate Wireless Networks", IEEE Std 802.15.4-2024, DOI 10
.1109 , , <https:///IEEESTD .2024 .10794632 doi >..org /10 .1109 /IEEESTD .2024 .10794632 - [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC6749]
-
Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10
.17487 , , <https:///RFC6749 www >..rfc -editor .org /info /rfc6749 - [RFC7636]
-
Sakimura, N., Ed., Bradley, J., and N. Agarwal, "Proof Key for Code Exchange by OAuth Public Clients", RFC 7636, DOI 10
.17487 , , <https:///RFC7636 www >..rfc -editor .org /info /rfc7636 - [RFC7662]
-
Richer, J., Ed., "OAuth 2.0 Token Introspection", RFC 7662, DOI 10
.17487 , , <https:///RFC7662 www >..rfc -editor .org /info /rfc7662 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [RFC8628]
-
Denniss, W., Bradley, J., Jones, M., and H. Tschofenig, "OAuth 2.0 Device Authorization Grant", RFC 8628, DOI 10
.17487 , , <https:///RFC8628 www >..rfc -editor .org /info /rfc8628 - [SSF]
-
Tulshibagwale, A., Cappalli, T., Scurtescu, M., Backman, A., Bradley, J., and S. Miel, "OpenID Shared Signals Framework Specification 1.0", , <https://
openid >..net /specs /openid -sharedsignals -framework -1_ 0 -final .html - [W3CWebAuthn]
-
Cappalli, T., Ed., Kumar, A., Ed., Lundberg, E., Ed., Miller, M., Ed., Pascoe, Ed., and N. Satragno, "Web Authentication: An API for accessing Public Key Credentials Level 3", W3C Candidate Recommendation Snapshot, , <https://
www >. Latest version available at <https://.w3 .org /TR /2026 /CR -webauthn -3 -20260526 / www >..w3 .org /TR /webauthn -3 /
10.2. Informative References
- [ARTDCPHISH]
-
Cooke, B., "The Art of the Device Code Phish", , <https://
0xboku >..com /2021 /07 /12 /Art Of Device Code Phish .html - [Baki2023]
-
Baki, S. and R. M. Verma, "Sixteen Years of Phishing User Studies: What Have We Learned?", IEEE Transactions on Dependable and Secure Computing, vol. 20, no. 2, pp. 1200-1212, , <https://
doi >..org /10 .1109 /TDSC .2022 .3151103 - [Bauer2022]
-
Bauer, C., "Formal analysis of self-issued OpenID providers", Master's Thesis, University of Stuttgart, , <https://
elib >..uni -stuttgart .de /handle /11682 /12417 - [DCATTACK]
-
Secureworks Counter Threat Unit Research Team, "OAuth's Device Code Flow Abused in Phishing Attacks", , <https://
www >..sophos .com /en -us /blog /oauths -device -code -flow -abused -in -phishing -attacks - [DCFLOWPHISH]
-
Min, D., "Microsoft 365 OAuth Device Code Flow and Phishing", , <https://
www >..optiv .com /insights /source -zero /blog /microsoft -365 -oauth -device -code -flow -and -phishing - [DEFCON29]
-
Hwong, J., "New Phishing Attacks Exploiting OAuth Authentication Flows (DEFCON 29)", DEF CON 29, Video, , <https://
www >..youtube .com /watch ?v =9sl RYvp KHp4 - [Helmschmidt2022
] -
Helmschmidt, F., "Security analysis of the Grant Negotiation and Authorization Protocol", Master's Thesis, University of Stuttgart, , <https://
elib >..uni -stuttgart .de /handle /11682 /12220 - [MPRCS2020]
-
Pernpruner, M., Carbone, R., Ranise, S., and G. Sciarretta, "The Good, the Bad and the (Not So) Ugly of Out-of-Band Authentication with eID Cards and Push Notifications: Design, Formal and Risk Analysis", Proceedings of the Tenth ACM Conference on Data and Application Security and Privacy, pp. 223-234, DOI 10
.1145 , , <https:///3374664 .3375727 doi >..org /10 .1145 /3374664 .3375727 - [NEWDCPHISH]
-
Syynimaa, N., "Introducing a new phishing technique for compromising Office 365 accounts", , <https://
aadinternals >..com /post /phishing / - [NISTGlossary]
-
NIST, "NIST Computer Security Resource Center Glossary", <https://
csrc >..nist .gov /glossary - [NISTPhishing]
-
NIST, "NIST Small Business Cybersecurity Fact Sheet: Phishing", <https://
www >..nist .gov /system /files /documents /2024 /03 /12 /Phishing_ SMB %20Fact Sheet_ 2024_ Final .pdf - [NYC.Bike]
-
Byrne, K. J., "Citi Bikes being swiped by joyriding scammers who have cracked the QR code", New York Post, , <https://
nypost >..com /2021 /08 /07 /citi -bikes -being -swiped -by -joyriding -scammers -who -have -cracked -the -qr -code / - [OpenID.Core]
-
Sakimura, N., Bradley, J., Jones, M. B., de Medeiros, B., and C. Mortimore, "OpenID Connect Core 1.0 incorporating errata set 2", , <https://
openid >..net /specs /openid -connect -core -1_ 0 .html - [OpenID.SIOPv2]
-
Yasuda, K., Jones, M., and T. Lodderstedt, "Self-Issued OpenID Provider v2 - draft 13", , <https://
openid >..net /specs /openid -connect -self -issued -v2 -1_ 0 .html - [OpenID.VCI]
-
Lodderstedt, T., Yasuda, K., Looker, T., and P. Bastian, "OpenID for Verifiable Credential Issuance 1.0", , <https://
openid >..net /specs /openid -4 -verifiable -credential -issuance -1_ 0 .html - [OpenID.VP]
-
Terbu, O., Lodderstedt, T., Yasuda, K., Fett, D., and J. Heenan, "OpenID for Verifiable Presentations 1.0", , <https://
openid >..net /specs /openid -4 -verifiable -presentations -1_ 0 .html - [PCRSM2023]
-
Pernpruner, M., Carbone, R., Sciarretta, G., and S. Ranise, "An Automated Multi-Layered Methodology to Assist the Secure and Risk-Aware Design of Multi-Factor Authentication Protocols", IEEE Transactions on Dependable and Secure Computing, vol. 21, no. 4, pp. 1935-1950, , <https://
doi >..org /10 .1109 /TDSC .2023 .3296210 - [RFC9635]
-
Richer, J., Ed. and F. Imbault, "Grant Negotiation and Authorization Protocol (GNAP)", RFC 9635, DOI 10
.17487 , , <https:///RFC9635 www >..rfc -editor .org /info /rfc9635 - [SQPHISH]
-
Talebzadeh, K. and N. Romsdahl, "SquarePhish: Advanced phishing tool combines QR codes and OAuth 2.0 device code flow", Help Net Security, Video, , <https://
www >..helpnetsecurity .com /2022 /08 /11 /squarephish -video / - [W3C.DCAPI]
-
Caceres, M., Ed., Cappalli, T., Ed., and M. Yosef, Ed., "Digital Credentials API", W3C Editor's Draft, , <https://
w3c >. Latest version available at <https://-fedid .github .io /digital -credentials / www >..w3 .org /TR /digital -credentials /
Contributors
The authors would like to thank Tim Cappalli, Nick Ludwig, Adrian Frei, Nikhil Reddy Boreddy, Bjorn Hjelm, Joseph Heenan, Brian Campbell, Damien Bowden, Kristina Yasuda, Tim Würtele, Karsten Meyer zu Selhausen, Maryam Mehrnezhad, Marco Pernpruner, Giada Sciarretta, Dean H. Saxe, Roy Williams, Aaron Parecki, George Fletcher, Hannes Tschofenig, Dan Moore, Deb Cooley, Paul Kyzivat, David Mandelberg, Jim Fenton, Bing Liu, Mohamed Boucadair, Mike Bishop, Roman Danyliw, and others for their valuable input, feedback, and general support of this work.¶