Facebook 开出历史最高赏金,55,000 美元奖励十年漏洞发现者

timthumb.jpg文章来源:SegmentFault
近日,一名研究人员在 Facebook 平台上发现了一个严重的漏洞,该漏洞涉及登录的 Facebook OAuth 框架,可被用来劫持用户的 Facebook账号。由于发现了这个漏洞,该名研究人员获得了 Facebook 开出的账户劫持的单个最高漏洞奖励 —— 55,000 美元。
Facebook OAuth 框架缺陷
发现漏洞的研究人员名字叫 Amol Baikar 。它在一篇博客文章中透露到,该漏洞存在于"Login with Facebook"功能中。因此,当用户通过 Facebook 登录其他网站时,对手可能会劫持访问令牌。这不仅可以入侵 Facebook 账户,还可以访问相应的第三方服务。
“Login with Facebook”功能遵循 OAuth 2.0 授权协议在 facebook.com 和第三方网站之间处理用户的 token,只有当正确身份的用户token被验证通过,用户才能从第三方网站跳转到facebook.com网站。
攻击者利用该漏洞可以劫持受害者用户的 OAuth 身份验证机制,窃取受害者用户的 access token,最终实现对受害者 Facebook 账户的劫持。另外,攻击者可以通过控制架设恶意站点,针对大多数 APP 应用(如Instagram, Oculus, Netflix, Tinder, Spotify等),窃取用户 access_token,获取相关交互服务和第三方网站的访问控制权。
Baikar 在解释正常的登录流程时表示:

适用于 JavaScript 的 Facebook SDK 使用“/connect/ping”终结点发出 user_access 令牌,并将“XD_Arbiter”所有应用程序默认设置为白名单的 URL 重定向到该 URL。在后台,SDK 在初始化时会创建用于跨域通信的代理 iframe。代理框架通过 postMessage()API 发回令牌,代码或未经授权的未知状态。

但是只要端点足够安全,就可以防止已知的登录绕过策略,但有两个要点使利用页面代理成为可能,这进一步暴露了跨域通信。正如 Baikar 所说:

缺少“X-Frame-Options”标题。(完全脆弱的流程)

另外,“window.parent”本身将用户交互保存为零。无需理会 window.open 或任何按钮的 onClick 事件。

现在,跨域通信已经公开,并且在没有受害者知识的情况下,access_token 将“泄漏到任何来源”,然后攻击者可以设置新的电话号码以进行恢复。当 Facebook 最初解决此问题时,研究人员发现 OAuth 的核心终结点“ /dialog/oauth/”继续重定向到页面代理。
在收到漏洞提醒后,Facebook 提出了相应的修复措施:

不允许对xd_arbiter的任意修改,只接受单纯的文件路径”xd_arbiter.php”;

禁用所有xd_arbiter上的HTTP跳转;

删除page_proxy资源“7SWBAvHenEn.js”;

在另外一个JS脚本资源中增加正则过滤验证。

Facebook 开出历史最高赏金
www.idc126.com
根据 Baikar 在博客中所说,该漏洞存在了将近 9 到 10 年。最初,当 Baikar 就该漏洞与 Facebook 取得联系时,这家科技巨头迅速承认了该漏洞并开发了修复程序。最终,Facebook 开发了另一个修复程序,解决了这个已有十年历史的漏洞。而 Baikar 也获得了 Facebook 开出的历史最高的漏洞赏金,55,000 美元。

框架缺陷(1)Facebook(15)漏洞(446)
本文来源 SegmentFault,由 睡觉 整理编辑,其版权均为 SegmentFault 所有,本文观点不代表立场,转载请联系原作者。

本文经授权后发布,本文观点不代表立场,转载请联系原作者。
ParamSpider url参数挖掘机
« 上一篇 05-05
Supervisord 远程代码执行漏洞(CVE-2017-11610)漏洞复现
下一篇 » 05-05

相关推荐

推荐CS4.1真的有后门吗?

文章来源:酒仙桥六号部队前言CS是什么?可能是某款历史久远的第一人称射击游戏,也可能是某个电影。由于法律原因我们这里并不指出CS是什么,但网络江湖上一直流...

热文记一次漏洞挖掘实战之木桶短板

客户给了个站 授权渗透客户要求:纯黑盒 无测试账号就一个登录框 忘记密码功能还是这样人直接傻了 先看看能不能爆破吧发现密码加密了好家伙 还是动态密钥验...

推荐实战-站库分离拿下WebShell

文章来源:重生信息安全作者:海鸥一、目录遍历在对目标进行目录扫描的时候,发现其app目录存在目录遍历。 在目录中发现了app的备份文件,在备份中找到了其数...