۱۳۹۹ مرداد ۳۱, جمعه

PKCE: What Can(Not) Be Protected


This post is about PKCE [RFC7636], a protection mechanism for OAuth and OpenIDConnect designed for public clients to detect the authorization code interception attack.
At the beginning of our research, we wrongly believed that PKCE protects mobile and native apps from the so called „App Impersonation" attacks. Considering our ideas and after a short discussion with the authors of the PKCE specification, we found out that PKCE does not address this issue.
In other words, the protection of PKCE can be bypassed on public clients (mobile and native apps) by using a maliciously acting app.

OAuth Code Flow


In Figure 1, we briefly introduce how the OAuth flow works on mobile apps and show show the reason why we do need PKCE.
In our example the user has two apps installed on the mobile phone: an Honest App and an Evil App. We assume that the Evil App is able to register the same handler as the Honest App and thus intercept messages sent to the Honest App. If you are more interested in this issue, you can find more information here [1].

Figure 1: An example of the "authorization code interception" attack on mobile devices. 

Step 1: A user starts the Honest App and initiates the authentication via OpenID Connect or the authorization via OAuth. Consequentially, the Honest App generates an Auth Request containing the OpenID Connect/OAuth parameters: client_id, state, redirect_uri, scope, authorization_grant, nonce, …. 
Step 2: The Browser is called and the Auth Request is sent to the Authorization Server (usually Facebook, Google, …).
  • The Honest App could use a Web View browser. However, the current specification clearly advice to use the operating system's default browser and avoid the usage of Web Views [2]. In addition, Google does not allow the usage of Web View browser since August 2016 [3].
Step 3: We asume that the user is authenticated and he authorizes the access to the requested resources. As a result, the Auth Response containing the code is sent back to the browser.

Step 4: Now, the browser calls the Honest App registered handler. However, the Evil App is registered on this handler too and receives the code.

