由于第一方 access_token 被盗,Facebook/Oculus 帐户被接管

恶意行为者可以窃取 Oculus 应用程序的第一方访问令牌,他可以使用该令牌访问 Facebook/Oculus 帐户。

因为 Facebook 中的 Oculus 应用程序(用于使用 Facebook 帐户登录 Oculus)将auth.oculus.com/login/端点作为有效的 redirect_uri。

不过,Oculus 已改用Meta帐户进行登录。这意味着在访问auth.oculus.com/login/时,端点将重定向到auth.meta.com/oidc/以使用Meta帐户登录,然后返回到 auth.oculus.com。

我们可以在www.facebook.com[1] OAuth中选择response_type=token,令牌将被传递到下一个重定向URL,直到再次到达auth.oculus.com。

这里的问题是,之前,auth.oculus.com/login通过使用 Javascript 进行重定向来防止令牌泄漏,但是在 oculus 登录更改为 Meta 帐户而不是 Facebook 后,这种保护消失了,现在它直接重定向到最初在auth.oculus.com/login/?redirect_uri=Redirect_Here中找到的 URL。

Redirect_Here 可以是 oculus.com 的任何子域,其中一些子域(如 forums.oculus.com)会重定向到第三方应用程序,该应用程序可以具有开放重定向来泄漏令牌(但这不是使用的开放重定向)。这个漏洞很容易发现和利用。

漏洞挖掘细节

测试过程:

  1. 受害者已登录Facebook.com
  2. 受害者未登录Oculus.com(这不是必需的,因为我们可以在此处使用注销 CSRF)

攻击:

  1. 通过重定向到此页面https://auth.meta.com/login/facebook/

将受害者登录到他的 Meta 帐户 CSRF

  1. 打开https://www.facebook.com/v3.1/dialog/ oauth?app_id=1517832211847102&redirect_uri=https://auth.oculus.com/login/?redirect_uri=https://forums.oculus.com/openredirect&response_type=token[2]
  2. 在 OAuth 流程之后,我们可以注意到令牌最终以 https 形式结束://forums.oculusvr.com/openredirect#access_token=TOKEN

4)最终access_token将被泄露到https://ysamm.com

漏洞时间线

2022 年 8 月 27 日—报告发送 2022 年 

2022 年 9 月 25 日—Meta 确认

2022 年 9 月 25 日—Meta 修复

2022 年 9 月 25 日—Meta 授予 44250 美元赏金。(包括 BountyCon 奖金和最高影响力报告奖金)