Step 5: The Evil App sends the stolen code to the Authorization Server and receives the corresponding access_token in step 6. Now, the Evil App can access the authorized ressources.
  • Optionally, in step 5 the App can authenticate on the Authorization Server via client_id, client_secret. Since, Apps are public clients they do not have any protection mechanisms regarding the storage of this information. Thus, an attacker can easy get this information and add it to the Evil App.

    Proof Key for Code Exchange - PKCE (RFC 7636)

    Now, let's see how PKCE does prevent the attack. The basic idea of PKCE is to bind the Auth Request in Step 1 to the code redemption in Step 5. In other words, only the app generated the Auth Request is able to redeem the generated code.


    Figure 2: PKCE - RFC 7636 

    Step 1: The Auth Request is generated as previosly described. Additionally, two parameters are added:
    • The Honest App generates a random string called code_verifier
    • The Honest App computes the code_challenge=SHA-256(code_verifier)
    • The Honest App specifies the challenge_method=SHA256

    Step 2: The Authorization Server receives the Auth Request and binds the code to the received code_challenge and challenge_method.
    • Later in Step 5, the Authorzation Server expects to receive the code_verifier. By comparing the SHA-256(code_verifier) value with the recieved code_challenge, the Authorization Server verifies that the sender of the Auth Request ist the same as the sender of the code.
    Step 3-4: The code leaks again to the Evil App.

    Step 5: Now, Evil App must send the code_verifier together with the code. Unfortunatelly, the App does not have it and is not able to compute it. Thus, it cannot redeem the code.

     PKCE Bypass via App Impersonation

    Again, PKCE binds the Auth Request to the coderedemption.
    The question rises, if an Evil App can build its own Auth Request with its own code_verifier, code_challenge and challenge_method.The short answer is – yes, it can.

    Figure 3: Bypassing PKCE via the App Impersonation attack
    Step 1: The Evil App generates an Auth Request. The Auth Request contains the client_id and redirect_uri of the Honest App. Thus, the User and the Authorization Server cannot recognize that the Evil App initiates this request. 

    Step 2-4: These steps do not deviate from the previous description in Figure 2.

    Step 5: In Step 5 the Evil App sends the code_verifier used for the computation of the code_challenge. Thus, the stolen code can be successfully redeemed and the Evil App receives the access_token and id_token.

    OAuth 2.0 for Native Apps

    The attack cannot be prevented by PKCE. However, the IETF working group is currently working on a Draft describing recommendations for using OAuth 2.0 for native apps.

    References

    Vladislav Mladenov
    Christian Mainka (@CheariX)
    Related posts
    1. Hacking Tools Kit
    2. Hacker Tools 2019
    3. Hacking Tools Windows 10
    4. Hack Apps
    5. Hack Rom Tools
    6. Hacking Tools Download
    7. Beginner Hacker Tools
    8. Pentest Tools For Mac
    9. Hack Tools For Pc
    10. Pentest Tools Find Subdomains
    11. Hacking Tools Hardware
    12. Hacker Tools For Ios
    13. Black Hat Hacker Tools
    14. Github Hacking Tools
    15. Hack Tools Mac
    16. Nsa Hack Tools Download
    17. Hacker Tools Online
    18. Hacker Tools Apk Download
    19. Black Hat Hacker Tools
    20. Tools 4 Hack
    21. Hacker Tool Kit
    22. Hack Rom Tools
    23. Hacker Tools
    24. What Are Hacking Tools
    25. Hacker Hardware Tools
    26. Hacker Tools For Mac
    27. Physical Pentest Tools
    28. World No 1 Hacker Software
    29. Hacking Tools For Kali Linux
    30. Hacking Tools For Windows Free Download
    31. Hacking Tools Usb
    32. Hacking Tools Free Download
    33. Pentest Tools Download
    34. Hacking Tools For Kali Linux
    35. Hak5 Tools
    36. Hack Tools Pc
    37. Hack Tool Apk
    38. Hack Tools For Ubuntu
    39. Easy Hack Tools
    40. Pentest Tools
    41. Pentest Tools Open Source
    42. Pentest Tools Port Scanner
    43. Nsa Hack Tools
    44. Nsa Hacker Tools
    45. Nsa Hacker Tools
    46. Wifi Hacker Tools For Windows
    47. Physical Pentest Tools
    48. Pentest Tools List
    49. Pentest Tools List
    50. Top Pentest Tools
    51. Beginner Hacker Tools
    52. Pentest Tools For Windows
    53. Hacker Tools For Mac
    54. Hacker Search Tools
    55. Hack Tools For Games
    56. Tools 4 Hack
    57. Easy Hack Tools
    58. Hack Tools Download
    59. Hacker Tools Linux
    60. What Are Hacking Tools
    61. Hacking Tools Github
    62. Pentest Tools Open Source
    63. Hacker Security Tools
    64. Pentest Tools Apk
    65. Hacking Tools Usb
    66. Pentest Tools Alternative
    67. Pentest Tools Alternative
    68. Hackers Toolbox
    69. Termux Hacking Tools 2019
    70. New Hack Tools
    71. Hacker Tools Free
    72. Pentest Box Tools Download
    73. Pentest Reporting Tools
    74. Hacker Hardware Tools
    75. Hack Tools Online
    76. Hack Tools
    77. Tools Used For Hacking
    78. Hacker
    79. Hacking Tools Windows 10
    80. Hackers Toolbox
    81. Nsa Hacker Tools
    82. Hacker Tools For Ios
    83. Hacker Tools For Mac
    84. What Are Hacking Tools
    85. Blackhat Hacker Tools
    86. Pentest Tools Website Vulnerability
    87. Hack Tools For Windows
    88. Tools 4 Hack
    89. Termux Hacking Tools 2019
    90. Hacking Tools Name
    91. Tools For Hacker
    92. Hacker Tool Kit
    93. Tools For Hacker
    94. Hacking Tools Kit
    95. How To Install Pentest Tools In Ubuntu
    96. Wifi Hacker Tools For Windows
    97. Pentest Tools Apk
    98. Hack Rom Tools
    99. Pentest Tools Nmap
    100. Hack Rom Tools
    101. Hackers Toolbox
    102. Hacker Tools Software
    103. Hacks And Tools
    104. Pentest Tools Website
    105. Hak5 Tools
    106. Pentest Tools Android
    107. How To Hack
    108. Hacker Tools 2019
    109. Hacker Security Tools
    110. Hack Tools For Games
    111. Hacker Tools Github
    112. Hacking Tools Windows 10
    113. Tools 4 Hack
    114. Hacking Tools For Windows Free Download
    115. Hacking Tools Name
    116. Best Hacking Tools 2020
    117. Ethical Hacker Tools
    118. Hacking Tools Mac
    119. Hack Tools
    120. Hack Tools For Ubuntu
    121. Blackhat Hacker Tools
    122. Hacker Tools
    123. Pentest Tools Framework
    124. Hacker Tools Windows
    125. Beginner Hacker Tools
    126. Pentest Tools Open Source
    127. Hack Tools Github
    128. Hacker Techniques Tools And Incident Handling
    129. Hacking Tools For Windows 7
    130. Hacking Tools For Pc
    131. Pentest Recon Tools
    132. Hacking Tools Kit

    هیچ نظری موجود نیست: